
After following the step of Yoo. Jonghoon and Wolfgang Denk,
I ported u-boot on RPXlite DW version board: RPXlite_DW or LITE_DW.

There are at least three differences between the Yoo-ported RPXlite and the RPXlite_DW.

Board(in U-Boot)	version(in EmbeddedPlanet)	CPU	SDRAM	FLASH
RPXlite				RPXlite CW		850	16MB	4MB
RPXlite_DW		RPXlite DW(EP 823 H1 DW)	823e	64MB	16MB

This fireware is specially coded for EmbeddedPlanet Co. Software Development
Platform(RPXlite DW),which has a NEC NL6448BC20-08 LCD panel.

It has the following three features:

1. 64MHz/48MHz system frequence setting options.
The default setting is 48MHz.To get a 64MHz u-boot,just add
'64' in make command,like

make distclean
make RPXlite_DW_64_config
make all

2. CONFIG_ENV_IS_IN_FLASH/CONFIG_ENV_IS_IN_NVRAM

The default environment parameter is stored in FLASH because it is a common choice for
environment parameter.So I make NVRAM as backup parameter storeage.The reason why I
didn't use EEPROM for ENV is that PlanetCore V2.0 use EEPROM as environment parameter
home.Because of the possibility of using two firewares on this board,I didn't
'disturb' EEPROM.To get NVRAM support,you may use the following build command:

make distclean
make RPXlite_DW_NVRAM_config
make all

3. LCD panel support

To support the Platform better,I added LCD panel(NL6448BC20-08) function.
For the convenience of debug, CONFIG_PERBOOT was supported. So you just
perss ENTER if you want to get a serial console in boot downcounting.
Then you can switch to LCD and serial console freely just typing
'run lcd' or 'run ser'. They are only vaild when CONFIG_LCD was enabled.

To get a LCD support u-boot,you can do the following:

make distclean
make RPXlite_DW_LCD_config
make all

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The basic make commands could be:

make RPXlite_DW_config
make RPXlite_DW_64_config
make RPXlite_DW_LCD_config
make RPXlite_DW_NVRAM_config

BTW,you can combine the above features together and get a workable u-boot to meet your need.
For example,to get a 64MHZ && ENV_IS_IN_FLASH && LCD panel support u-boot,you can type:

make RPXlite_DW_NVRAM_64_LCD_config
make all

So other combining make commands could be:

make RPXlite_DW_NVRAM_64_config
make RPXlite_DW_NVRAM_LCD_config
make RPXlite_DW_64_LCD_config

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The boot process by "make RPXlite_DW_config" could be:

U-Boot 1.1.2 (Aug 29 2004 - 15:11:27)

CPU:   PPC823EZTnnB2 at 48 MHz: 16 kB I-Cache 8 kB D-Cache
Board: RPXlite_DW
DRAM:  64 MB
FLASH: 16 MB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   SCC ETHERNET
u-boot>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A word on the U-Boot enviroment variable setting and usage :

In the beginning, you could just need very simple defult environment variable setting,
like[include/configs/RPXlite.h] :

#define CONFIG_BOOTCOMMAND                                                      \
	"bootp; "                                                               \
	"setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
	"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "   \
	"bootm"

This is enough for kernel NFS test. But as debug process goes on, you would expect
to save some time on environment variable setting and u-boot/kernel updating.
So the default environment variable setting would become more complicated. Just like
the one I did in include/configs/RPXlite_DW.h.

Two u-boot commands, ku and uu, should be careful to use. They were designed to update
kernel and u-boot image file respectively. You must tftp your image to default address
'100000' and then use them correctly. Yeah, you can create your own command to do this
job. :-) The example u-boot image updating process could be :

u-boot>t 100000 RPXlite_DW_LCD.bin
Using SCC ETHERNET device
TFTP from server 172.16.115.6; our IP address is 172.16.115.7
Filename 'RPXlite_DW_LCD.bin'.
Load address: 0x100000
Loading: #############################
done
Bytes transferred = 144700 (2353c hex)
u-boot>run uu
Un-Protect Flash Sectors 0-4 in Bank # 1
Erase Flash Sectors 0-4 in Bank # 1
.... done
Copy to Flash... done
ff000000: 27051956 552d426f 6f742031 2e312e32    '..VU-Boot 1.1.2
ff000010: 20284175 67203239 20323030 34202d20     (Aug 29 2004 -
ff000020: 31353a32 303a3238 29000000 00000000    15:20:28).......
ff000030: 00000000 00000000 00000000 00000000    ................
ff000040: 00000000 00000000 00000000 00000000    ................
ff000050: 00000000 00000000 00000000 00000000    ................
ff000060: 00000000 00000000 00000000 00000000    ................
ff000070: 00000000 00000000 00000000 00000000    ................
ff000080: 00000000 00000000 00000000 00000000    ................
ff000090: 00000000 00000000 00000000 00000000    ................
ff0000a0: 00000000 00000000 00000000 00000000    ................
ff0000b0: 00000000 00000000 00000000 00000000    ................
ff0000c0: 00000000 00000000 00000000 00000000    ................
ff0000d0: 00000000 00000000 00000000 00000000    ................
ff0000e0: 00000000 00000000 00000000 00000000    ................
ff0000f0: 00000000 00000000 00000000 00000000    ................
u-boot updating finished
u-boot>

Also for environment updating, 'run eu' could let you erase OLD default environment variable
and then use the working u-boot environment setting.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Finally, if you want to keep the serial port to possible debug on spot for deployment, you
just need to enable 'DEPLOYMENT' in RPXlite_DW.h as 'DEBUG' does. Only the special string
defined by CONFIG_AUTOBOOT_STOP_STR like 'st' can stop the autoboot.

I'd like to extend my heartfelt gratitute to kind people for helping me work it out.
I would particually thank Wolfgang Denk for his nice help.

Enjoy,

Sam Song, samsongshu@yahoo.com.cn
Institute of Electrical Machinery and Controls
Shanghai University

Oct. 11, 2004
