878 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			878 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
# 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
 |