|  | Freescale MPC8641HPCN board | 
|  | =========================== | 
|  |  | 
|  | Created 05/24/2006 Haiying Wang | 
|  | ------------------------------- | 
|  |  | 
|  | 1. Building U-Boot | 
|  | ------------------ | 
|  | The 86xx HPCN code base is known to compile using: | 
|  | Binutils 2.15, Gcc 3.4.3, Glibc 2.3.3 | 
|  |  | 
|  | $ make MPC8641HPCN_config | 
|  | Configuring for MPC8641HPCN board... | 
|  |  | 
|  | $ make | 
|  |  | 
|  |  | 
|  | 2. Switch and Jumper Setting | 
|  | ---------------------------- | 
|  | Jumpers: | 
|  | J14 Pins 1-2 (near plcc32 socket) | 
|  |  | 
|  | Switches: | 
|  | SW1(1-5) = 01100	CFG_COREPLL	= 01000 :: CORE =   2:1 | 
|  | 01100 :: CORE = 2.5:1 | 
|  | 10000 :: CORE =   3:1 | 
|  | 11100 :: CORE = 3.5:1 | 
|  | 10100 :: CORE =   4:1 | 
|  | 01110 :: CORE = 4.5:1 | 
|  | SW1(6-8) = 001		CFG_SYSCLK	= 000	:: SYSCLK = 33MHz | 
|  | 001	:: SYSCLK = 40MHz | 
|  |  | 
|  | SW2(1-4) = 1100		CFG_CCBPLL	= 0010	:: 2X | 
|  | 0100	:: 4X | 
|  | 0110	:: 6X | 
|  | 1000	:: 8X | 
|  | 1010	:: 10X | 
|  | 1100	:: 12X | 
|  | 1110	:: 14X | 
|  | 0000	:: 16X | 
|  | SW2(5-8) = 1110		CFG_BOOTLOC	= 1110	:: boot 16-bit localbus | 
|  |  | 
|  | SW3(1-7) = 0011000	CFG_VID		= 0011000 :: VCORE = 1.2V | 
|  | 0100000 :: VCORE = 1.11V | 
|  | SW3(8)	 = 0		VCC_PLAT	= 0	:: VCC_PLAT = 1.2V | 
|  | 1	:: VCC_PLAT = 1.0V | 
|  |  | 
|  | SW4(1-2) = 11		CFG_HOSTMODE	= 11	:: both prots host/root | 
|  | SW4(3-4) = 11		CFG_BOOTSEQ	= 11	:: no boot seq | 
|  | SW4(5-8) = 0011		CFG_IOPORT	= 0011	:: both PEX | 
|  |  | 
|  | SW5(1)	 = 1		CFG_FLASHMAP	= 1	:: boot from flash | 
|  | 0	:: boot from PromJet | 
|  | SW5(2)	 = 1		CFG_FLASHBANK	= 1	:: swap upper/lower | 
|  | halves (virtual banks) | 
|  | 0	:: normal | 
|  | SW5(3)	 = 0		CFG_FLASHWP	= 0	:: not protected | 
|  | SW5(4)	 = 0 		CFG_PORTDIV	= 1	:: 2:1 for PD4 | 
|  | 1:1 for PD6 | 
|  | SW5(5-6) = 11		CFG_PIXISOPT	= 11	:: s/w determined | 
|  | SW5(7-8) = 11		CFG_LADOPT	= 11	:: s/w determined | 
|  |  | 
|  | SW6(1)	 = 1		CFG_CPUBOOT	= 1	:: no boot holdoff | 
|  | SW6(2)	 = 1		CFG_BOOTADDR	= 1	:: no traslation | 
|  | SW6(3-5) = 000		CFG_REFCLKSEL	= 000	:: 100MHZ | 
|  | SW6(6)	 = 1		CFG_SERROM_ADDR= 1	:: | 
|  | SW6(7)	 = 1		CFG_MEMDEBUG	= 1	:: | 
|  | SW6(8)	 = 1		CFG_DDRDEBUG	= 1	:: | 
|  |  | 
|  | SW8(1)	 = 1		ACZ_SYNC	= 1	:: 48MHz on TP49 | 
|  | SW8(2)	 = 1		ACB_SYNC	= 1	:: THRMTRIP disabled | 
|  | SW8(3)	 = 1		ACZ_SDOUT	= 1	:: p4 mode | 
|  | SW8(4)	 = 1		ACB_SDOUT	= 1	:: PATA freq. = 133MHz | 
|  | SW8(5)	 = 0		SUSLED		= 0	:: SouthBridge Mode | 
|  | SW8(6)	 = 0		SPREAD		= 0	:: REFCLK SSCG Disabled | 
|  | SW8(7)	 = 1		ACPWR		= 1	:: non-battery | 
|  | SW8(8)	 = 0		CFG_IDWP	= 0	:: write enable | 
|  |  | 
|  |  | 
|  | 3. Flash U-Boot | 
|  | --------------- | 
|  | The flash range 0xFF800000 to 0xFFFFFFFF can be divided into 2 halves. | 
|  | It is possible to use either half to boot using u-boot.  Switch 5 bit 2 | 
|  | is used for this purpose. | 
|  |  | 
|  | 0xFF800000 to 0xFFBFFFFF - 4MB | 
|  | 0xFFC00000 to 0xFFFFFFFF - 4MB | 
|  | When this bit is 0, U-Boot is at 0xFFF00000. | 
|  | When this bit is 1, U-Boot is at 0xFFB00000. | 
|  |  | 
|  | Use the above mentioned flash commands to program the other half, and | 
|  | use switch 5, bit 2 to alternate between the halves.  Note: The booting | 
|  | version of U-Boot will always be at 0xFFF00000. | 
|  |  | 
|  | To Flash U-Boot into the booting bank (0xFFC00000 - 0xFFFFFFFF): | 
|  |  | 
|  | tftp 1000000 u-boot.bin | 
|  | protect off all | 
|  | erase fff00000 +$filesize | 
|  | cp.b 1000000 fff00000 $filesize | 
|  |  | 
|  | or use tftpflash command: | 
|  | run tftpflash | 
|  |  | 
|  | To Flash U-boot into the alternative bank (0xFF800000 - 0xFFBFFFFF): | 
|  |  | 
|  | tftp 1000000 u-boot.bin | 
|  | erase ffb00000 +$filesize | 
|  | cp.b 1000000 ffb00000 $filesize | 
|  |  | 
|  |  | 
|  | 4. Memory Map | 
|  | ------------- | 
|  |  | 
|  | Memory Range			Device		Size | 
|  | ------------			------		---- | 
|  | 0x0000_0000	0x7fff_ffff	DDR		2G | 
|  | 0x8000_0000	0x9fff_ffff	PCI1/PEX1 MEM	512M | 
|  | 0xa000_0000	0xafff_ffff	PCI2/PEX2 MEM	512M | 
|  | 0xf800_0000	0xf80f_ffff	CCSR		1M | 
|  | 0xf810_0000	0xf81f_ffff	PIXIS		1M | 
|  | 0xf840_0000	0xf840_3fff	Stack space	32K | 
|  | 0xe200_0000	0xe2ff_ffff	PCI1/PEX1 IO	16M | 
|  | 0xe300_0000	0xe3ff_ffff	PCI2/PEX2 IO	16M | 
|  | 0xfe00_0000	0xfeff_ffff	Flash(alternate)16M | 
|  | 0xff00_0000	0xffff_ffff	Flash(boot bank)16M | 
|  |  | 
|  | 5. pixis_reset command | 
|  | -------------------- | 
|  | A new command, "pixis_reset", is introduced to reset mpc8641hpcn board | 
|  | using the FPGA sequencer.  When the board restarts, it has the option | 
|  | of using either the current or alternate flash bank as the boot | 
|  | image, with or without the watchdog timer enabled, and finally with | 
|  | or without frequency changes. | 
|  |  | 
|  | Usage is; | 
|  |  | 
|  | pixis_reset | 
|  | pixis_reset altbank | 
|  | pixis_reset altbank wd | 
|  | pixis_reset altbank cf <SYSCLK freq> <COREPLL ratio> <MPXPLL ratio> | 
|  | pixis_reset cf <SYSCLK freq> <COREPLL ratio> <MPXPLL ratio> | 
|  |  | 
|  | Examples; | 
|  |  | 
|  | /* reset to current bank, like "reset" command */ | 
|  | pixis_reset | 
|  |  | 
|  | /* reset board but use the to alternate flash bank */ | 
|  | pixis_reset altbank | 
|  |  | 
|  | /* reset board, use alternate flash bank with watchdog timer enabled*/ | 
|  | pixis_reset altbank wd | 
|  |  | 
|  | /* reset board to alternate bank with frequency changed. | 
|  | * 40 is SYSCLK, 2.5 is COREPLL ratio, 10 is MPXPLL ratio | 
|  | */ | 
|  | pixis-reset altbank cf 40 2.5 10 | 
|  |  | 
|  | Valid clock choices are in the 8641 Reference Manuals. |