|  | # 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 */ | 
|  | arch/powerpc/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 |