| # Porting U-Boot onto RPXlite board | 
 | # Written by Yoo. Jonghoon | 
 | # E-Mail : yooth@ipone.co.kr | 
 | # IP ONE Inc. | 
 |  | 
 | # Since 2001. 1. 29 | 
 |  | 
 | # Shell : bash | 
 | # Cross-compile tools : Montavista Hardhat | 
 | # Debugging tools : Windriver VisionProbe (PowerPC BDM) | 
 | # ppcboot ver. : ppcboot-0.8.1 | 
 |  | 
 | ############################################################### | 
 | #	1. Hardware setting | 
 | ############################################################### | 
 |  | 
 | 1.1. Board, BDM settings | 
 | 	Install board, BDM, connect each other | 
 |  | 
 | 1.2. Save Register value | 
 | 	Boot with board-on monitor program and save the | 
 | 	register values with BDM. | 
 |  | 
 | 1.3. Configure flash programmer | 
 | 	Check flash memory area in the memory map. | 
 | 	0xFFC00000 - 0xFFFFFFFF | 
 |  | 
 | 	Boot monitor program is at | 
 | 	0xFFF00000 | 
 |  | 
 | 	You can program on-board flash memory with VisionClick | 
 | 	flash programmer. Set the target flash device as: | 
 |  | 
 | 	29DL800B | 
 |  | 
 | 	(?) The flash memory device in the board *is* 29LV800B, | 
 | 		but I cannot program it with '29LV800B' option. | 
 | 		(in VisionClick flash programming tools) | 
 | 		I don't know why... | 
 |  | 
 | 1.4. Save boot monitor program *IMPORTANT* | 
 | 	Upload boot monitor program from board to file. | 
 | 	boot monitor program starts at 0xFFF00000 | 
 |  | 
 | 1.5. Test flash memory programming | 
 | 	Try to erase boot program in the flash memory, | 
 | 	and re-write them. | 
 | 	*WARNING* YOU MUST SAVE BOOT PROGRAM TO FILE | 
 | 		BEFORE ERASING FLASH | 
 |  | 
 | ############################################################### | 
 | #	2. U-Boot setting | 
 | ############################################################### | 
 |  | 
 | 2.1. Download U-Boot tarball at | 
 | 	ftp://ftp.denx.de | 
 | 	(The latest version is ppcboot-0.8.1.tar.bz2) | 
 |  | 
 | 	To extract the archive use the following syntax : | 
 | 	> bzip2 -cd ppcboot-0.8.1.tar.bz2 | tar xf - | 
 |  | 
 | 2.2. Add the following lines in '.profile' | 
 | 	export PATH=$PATH:/opt/hardhat/devkit/ppc/8xx/bin | 
 |  | 
 | 2.3. Make board specific config, for example: | 
 | 	> cd ppcboot-0.8.1 | 
 | 	> make TQM860L_config | 
 |  | 
 | 	Now we can build ppcboot bin files. | 
 | 	After make all, you must see these files in your | 
 | 	ppcboot root directory. | 
 |  | 
 | 	ppcboot | 
 | 	ppcboot.bin | 
 | 	ppcboot.srec | 
 | 	ppcboot.map | 
 |  | 
 | 2.4. Make your own board directory into the | 
 | 	ppcboot-0.8.1/board | 
 | 	and make your board-specific files here. | 
 |  | 
 | 	For exmanple, tqm8xx files are composed of | 
 | 	.depend : Nothing | 
 | 	Makefile : To make config file | 
 | 	config.mk : Sets base address | 
 | 	flash.c : Flash memory control files | 
 | 	ppcboot.lds : linker(ld) script? (I don't know this yet) | 
 | 	tqm8xx.c : DRAM control and board check routines | 
 |  | 
 | 	And, add your board config lines in the | 
 | 	ppcboot-0.8.1/Makefile | 
 |  | 
 | 	Finally, add config_(your board).h file in the | 
 | 	ppcboot-0.8.1/include/ | 
 |  | 
 | 	I've made board/rpxlite directory, and just copied | 
 | 	tqm8xx settings for now. | 
 |  | 
 | 	Rebuild ppcboot for rpxlite board: | 
 | 	> make rpxlite_config | 
 | 	> make | 
 |  | 
 | ############################################################### | 
 | #	3. U-Boot porting | 
 | ############################################################### | 
 |  | 
 | 3.1. My RPXlite files are based on tqm8xx board files. | 
 | 	> cd board | 
 | 	> cp -r tqm8xx RPXLITE | 
 | 	> cd RPXLITE | 
 | 	> mv tqm8xx.c RPXLITE.c | 
 | 	> cd ../../include | 
 | 	> cp config_tqm8xx.h config_RPXLITE.h | 
 |  | 
 | 3.2. Modified files are: | 
 | 	board/RPXLITE/RPXLITE.c		/* DRAM-related routines */ | 
 | 	board/RPXLITE/flash.c		/* flash-related routines */ | 
 | 	board/RPXLITE/config.mk		/* set text base address */ | 
 | 	cpu/mpc8xx/serial.c			/* board specific register setting */ | 
 | 	include/config_RPXLITE.h	/* board specific registers */ | 
 |  | 
 | 	See 'reg_config.txt' for register values in detail. | 
 |  | 
 | ############################################################### | 
 | #	4. Running Linux | 
 | ############################################################### | 
 |  | 
 |  | 
 | ############################################################### | 
 | #	Misc Information | 
 | ############################################################### | 
 |  | 
 | mem_config.txt: | 
 | =============== | 
 |  | 
 | Flash memory device : AM29LV800BB (1Mx8Bit) x 4 device | 
 | manufacturer id : 01     (AMD) | 
 | device id       : 5B     (AM29LV800B) | 
 | size            : 4Mbyte | 
 | sector #        : 19 | 
 |  | 
 | Sector information : | 
 |  | 
 | number   start addr.     size | 
 | 00       FFC0_0000       64 | 
 | 01       FFC1_0000       32 | 
 | 02       FFC1_8000       32 | 
 | 03       FFC2_0000       128 | 
 | 04       FFC4_0000       256 | 
 | 05       FFC8_0000       256 | 
 | 06       FFCC_0000       256 | 
 | 07       FFD0_0000       256 | 
 | 08       FFD4_0000       256 | 
 | 09       FFD8_0000       256 | 
 | 10       FFDC_0000       256 | 
 | 11       FFE0_0000       256 | 
 | 12       FFE4_0000       256 | 
 | 13       FFE8_0000       256 | 
 | 14       FFEC_0000       256 | 
 | 15       FFF0_0000       256 | 
 | 16       FFF4_0000       256 | 
 | 17       FFF8_0000       256 | 
 | 18       FFFC_0000       256 | 
 |  | 
 |  | 
 | reg_config.txt: | 
 | =============== | 
 |  | 
 |  | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*	SIU (System Interface Unit) */ | 
 | /* */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 |  | 
 |  | 
 | /*### IMMR */ | 
 | /*### Internal Memory Map Register */ | 
 | /*### Chap. 11.4.1 */ | 
 |  | 
 | 	ISB		= 0xFA20		/* Set the Immap base = 0xFA20 0000 */ | 
 | 	PARTNUM = 0x21 | 
 | 	MASKNUM = 0x00 | 
 |  | 
 | 	=> 0xFA20 2100 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### SIUMCR */ | 
 | /*### SIU Module Configuration Register */ | 
 | /*### Chap. 11.4.2 */ | 
 | /*### Offset : 0x0000 0000 */ | 
 |  | 
 | 	EARB	= 0 | 
 | 	EARP	= 0 | 
 | 	DSHW	= 0 | 
 | 	DBGC	= 0 | 
 | 	DBPC	= 0 | 
 | 	FRC		= 0 | 
 | 	DLK		= 0 | 
 | 	OPAR	= 0 | 
 | 	PNCS	= 0 | 
 | 	DPC		= 0 | 
 | 	MPRE	= 0 | 
 | 	MLRC	= 10		/* ~KR/~RETRY/~IRQ4/SPKROUT functions as ~KR/~TRTRY */ | 
 | 	AEME	= 0 | 
 | 	SEME	= 0 | 
 | 	BSC		= 0 | 
 | 	GB5E	= 0 | 
 | 	B2DD	= 0 | 
 | 	B3DD	= 0 | 
 |  | 
 | 	=> 0x0000 0800 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### SYPCR */ | 
 | /*### System Protection Control Register */ | 
 | /*### Chap. 11.4.3 */ | 
 | /*### Offset : 0x0000 0004 */ | 
 |  | 
 | 	SWTC	= 0xFFFF	/* SW watchdog timer count = 0xFFFF */ | 
 | 	BMT		= 0x06		/* BUS monitoring timing */ | 
 | 	BME		= 1			/* BUS monitor enable */ | 
 | 	SWF		= 1 | 
 | 	SWE		= 0			/* SW watchdog disable */ | 
 | 	SWRI	= 0 | 
 | 	SWP		= 1 | 
 |  | 
 | 	=> 0xFFFF 0689 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### TESR */ | 
 | /*### Transfer Error Status Register */ | 
 | /*### Chap. 11.4.4 */ | 
 | /*### Offset : 0x0000 0020 */ | 
 |  | 
 | 	IEXT	= 0 | 
 | 	ITMT	= 0 | 
 | 	IPB		= 0000 | 
 | 	DEXT	= 0 | 
 | 	DTMT	= 0 | 
 | 	DPB		= 0000 | 
 |  | 
 | 	=> 0x0000 0000 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### SIPEND */ | 
 | /*### SIU Interrupt Pending Register */ | 
 | /*### Chap. 11.5.4.1 */ | 
 | /*### Offset : 0x0000 0010 */ | 
 |  | 
 | 	IRQ0~IRQ7 = 0 | 
 | 	LVL0~LVL7 = 0 | 
 |  | 
 | 	=> 0x0000 0000 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### SIMASK */ | 
 | /*### SIU Interrupt Mask Register */ | 
 | /*### Chap. 11.5.4.2 */ | 
 | /*### Offset : 0x0000 0014 */ | 
 |  | 
 | 	IRM0~IRM7 = 0		/* Mask all interrupts */ | 
 | 	LVL0~LVL7 = 0 | 
 |  | 
 | 	=> 0x0000 0000 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### SIEL */ | 
 | /*### SIU Interrupt Edge/Level Register */ | 
 | /*### Chap. 11.5.4.3 */ | 
 | /*### Offset : 0x0000 0018 */ | 
 |  | 
 | 	ED0~ED7 = 0			/* Low level triggered */ | 
 | 	WMn0~WMn7 = 0		/* Not allowed to exit from low-power mode */ | 
 |  | 
 | 	=> 0x0000 0000 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### SIVEC */ | 
 | /*### SIU Interrupt Vector Register */ | 
 | /*### Chap. 11.5.4.4 */ | 
 | /*### Offset : 0x0000 001C */ | 
 |  | 
 | 	INTC = 3C		/* The lowest interrupt is pending..(?) */ | 
 |  | 
 | 	=> 0x3C00 0000 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### SWSR */ | 
 | /*### Software Service Register */ | 
 | /*### Chap. 11.7.1 */ | 
 | /*### Offset : 0x0000 001E */ | 
 |  | 
 | 	SEQ = 0 | 
 |  | 
 | 	=> 0x0000 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### SDCR */ | 
 | /*### SDMA Configuration Register */ | 
 | /*### Chap. 20.2.1 */ | 
 | /*### Offset : 0x0000 0032 */ | 
 |  | 
 | 	FRZ = 0 | 
 | 	RAID = 01	/* Priority level 5 (BR5) (normal operation) */ | 
 |  | 
 | 	=> 0x0000 0001 | 
 |  | 
 |  | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*	UPMA (User Programmable Machine A) */ | 
 | /* */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 |  | 
 | /*### Chap. 16.6.4.1 */ | 
 | /*### Offset = 0x0000 017c */ | 
 |  | 
 | 	T0  = CFFF CC24		/* Single Read */ | 
 | 	T1  = 0FFF CC04 | 
 | 	T2  = 0CAF CC04 | 
 | 	T3  = 03AF CC08 | 
 | 	T4  = 3FBF CC27		/* last */ | 
 | 	T5  = FFFF CC25 | 
 | 	T6  = FFFF CC25 | 
 | 	T7  = FFFF CC25 | 
 | 	T8  = CFFF CC24		/* Burst Read */ | 
 | 	T9  = 0FFF CC04 | 
 | 	T10 = 0CAF CC84 | 
 | 	T11 = 03AF CC88 | 
 | 	T12 = 3FBF CC27		/* last */ | 
 | 	T13 = FFFF CC25 | 
 | 	T14 = FFFF CC25 | 
 | 	T15 = FFFF CC25 | 
 | 	T16 = FFFF CC25 | 
 | 	T17 = FFFF CC25 | 
 | 	T18 = FFFF CC25 | 
 | 	T19 = FFFF CC25 | 
 | 	T20 = FFFF CC25 | 
 | 	T21 = FFFF CC25 | 
 | 	T22 = FFFF CC25 | 
 | 	T23 = FFFF CC25 | 
 | 	T24 = CFFF CC24		/* Single Write */ | 
 | 	T25 = 0FFF CC04 | 
 | 	T26 = 0CFF CC04 | 
 | 	T27 = 03FF CC00 | 
 | 	T28 = 3FFF CC27		/* last */ | 
 | 	T29 = FFFF CC25 | 
 | 	T30 = FFFF CC25 | 
 | 	T31 = FFFF CC25 | 
 | 	T32 = CFFF CC24		/* Burst Write */ | 
 | 	T33 = 0FFF CC04 | 
 | 	T34 = 0CFF CC80 | 
 | 	T35 = 03FF CC8C | 
 | 	T36 = 0CFF CC00 | 
 | 	T37 = 33FF CC27		/* last */ | 
 | 	T38 = FFFF CC25 | 
 | 	T39 = FFFF CC25 | 
 | 	T40 = FFFF CC25 | 
 | 	T41 = FFFF CC25 | 
 | 	T42 = FFFF CC25 | 
 | 	T43 = FFFF CC25 | 
 | 	T44 = FFFF CC25 | 
 | 	T45 = FFFF CC25 | 
 | 	T46 = FFFF CC25 | 
 | 	T47 = FFFF CC25 | 
 | 	T48 = C0FF CC24		/* Refresh */ | 
 | 	T49 = 03FF CC24 | 
 | 	T50 = 0FFF CC24 | 
 | 	T51 = 0FFF CC24 | 
 | 	T52 = 3FFF CC27		/* last */ | 
 | 	T53 = FFFF CC25 | 
 | 	T54 = FFFF CC25 | 
 | 	T55 = FFFF CC25 | 
 | 	T56 = FFFF CC25 | 
 | 	T57 = FFFF CC25 | 
 | 	T58 = FFFF CC25 | 
 | 	T59 = FFFF CC25 | 
 | 	T60 = FFFF CC25		/* Exception */ | 
 | 	T61 = FFFF CC25 | 
 | 	T62 = FFFF CC25 | 
 | 	T63 = FFFF CC25 | 
 |  | 
 |  | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*	UPMB */ | 
 | /* */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### Chap. 16.6.4.1 */ | 
 |  | 
 |  | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*	MEMC */ | 
 | /* */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### BR0 & OR0 */ | 
 | /*### Base Registers & Option Registers */ | 
 | /*### Chap. 16.4.1 & 16.4.2 */ | 
 | /*### Offset : BR0(0x0000 0100) & OR0(0x0000 0104) */ | 
 | /*### Flash memory */ | 
 |  | 
 | 	BA   = 1111 1110 0000 0000 0	/* Base addr = 0xFE00 0000 */ | 
 | 	AT   = 000 | 
 | 	PS   = 00 | 
 | 	PARE = 0 | 
 | 	WP   = 0 | 
 | 	MS   = 0				/* GPCM */ | 
 | 	V    = 1				/* Valid */ | 
 |  | 
 | 	=> 0xFE00 0001 | 
 |  | 
 | 	AM            = 1111 1110 0000 0000 0	/* 32MBytes */ | 
 | 	ATM           = 000 | 
 | 	CSNT/SAM      = 0 | 
 | 	ACS/G5LA,G5LS = 00 | 
 | 	BIH           = 1			/* Burst inhibited */ | 
 | 	SCY           = 0100		/* cycle length = 4 */ | 
 | 	SETA          = 0 | 
 | 	TRLX          = 0 | 
 | 	EHTR          = 0 | 
 |  | 
 | 	=> 0xFE00 0140 | 
 |  | 
 | /*### BR1 & OR1 */ | 
 | /*### Base Registers & Option Registers */ | 
 | /*### Chap. 16.4.1 & 16.4.2 */ | 
 | /*### Offset : BR1(0x0000 0108) & OR1(0x0000 010C) */ | 
 | /*### SDRAM */ | 
 |  | 
 | 	BA   = 0000 0000 0000 0000 0	/* Base addr = 0x0000 0000 */ | 
 | 	AT   = 000 | 
 | 	PS   = 00 | 
 | 	PARE = 0 | 
 | 	WP   = 0 | 
 | 	MS   = 1 				/* UPMA */ | 
 | 	V    = 1				/* Valid */ | 
 |  | 
 | 	=> 0x0000 0081 | 
 |  | 
 | 	AM            = 1111 1110 0000 0000	/* 32MBytes */ | 
 | 	ATM           = 000 | 
 | 	CSNT/SAM      = 1 | 
 | 	ACS/G5LA,G5LS = 11 | 
 | 	BIH           = 0 | 
 | 	SCY           = 0000		/* cycle length = 0 */ | 
 | 	SETA          = 0 | 
 | 	TRLX          = 0 | 
 | 	EHTR          = 0 | 
 |  | 
 | 	=> 0xFE00 0E00 | 
 |  | 
 | /*### BR2 & OR2 */ | 
 | /*### Base Registers & Option Registers */ | 
 | /*### Chap. 16.4.1 & 16.4.2 */ | 
 | /*### Offset : BR2(0x0000 0110) & OR2(0x0000 0114) */ | 
 |  | 
 | 	BR2 & OR2 = 0x0000 0000		/* Not used */ | 
 |  | 
 | /*### BR3 & OR3 */ | 
 | /*### Base Registers & Option Registers */ | 
 | /*### Chap. 16.4.1 & 16.4.2 */ | 
 | /*### Offset : BR3(0x0000 0118) & OR3(0x0000 011C) */ | 
 | /*### BCSR */ | 
 |  | 
 | 	BA   = 1111 1010 0100 0000 0	/* Base addr = 0xFA40 0000 */ | 
 | 	AT   = 000 | 
 | 	PS   = 00 | 
 | 	PARE = 0 | 
 | 	WP   = 0 | 
 | 	MS   = 0 				/* GPCM */ | 
 | 	V    = 1				/* Valid */ | 
 |  | 
 | 	=> 0xFA40 0001 | 
 |  | 
 | 	AM            = 1111 1111 0111 1111 1	/* (?) */ | 
 | 	ATM           = 000 | 
 | 	CSNT/SAM      = 1 | 
 | 	ACS/G5LA,G5LS = 00 | 
 | 	BIH           = 1			/* Burst inhibited */ | 
 | 	SCY           = 0001		/* cycle length = 1 */ | 
 | 	SETA          = 0 | 
 | 	TRLX          = 0 | 
 |  | 
 | 	=> 0xFF7F 8910 | 
 |  | 
 | /*### BR4 & OR4 */ | 
 | /*### Base Registers & Option Registers */ | 
 | /*### Chap. 16.4.1 & 16.4.2 */ | 
 | /*### Offset : BR4(0x0000 0120) & OR4(0x0000 0124) */ | 
 | /*### NVRAM & SRAM */ | 
 |  | 
 | 	BA   = 1111 1010 0000 0000 0	/* Base addr = 0xFA00 0000 */ | 
 | 	AT   = 000 | 
 | 	PS   = 01 | 
 | 	PARE = 0 | 
 | 	WP   = 0 | 
 | 	MS   = 0 				/* GPCM */ | 
 | 	V    = 1				/* Valid */ | 
 |  | 
 | 	=> 0xFA00 0401 | 
 |  | 
 | 	AM            = 1111 1111 1111 1000 0	/* 8MByte */ | 
 | 	ATM           = 000 | 
 | 	CSNT/SAM      = 1 | 
 | 	ACS/G5LA,G5LS = 00 | 
 | 	BIH           = 1			/* Burst inhibited */ | 
 | 	SCY           = 0111		/* cycle length = 7 */ | 
 | 	SETA          = 0 | 
 | 	TRLX          = 0 | 
 |  | 
 | 	=> 0xFFF8 0970 | 
 |  | 
 | /*### BR5 & OR5 */ | 
 | /*### Base Registers & Option Registers */ | 
 | /*### Chap. 16.4.1 & 16.4.2 */ | 
 | /*### Offset : BR2(0x0000 0128) & OR2(0x0000 012C) */ | 
 |  | 
 | 	BR5 & OR5 = 0x0000 0000		/* Not used */ | 
 |  | 
 | /*### BR6 & OR6 */ | 
 | /*### Base Registers & Option Registers */ | 
 | /*### Chap. 16.4.1 & 16.4.2 */ | 
 | /*### Offset : BR2(0x0000 0130) & OR2(0x0000 0134) */ | 
 |  | 
 | 	BR6 & OR6 = 0x0000 0000		/* Not used */ | 
 |  | 
 | /*### BR7 & OR7 */ | 
 | /*### Base Registers & Option Registers */ | 
 | /*### Chap. 16.4.1 & 16.4.2 */ | 
 | /*### Offset : BR7(0x0000 0138) & OR7(0x0000 013C) */ | 
 |  | 
 | 	BR7 & OR7 = 0x0000 0000		/* Not used */ | 
 |  | 
 | /*### MAR */ | 
 | /*### Memory Address Register */ | 
 | /*### Chap. 16.4.7 */ | 
 | /*### Offset : 0x0000 0164 */ | 
 |  | 
 | 	MA = External memory address | 
 |  | 
 | /*### MCR */ | 
 | /*### Memory Command Register */ | 
 | /*### Chap. 16.4.5 */ | 
 | /*### Offset : 0x0000 0168 */ | 
 |  | 
 | 	OP   = xx			/* Command op code */ | 
 | 	UM   = 1			/* Select UPMA */ | 
 | 	MB   = 001			/* Select CS1 */ | 
 | 	MCLF = xxxx			/* Loop times */ | 
 | 	MAD  = xx xxxx		/* Memory array index */ | 
 |  | 
 | /*### MAMR */ | 
 | /*### Machine A Mode Register */ | 
 | /*### Chap. 16.4.4 */ | 
 | /*### Offset : 0x0000 0170 */ | 
 |  | 
 | 	PTA = 0101 1000 | 
 | 	PTAE = 1			/* Periodic timer A enabled */ | 
 | 	AMA = 010 | 
 | 	DSA = 00 | 
 | 	G0CLA = 000 | 
 | 	GPLA4DIS = 1 | 
 | 	RLFA = 0100 | 
 | 	WLFA = 0011 | 
 | 	TLFA = 0000 | 
 |  | 
 | 	=> 0x58A0 1430 | 
 |  | 
 | /*### MBMR */ | 
 | /*### Machine B Mode Register */ | 
 | /*### Chap. 16.4.4 */ | 
 | /*### Offset : 0x0000 0174 */ | 
 |  | 
 | 	PTA = 0100 1110 | 
 | 	PTAE = 0			/* Periodic timer B disabled */ | 
 | 	AMA = 000 | 
 | 	DSA = 00 | 
 | 	G0CLA = 000 | 
 | 	GPLA4DIS = 1 | 
 | 	RLFA = 0000 | 
 | 	WLFA = 0000 | 
 | 	TLFA = 0000 | 
 |  | 
 | 	=> 0x4E00 1000 | 
 |  | 
 | /*### MSTAT */ | 
 | /*### Memory Status Register */ | 
 | /*### Chap. 16.4.3 */ | 
 | /*### Offset : 0x0000 0178 */ | 
 |  | 
 | 	PER0~PER7 = Parity error | 
 | 	WPER      = Write protection error | 
 |  | 
 | 	=> 0x0000 | 
 |  | 
 | /*### MPTPR */ | 
 | /*### Memory Periodic Timer Prescaler Register */ | 
 | /*### Chap. 16.4.8 */ | 
 | /*### Offset : 0x0000 017A */ | 
 |  | 
 | 	PTP = 0000 1000		/* Divide by 8 */ | 
 |  | 
 | 	=> 0x0800 | 
 |  | 
 | /*### MDR */ | 
 | /*### Memory Data Register */ | 
 | /*### Chap. 16.4.6 */ | 
 | /*### Offset : 0x0000 017C */ | 
 |  | 
 | 	MD = Memory data contains the RAM array word | 
 |  | 
 |  | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*	TIMERS */ | 
 | /* */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### TBREFx */ | 
 | /*### Timebase Reference Registers */ | 
 | /*### Chap. 11.9.2 */ | 
 | /*### Offset : TBREFF0(0x0000 0204)/TBREFF1(0x0000 0208) */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	TBREFF0 = 0xFFFF FFFF | 
 | 	TBREFF1 = 0xFFFF FFFF | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### TBSCR */ | 
 | /*### Timebase Status and Control Registers */ | 
 | /*### Chap. 11.9.3 */ | 
 | /*### Offset : 0x0000 0200 */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	TBIRQ = 00000000 | 
 | 	REF0  = 0 | 
 | 	REF1  = 0 | 
 | 	REFE0 = 0			/* Reference interrupt disable */ | 
 | 	REFE1 = 0 | 
 | 	TBF   = 1 | 
 | 	TBE   = 1			/* Timebase enable */ | 
 |  | 
 | 	=> 0x0003 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### RTCSC */ | 
 | /*### Real-Time Clock Status and Control Registers */ | 
 | /*### Chap. 11.10.1 */ | 
 | /*### Offset : 0x0000 0220 */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	RTCIRQ = 00000000 | 
 | 	SEC = 1 | 
 | 	ALR = 0 | 
 | 	38K = 0				/* PITRTCLK is driven by 32.768KHz */ | 
 | 	SIE = 0 | 
 | 	ALE = 0 | 
 | 	RTF = 0 | 
 | 	RTE = 1				/* Real-Time clock enabled */ | 
 |  | 
 | 	=> 0x0081 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### RTC */ | 
 | /*### Real-Time Clock Registers */ | 
 | /*### Chap. 11.10.2 */ | 
 | /*### Offset : 0x0000 0224 */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	RTC = Real time clock measured in second | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### RTCAL */ | 
 | /*### Real-Time Clock Alarm Registers */ | 
 | /*### Chap. 11.10.3 */ | 
 | /*### Offset : 0x0000 022C */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	ALARM = 0xFFFF FFFF | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### RTSEC */ | 
 | /*### Real-Time Clock Alarm Second Registers */ | 
 | /*### Chap. 11.10.4 */ | 
 | /*### Offset : 0x0000 0228 */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	COUNTER = Counter bits(fraction of a second) | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### PISCR */ | 
 | /*### Periodic Interrupt Status and Control Register */ | 
 | /*### Chap. 11.11.1 */ | 
 | /*### Offset : 0x0000 0240 */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	PIRQ = 0 | 
 | 	PS   = 0		/* Write 1 to clear */ | 
 | 	PIE  = 0 | 
 | 	PITF = 1 | 
 | 	PTE  = 0		/* PIT disabled */ | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### PITC */ | 
 | /*### PIT Count Register */ | 
 | /*### Chap. 11.11.2 */ | 
 | /*### Offset : 0x0000 0244 */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	PITC = PIT count | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### PITR */ | 
 | /*### PIT Register */ | 
 | /*### Chap. 11.11.3 */ | 
 | /*### Offset : 0x0000 0248 */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	PIT = PIT count		/* Read only */ | 
 |  | 
 |  | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*	CLOCKS */ | 
 | /* */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | --------------------------------------------------------------------- | 
 |  | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### SCCR */ | 
 | /*### System Clock and Reset Control Register */ | 
 | /*### Chap. 15.6.1 */ | 
 | /*### Offset : 0x0000 0280 */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	COM    = 11		/* Clock output disabled */ | 
 | 	TBS    = 1		/* Timebase frequency source is GCLK2 divided by 16 */ | 
 | 	RTDIV  = 0		/* The clock is divided by 4 */ | 
 | 	RTSEL  = 0		/* OSCM(Crystal oscillator) is selected */ | 
 | 	CRQEN  = 0 | 
 | 	PRQEN  = 0 | 
 | 	EBDF   = 00		/* CLKOUT is GCLK2 divided by 1 */ | 
 | 	DFSYNC = 00		/* Divided by 1 (normal operation) */ | 
 | 	DFBRG  = 00		/* Divided by 1 (normal operation) */ | 
 | 	DFNL   = 000 | 
 | 	DFNH   = 000 | 
 |  | 
 | 	=> 0x6200 0000 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### PLPRCR */ | 
 | /*### PLL, Low-Power, and Reset Control Register */ | 
 | /*### Chap. 15.6.2 */ | 
 | /*### Offset : 0x0000 0284 */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	MF    = 0x005	/* 48MHz (?) (  = 8MHz * (MF+1) ) */ | 
 | 	SPLSS = 0 | 
 | 	TEXPS = 0 | 
 | 	TMIST = 0 | 
 | 	CSRC  = 0		/* The general system clock is generated by the DFNH field */ | 
 | 	LPM   = 00		/* Normal high/normal low mode */ | 
 | 	CSR   = 0 | 
 | 	LOLRE = 0 | 
 | 	FIOPD = 0 | 
 |  | 
 | 	=> 0x0050 0000 | 
 |  | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### RSR */ | 
 | /*### Reset Status Register */ | 
 | /*### Chap. 12.2 */ | 
 | /*### Offset : 0x0000 0288 */ | 
 | /*### (Locked) */ | 
 |  | 
 | 	EHRS  = External hard reset | 
 | 	ESRS  = External soft reset | 
 | 	LLRS  = Loss-of-lock reset | 
 | 	SWRS  = Software watchdog reset | 
 | 	CSRS  = Check stop reset | 
 | 	DBHRS = Debug port hard reset | 
 | 	DBSRS = Debug port soft reset | 
 | 	JTRS  = JTAG reset | 
 |  | 
 |  | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*	DMA */ | 
 | /* */ | 
 | /*------------------------------------------------------------------- */ | 
 | /*------------------------------------------------------------------- */ | 
 | --------------------------------------------------------------------- | 
 |  | 
 | /*### SDSR */ | 
 | /*### SDMA Status Register */ | 
 | /*### Chap. 20.2.2 */ | 
 | /*### Offset : 0x0000 0908 */ | 
 |  | 
 | 	SBER = 0	/* SDMA channel bus error */ | 
 | 	DSP2 = 0	/* DSP chain2 (Tx) interrupt */ | 
 | 	DSP1 = 0	/* DSP chain1 (Rx) interrupt */ | 
 |  | 
 | 	=> 0x00 | 
 |  | 
 | /*### SDMR */ | 
 | /*### SDMA Mask Register */ | 
 | /*### Chap. 20.2.3 */ | 
 | /*### Offset : 0x0000 090C */ | 
 |  | 
 | 	SBER = 0 | 
 | 	DSP2 = 0 | 
 | 	DSP1 = 0	/* All interrupts are masked */ | 
 |  | 
 | 	=> 0x00 | 
 |  | 
 | /*### SDAR */ | 
 | /*### SDMA Address Register */ | 
 | /*### Chap. 20.2.4 */ | 
 | /*### Offset : 0x0000 0904 */ | 
 |  | 
 | 	AR = 0xxxxx xxxx	/* current system address */ | 
 |  | 
 | 	=> 0xFA20 23AC | 
 |  | 
 | /*### IDSRx */ | 
 | /*### IDMA Status Register */ | 
 | /*### Chap. 20.3.3.2 */ | 
 | /*### Offset : IDSR1(0x0000 0910) & IDSR2(0x0000 0918) */ | 
 |  | 
 | 	AD   = 0 | 
 | 	DONE = 0 | 
 | 	OB   = 0 | 
 |  | 
 | 	=> 0x00 | 
 |  | 
 | /*### IDMRx */ | 
 | /*### IDMA Mask Register */ | 
 | /*### Chap. 20.3.3.3 */ | 
 | /*### Offset : IDMR1(0x0000 0914) & IDMR2(0x0000 091C) */ | 
 |  | 
 | 	AD   = 0 | 
 | 	DONE = 0 | 
 | 	OB   = 0 |