|
|
|
The Korat board has two NOR flashes, FLASH0 and FLASH1, which are connected to
|
|
|
|
chip select 0 and 1, respectively. FLASH0 contains 16 MiB, and is mapped to
|
|
|
|
addresses 0xFF000000 - 0xFFFFFFFF as U-Boot Flash Bank #2. FLASH1 contains
|
|
|
|
from 16 to 128 MiB, and is mapped to 0xF?000000 - 0xF7FFFFFF as U-Boot Flash
|
|
|
|
Bank #1 (with the starting address depending on the flash size detected at
|
|
|
|
runtime). The write-enable pin on FLASH0 is disabled, so the contents of FLASH0
|
|
|
|
cannot be modified in the field. This also prevents FLASH0 from executing
|
|
|
|
commands to return chip information, so its configuration is hard-coded in
|
|
|
|
U-Boot.
|
|
|
|
|
|
|
|
There are two versions of U-Boot for Korat: "permanent" and "upgradable". The
|
|
|
|
permanent U-Boot is pre-programmed at the top of FLASH0, e.g., at addresses
|
|
|
|
0xFFFA0000 - 0xFFFFFFFF for the current 384 KiB size. The upgradable U-Boot is
|
|
|
|
located 256 KiB from the top of FLASH1, e.g. at addresses 0xF7F6000 - 0xF7FC0000
|
|
|
|
for the current 384 KiB size. FLASH1 addresses 0xF7FE0000 - 0xF7FF0000 are
|
|
|
|
used for the U-Boot environmental parameters, and addresses 0xF7FC0000 -
|
|
|
|
0xF7FDFFFF are used for the redundant copy of the parameters. These locations
|
|
|
|
are used by both versions of U-Boot.
|
|
|
|
|
|
|
|
On booting, the permanent U-Boot in FLASH0 begins executing. After performing
|
|
|
|
minimal setup, it monitors the state of the board's Reset switch (GPIO47). If
|
|
|
|
the switch is sensed as open before a timeout period, then U-Boot branches to
|
|
|
|
address 0xF7FBFFFC. This causes the upgradable U-Boot to execute from the
|
|
|
|
beginning. If the switch remains closed thoughout the timeout period, the
|
|
|
|
permanent U-Boot activates the on-board buzzer until the switch is sensed as
|
|
|
|
opened. It then continues to execute without branching to FLASH1. The effect
|
|
|
|
of this is that normally the Korat board boots its upgradable U-Boot, but, if
|
|
|
|
this has been corrupted, the user can boot the permanent U-Boot, which can then
|
|
|
|
be used to erase and reload FLASH1 as needed.
|
|
|
|
|
|
|
|
Note that it is not necessary for the permanent U-Boot to have all the latest
|
|
|
|
features, but only that it have sufficient functionality (working "tftp",
|
|
|
|
"erase", "cp.b", etc.) to repair FLASH1. Also, the permanent U-Boot makes no
|
|
|
|
assumptions about the size of FLASH1 or the size of the upgradable U-Boot: it is
|
|
|
|
sufficient that the upgradable U-Boot can be started by a branch to 0xF7FBFFFC.
|
|
|
|
|
|
|
|
The build sequence:
|
|
|
|
|
|
|
|
make korat_config
|
|
|
|
make all perm=1
|
|
|
|
|
|
|
|
builds the permanent U-Boot by selecting loader file "u-boot.lds" and defining
|
|
|
|
preprocessor symbol "CONFIG_KORAT_PERMANENT". The default build:
|
|
|
|
|
|
|
|
make korat_config
|
|
|
|
make all
|
|
|
|
|
|
|
|
creates the upgradable U-Boot but selecting loader file "u-boot-F7FC.lds" and
|
|
|
|
leaving preprocessor symbol "CONFIG_KORAT_PERMANENT" undefined.
|
|
|
|
|
|
|
|
2008-02-22, Larry Johnson <lrj@acm.org>
|
|
|
|
|
|
|
|
|
|
|
|
The CompactFlash(R) controller on the Korat board provides a hi-speed USB
|
|
|
|
interface. This may be connected to either a dedicated port on the on-board
|
|
|
|
USB controller, or to a USB port on the PowerPC 440EPx processor. The U-Boot
|
|
|
|
environment variable "korat_usbcf" can be used to specify which of these two
|
|
|
|
USB host ports is used for CompactFlash. The valid setting for the variable are
|
|
|
|
the strings "pci" and "ppc". If the variable defined and set to "ppc", then the
|
|
|
|
PowerPC USB port is used. In all other cases the on-board USB controller is
|
|
|
|
used, but if "korat_usbcf" is defined but is set to a string other than the two
|
|
|
|
valid options, a warning is also issued.
|
|
|
|
|
|
|
|
2009-01-28, Larry Johnson <lrj@acm.org>
|