Installation Instructions:
--------------------------

1. Put the s2 switch into the following position:

	Off On
	------
	|x   |
	|   x|
	|x   |
	|   X|
	------

   Put the s3 switch into the following position:

	Off On
	------
	| x  |
	| x  |
	|   x|
	|   x|
	------

   Put the s4 switch into the following position:

	Off On
	------
	|x   |
	|x   |
	|x   |
	|x   |
	|x   |
	|   x|
	|   x|
	|x   |
	------

2. Connect to the serial console and to the BDI. Power on. On the
   serial line, you should see:

	PURPLE@1.2>

3. Type '8'. No echo will be displayed. In response, you should get:

	7A(pass)

4. From BDI, enter command:

	mmw 0xb800d860 0x0042c7ff

5. Then, from BDI:

	erase 0xB0000000
	erase 0xB0008000
	erase 0xB000C000
	erase 0xB0010000
	erase 0xB0020000

	prog 0xB0000000 <u-boot.bin> bin

6. Power off. Restore the original S2 switch position:

	Off On
	------
	|   x|
	|   x|
	|x   |
	|   X|
	------

   Power on.  U-Boot should come up.



Implementation Notes:
---------------------

Due to the RAM/flash bus arbitration problem the suggested workaround
had to be implemented. It works okay. On the downside is that you
can't really check whether 'erase' is complete by polling flash as it
is usually done. Instead, the flash driver simply waits for a given
time and assumes that erase then has passed. This behaviour is
identical to what the VxWorks driver does; also, the same timeout (6
seconds) was chosen. Note that this timeout applies for each erase
operation, i. e. per erased sector.
