[U-Boot-Users] MPC83xx HRCW

Jerry Van Baren
2008-03-28T11:55:39Z

Andre Schwarz wrote:
> In "cpu/mpc83xx/start.S" there is a comment :
>
> /*
> * The Hard Reset Configuration Word (HRCW) table is in the first 64
> * (0x40) bytes of flash. It has 8 bytes, but each byte is repeated 8
> * times so the processor can fetch it out of flash whether the flash
> * is 8, 16, 32, or 64 bits wide (hardware trickery).
> */
>
> This does _not_ hold true for all configurations. Flash is simply one of
> many options ...
> Maybe it's true for the Freescale boards.
>
> Other sources of the HRCW can be hard-coded strapping pins or an I2C EEPROM.
>
> Why is there a need to define the HRCW ?
>
> regards,
> Andre Schwarz

Hi Andre,

The HRCW in flash (could be other memory or a FPGA register) is a
processor feature which a board may or may not use. I am not familiar
with the whole 83xx family, but I presume the feature is part of the
whole family.

As you point out, there are other ways of configuring the processor on
power up, and it is board-specific which way is used on the particular
board.

For the boards that support the HRCW, obviously the definition in the
first 64 bytes of flash is necessary. For other boards, it is
unnecessary. FWIIW, the Freescale eval boards that I have experience
with allow the HRCW to come from flash, i2c, or an FPGA (BCSR).

To date, having a potentially unused HRCW definition in memory has not
been an issue - people either use it or ignore it. If it is an issue,
you could use conditionals to disable it. I'm sure the 83xx custodian
(Kim Phillips) would consider patches to do that. ;-) Note that there
is a possibility that some of the code assumes the presence of a HRCW,
so you would have to inspect and/or regression test as part of a
conditionalization patch.

On the other hand, the HRCW is occupying 64 bytes of memory that is
marked "reserved" by Freescale/PowerPC, so it doesn't "cost" anything to
have an unused HRCW programmed there. (We also put the u-boot version
string in the reserved space which is a violation of the "reserved"
marking, but it is convenient to put it in a well known place at the
start of the memory map and, besides, we've gotten away with it for
years ;-).

Best regards,
gvb