Sheldon Instruments SIMPC8313 Board
-----------------------------------------

1.	Board Switches and Jumpers

	S2 is used to set CFG_RESET_SOURCE.

	To boot the image in Large page NAND flash, use these DIP
	switch settings for S2:

	+----------+ ON
	| * * **** |
	|  * *     |
	+----------+
	  12345678

	To boot the image in Small page NAND flash, use these DIP
	switch settings for S2:

	+----------+ ON
	| *** **** |
	|    *     |
	+----------+
	  12345678
	(where the '*' indicates the position of the tab of the switch.)

2.	Memory Map
	The memory map looks like this:

	0x0000_0000	0x1fff_ffff	DDR			512M
	0x8000_0000	0x8fff_ffff	PCI MEM			256M
	0x9000_0000	0x9fff_ffff	PCI_MMIO		256M
	0xe000_0000	0xe00f_ffff	IMMR			1M
	0xe200_0000	0xe20f_ffff	PCI IO			16M
	0xe280_0000	0xe280_7fff	NAND FLASH (CS0)	32K
	or
	0xe280_0000	0xe281_ffff	NAND FLASH (CS0)	128K
	0xff00_0000	0xff00_7fff	FPGA (CS1)		1M

3.	Compilation

	Assuming you're using BASH (or similar) as your shell:

	export CROSS_COMPILE=your-cross-compiler-prefix-
	make distclean
	make SIMPC8313_LP_config
	(or make SIMPC8313_SP_config, depending on the page size
	of your NAND flash)
	make

4.	Downloading and Flashing Images

4.1	Reflash U-boot Image using U-boot

	=>run update_uboot

	You may want to try
	=>tftp $loadaddr $uboot
	first, to make sure that the TFTP load will succeed before it
	goes ahead and wipes out your current firmware.  And of course,
	if the new u-boot doesn't boot, you can plug the board into
	your PCI slot and with the supplied driver and sample app
	you can reburn a working u-boot.

4.2	Downloading and Booting Linux Kernel

	Ensure that all networking-related environment variables are set
	properly (including ipaddr, serverip, gatewayip (if needed),
	netmask, ethaddr, eth1addr, fdtfile, and bootfile).

	=>tftp $loadaddr uImage
	=>nand write $loadaddr kernel $filesize
	=>tftp $loadaddr $fdtfile
	=>nand write $loadaddr 7e0000 1800

	=>boot

5	Notes

	The console baudrate for SIMPC8313 is 115200bps.
