| Flash programming on the INCA-IP board is complicated because of the | |
| EBU swapping unit. A BDI2000 can be used for flash programming only | |
| if the EBU swapping unit is enabled; otherwise it will not detect the | |
| flash memory. But the EBU swapping unit is disadbled after reset, so | |
| if you program some code to flash with the swapping unit on, it will | |
| not be runnable with the swapping unit off. | |
| The consequence is that you have to write a pre-swapped image to | |
| flash using the BDI2000. A simple host-side tool "inca-swap-bytes" is | |
| provided in the "tools/" directory. Use it as follows: | |
| bash$ ./inca-swap-bytes <u-boot.bin >u-boot.bin.swp | |
| Note that the current BDI config file _disables_ the EBU swapping | |
| unit for the flash bank 0. To enable it, (this is required for the | |
| BDI flash commands to work) uncomment the following line in the | |
| config file: | |
| ;WM32 0xb8000260 0x404161ff ; Swapping unit enabled | |
| and comment out | |
| WM32 0xb8000260 0x004161ff ; Swapping unit disabled | |
| Alternatively, you can use "mm 0xb8000260 <value>" commands to | |
| enable/disable the swapping unit manually. | |
| Just for reference, here is the complete sequence of actions we took | |
| to install a U-Boot image into flash. | |
| 1. ./inca-swap-bytes <u-boot.bin >u-boot.bin.swp | |
| 2. From BDI: | |
| mm 0xb8000260 0x404161ff | |
| erase 0xb0000000 | |
| erase 0xb0010000 | |
| prog 0xb0000000 /tftpboot/INCA/u-boot.bin.swp bin | |
| mm 0xb8000260 0x004161ff | |
| go 0xb0000000 | |
| Ethernet autonegotiation needs some time to complete. Instead of | |
| delaying the boot process in all cases, we just start the | |
| autonegotiation process when U-Boot comes up and that is all. Most | |
| likely, it will complete by the time the network transfer is | |
| attempted for the first time. In the worst case, if a transfer is | |
| attempted before the autonegotiation is complete, just a single | |
| packet would be lost resulting in a single timeout error, and then | |
| the transfer would proceed normally. So the time that we would have | |
| lost unconditionally waiting for the autonegotiation to complete, we | |
| have to wait only if the file transfer is started immediately after | |
| reset. We've verified that this works for all the clock | |
| configurations. | |
| (C) 2003 Wolfgang Denk |