| |
| 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 |