Unixify memmap, add sfrw() to mmap2h.sh
authorDan White <dan@whiteaudio.com>
Thu, 10 May 2012 02:06:27 +0000 (21:06 -0500)
committerDan White <dan@whiteaudio.com>
Thu, 10 May 2012 02:06:27 +0000 (21:06 -0500)
mmap2h.sh
ns430-atoi.mmap

index c58d47e18e805223865ce2346c8a1011862b0604..97109aeecabe143697f9388cde293658ad18ec6e 100755 (executable)
--- a/mmap2h.sh
+++ b/mmap2h.sh
@@ -6,5 +6,5 @@
 egrep -o '#.*' $1 \
     | cut -c 2- \
     | tr -d =h \
-    | awk '{print "#define " $1 " 0x" $2}'
+    | awk '{printf "#define %s_ 0x%s\nsfrw(%s,%s_);\n", $1, $2, $1, $1;}'
 
index c5420644c0e39e8dbd7c749982de44ab1d6b3a08..ecf5f0d27e8417dc8e2c8e8e9963cd2a882fb44f 100644 (file)
-;-------------------------------------------------------------------------\r
-; NS430 constants for AtoI processor version.\r
-;\r
-; This files contains the SFR definitions for the \r
-; MSP430 variant used in the AtoI processor\r
-; The hardware multiplier is the only perpherial compatabile\r
-; with the standard MSP 430.\r
-;\r
-; The bitfields are derived directly from the VHDL description.\r
-;-------------------------------------------------------------------------\r
-\r
-#PC_AFTER_RESET = 3000h\r
-\r
-memory map inferred from VHDL:\r
-0000 0000 000x xxxx xxxx *HWMult registers\r
-\r
-** CRC module\r
-0000 0000 000x xxx0 000x CRCDI\r
-0000 0000 0000 0000 0000 #CRCDI = 0000h\r
-0000 0000 0000 0000 0000 #CRCDI_L = 0000h\r
-0000 0000 0000 0000 0001 #CRCDI_H = 0001h\r
-0000 0000 000x xxx0 001x CRCDIRB\r
-0000 0000 0000 0000 0010 #CRCDIRB = 0002h\r
-0000 0000 0000 0000 0010 #CRCDIRB_L = 0002h\r
-0000 0000 0000 0000 0011 #CRCDIRB_H = 0002h\r
-0000 0000 000x xxx0 010x CRCINIRES\r
-0000 0000 0000 0000 0100 #CRCINIRES = 0004h\r
-0000 0000 0000 0000 0100 #CRCINIRES_L = 0004h\r
-0000 0000 0000 0000 0101 #CRCINIRES_L = 0005h\r
-0000 0000 000x xxx0 011x CRCRESR\r
-0000 0000 0000 0000 0110 #CRCRESR = 0006h\r
-0000 0000 0000 0000 0110 #CRCRESR_L = 0006h\r
-0000 0000 0000 0000 0111 #CRCRESR_L = 0007h\r
-\r
-** Mult module\r
-0000 0000 000x xxx1 000x MPY\r
-0000 0000 0001 0011 0000 #MPY = 0130h\r
-0000 0000 000x xxx1 001x MPS\r
-0000 0000 0001 0011 0010 #MPYS = 0132h\r
-0000 0000 000x xxx1 010x MAC\r
-0000 0000 0001 0011 0100 #MAC = 0134h\r
-0000 0000 000x xxx1 011x MACS\r
-0000 0000 0001 0011 0110 #MACS = 0136h\r
-0000 0000 000x xxx1 100x OP2\r
-0000 0000 0001 0011 1000 #OP2 = 0138h\r
-0000 0000 000x xxx1 101x RESLo\r
-0000 0000 0001 0011 1010 #RESLO = 013ah\r
-0000 0000 000x xxx1 110x RESHi\r
-0000 0000 0001 0011 1100 #RESHI = 013ch\r
-0000 0000 000x xxx1 111x SUMExt\r
-0000 0000 0001 0011 1110 #SUMEXT = 013eh\r
-\r
-0000 0000 001x xxxx xxxx na\r
-\r
-** AES module\r
-0000 0000 010x xxxx xxxx AES registers\r
-0000 0000 0100 0000 0000 AES_CR\r
-0000 0000 0100 0000 0000 #AES_CR = 0400h\r
-0000 0000 0100 0000 0010 AES_SR\r
-0000 0000 0100 0000 0010 #AES_SR = 0402h\r
-0000 0000 0100 0001 xxxx AES_STATE\r
-0000 0000 0100 0001 0000 #AES_STATE = 0410h\r
-                         #AES_STATE_SIZE = 0010h\r
-0000 0000 0111 000x xxxx AES_KEY\r
-0000 0000 0111 0000 0000 #AES_KEY = 0700h\r
-                         #AES_KEY_SIZE = 0020h\r
-0000 0000 0111 001x xxxx AES_EXPKEY (start)\r
-0000 0000 0111 0010 0000 #AES_EXPKEY = 0720h\r
-                         #AES_EXPKEY_SIZE = 00e0h\r
-0000 0000 011x xxxx xxxx AES_EXPKEY (range)\r
-\r
-** PIO module\r
-0000 0001 000x xxxx xxxx block start\r
-0000 0001 101x xxXX XXXx PIO\r
-0000 0001 101x xx00 000x PDSR_A\r
-0000 0001 1010 0000 0000 #PADSR = 1a00h\r
-0000 0001 101x xx00 001x PDSR_B\r
-0000 0001 1010 0000 0010 #PBDSR = 1a02h\r
-0000 0001 101x xx00 010x OEN_A\r
-0000 0001 1010 0000 0100 #PAOEN = 1a04h\r
-0000 0001 101x xx00 011x OEN_B\r
-0000 0001 1010 0000 0110 #PBOEN = 1a06h\r
-0000 0001 101x xx00 100x ODR_A\r
-0000 0001 1010 0000 1000 #PAOUT = 1a08h\r
-0000 0001 101x xx00 101x ODR_B\r
-0000 0001 1010 0000 1000 #PBOUT = 1a0ah\r
-0000 0001 101x xx00 110x PER_A\r
-0000 0001 1010 0000 1100 #PAPER = 1a0ch\r
-0000 0001 101x xx00 111x PER_B\r
-0000 0001 1010 0000 1110 #PBPER = 1a0eh\r
-0000 0001 101x xx01 000x IER_A\r
-0000 0001 1010 0001 0000 #PAIER = 1a10h\r
-0000 0001 101x xx01 001x IER_B\r
-0000 0001 1010 0001 0010 #PBIER = 1a12h\r
-0000 0001 101x xx01 010x IMR_A\r
-0000 0001 1010 0001 0100 #PAIMR = 1a14h\r
-0000 0001 101x xx01 011x IMR_B\r
-0000 0001 1010 0001 0110 #PBIMR = 1a16h\r
-0000 0001 101x xx01 100x PPER_A\r
-0000 0001 1010 0001 1000 #PAPUE = 1a18h\r
-0000 0001 101x xx01 101x PPER_B\r
-0000 0001 1010 0001 1010 #PBPUE = 1a1ah\r
-0000 0001 101x xx01 110x TestDrv_B\r
-0000 0001 1010 0001 1100 #PBTSD = 1a1ch\r
-0000 0001 101x xx01 111x PBPSR\r
-0000 0001 1010 0001 1110 #PBPSR = 1a1eh\r
-0000 0001 101x xx10 000x PAOCEN\r
-0000 0001 1010 0010 0000 #PAOCEN = 1a20h\r
-0000 0001 101x xx10 001x PBOCEN\r
-0000 0001 1010 0010 0010 #PAOCEN = 1a22h\r
-\r
-** Timer module\r
-*** Timer0\r
-0000 0001 110x xxx0 XXXx *TIMER0\r
-0000 0001 110x xxx0 000x TMR0_CR\r
-0000 0001 1100 0000 0000 #TMR0_CR = 1c00h\r
-0000 0001 110x xxx0 001x TMR0_SR\r
-0000 0001 1100 0000 0010 #TMR0_SR = 1c02h\r
-0000 0001 110x xxx0 010x TMR0_CNT\r
-0000 0001 1100 0000 0100 #TMR0_CNT = 1c04h\r
-0000 0001 110x xxx0 011x TMR0_RA\r
-0000 0001 1100 0000 0110 #TMR0_RA = 1c06h\r
-0000 0001 110x xxx0 100x TMR0_RB\r
-0000 0001 1100 0000 1000 #TMR0_RB = 1c08h\r
-0000 0001 110x xxx0 101x TMR0_RC\r
-0000 0001 1100 0000 1010 #TMR0_RC = 1c0ah\r
-0000 0001 110x xxx0 110x TMR0_C1\r
-0000 0001 1100 0000 1100 #TMR0_CAP0 = 1c0ch\r
-0000 0001 110x xxx0 111x TMR0_C2\r
-0000 0001 1100 0000 1110 #TMR0_CAP1 = 1c0eh\r
-\r
-*** Timer1\r
-0000 0001 110x xxx1 XXXx *TIMER1\r
-0000 0001 110x xxx1 000x TMR1_CR\r
-0000 0001 1100 0001 0000 #TMR1_CR = 1c10h\r
-0000 0001 110x xxx1 001x TMR1_SR\r
-0000 0001 1100 0001 0010 #TMR1_SR = 1c12h\r
-0000 0001 110x xxx1 010x TMR1_CNT\r
-0000 0001 1100 0001 0100 #TMR1_CNT = 1c14h\r
-0000 0001 110x xxx1 011x TMR1_RA\r
-0000 0001 1100 0001 0110 #TMR1_RA = 1c16h\r
-0000 0001 110x xxx1 100x TMR1_RB\r
-0000 0001 1100 0001 1000 #TMR1_RB = 1c18h\r
-0000 0001 110x xxx1 101x TMR1_RC\r
-0000 0001 1100 0001 1010 #TMR1_RC = 1c1ah\r
-0000 0001 110x xxx1 110x TMR1_C1\r
-0000 0001 1100 0001 1100 #TMR1_CAP0 = 1c1ch\r
-0000 0001 110x xxx1 111x TMR1_C2\r
-0000 0001 1100 0001 1110 #TMR1_CAP1 = 1c1eh\r
-\r
-*** Timer2\r
-0000 0001 111x xxx0 XXXx *TIMER2\r
-0000 0001 111x xxx0 000x TMR2_CR\r
-0000 0001 1110 0000 0000 #TMR2_CR = 1e00h\r
-0000 0001 111x xxx0 001x TMR2_SR\r
-0000 0001 1110 0000 0010 #TMR2_SR = 1e02h\r
-0000 0001 111x xxx0 010x TMR2_CNT\r
-0000 0001 1110 0000 0100 #TMR2_CNT = 1e04h\r
-0000 0001 111x xxx0 011x TMR2_RA\r
-0000 0001 1110 0000 0110 #TMR2_RA = 1e06h\r
-0000 0001 111x xxx0 100x TMR2_RB\r
-0000 0001 1110 0000 1000 #TMR2_RB = 1e08h\r
-0000 0001 111x xxx0 101x TMR2_RC\r
-0000 0001 1110 0000 1010 #TMR2_RC = 1e0ah\r
-0000 0001 111x xxx0 110x TMR2_C1\r
-0000 0001 1110 0000 1100 #TMR2_CAP0 = 1e0ch\r
-0000 0001 111x xxx0 111x TMR2_C2\r
-0000 0001 1110 0000 1110 #TMR2_CAP1 = 1e0eh\r
-\r
-*** Timer3\r
-0000 0001 111x xxx1 XXXx *TIMER3\r
-0000 0001 111x xxx1 000x TMR3_CR\r
-0000 0001 1110 0001 0000 #TMR3_CR = 1e10h\r
-0000 0001 111x xxx1 001x TMR3_SR\r
-0000 0001 1110 0001 0010 #TMR3_SR = 1e12h\r
-0000 0001 111x xxx1 010x TMR3_CNT\r
-0000 0001 1110 0001 0100 #TMR3_CNT = 1e14h\r
-0000 0001 111x xxx1 011x TMR3_RA\r
-0000 0001 1110 0001 0110 #TMR3_RA = 1e16h\r
-0000 0001 111x xxx1 100x TMR3_RB\r
-0000 0001 1110 0001 1000 #TMR3_RB = 1e18h\r
-0000 0001 111x xxx1 101x TMR3_RC\r
-0000 0001 1110 0001 1010 #TMR3_RC = 1e1ah\r
-0000 0001 111x xxx1 110x TMR3_C1\r
-0000 0001 1110 0001 1100 #TMR3_CAP0 = 1e1ch\r
-0000 0001 111x xxx1 111x TMR3_C2\r
-0000 0001 1110 0001 1110 #TMR3_CAP1 = 1e1eh\r
-\r
-** SPI module\r
-*** SPI0\r
-0000 0010 000x xxxx XXXx *SPI\r
-0000 0010 000x xxxx 000x SPI0_CR\r
-0000 0010 0000 0000 0000 #SPI0_CR = 2000h\r
-0000 0010 000x xxxx 001x SPI0_RDR\r
-0000 0010 0000 0000 0010 #SPI0_RDR = 2002h\r
-0000 0010 000x xxxx 010x SPI0_TDR\r
-0000 0010 0000 0000 0100 #SPI0_TDR = 2004h\r
-0000 0010 000x xxxx 011x SPI0_SR\r
-0000 0010 0000 0000 0110 #SPI0_SR = 2006h\r
-\r
-*** SPI1\r
-0000 0010 000x xxxx 100x SPI1_CR\r
-0000 0010 0000 0000 1000 #SPI1_CR = 2008h\r
-0000 0010 000x xxxx 101x SPI1_RDR\r
-0000 0010 0000 0000 1010 #SPI1_RDR = 200ah\r
-0000 0010 000x xxxx 110x SPI1_TDR\r
-0000 0010 0000 0000 1100 #SPI1_TDR = 200ch\r
-0000 0010 000x xxxx 111x SPI1_SR\r
-0000 0010 0000 0000 1110 #SPI1_SR = 200eh\r
-\r
-** UART module\r
-*** UART0\r
-0000 0010 001x xxx0 XXXx *UART0\r
-0000 0010 001x xxx0 000x UART0_CR\r
-0000 0010 0010 0000 0000 #UART0_CR = 2200h\r
-0000 0010 001x xxx0 001x UART0_BCR\r
-0000 0010 0010 0000 0010 #UART0_BCR = 2202h\r
-0000 0010 001x xxx0 010x UART0_SR\r
-0000 0010 0010 0000 0100 #UART0_SR = 2204h\r
-0000 0010 001x xxx0 011x UART0_RDR\r
-0000 0010 0010 0000 0110 #UART0_RDR = 2206h\r
-0000 0010 001x xxx0 100x UART0_TDR\r
-0000 0010 0010 0000 1000 #UART0_TDR = 2208h\r
-\r
-*** UART1\r
-0000 0010 001x xxx1 XXXx *UART1\r
-0000 0010 001x xxx1 000x UART1_CR\r
-0000 0010 0010 0001 0000 #UART1_CR = 2210h\r
-0000 0010 001x xxx1 001x UART1_BCR\r
-0000 0010 0010 0001 0010 #UART1_BCR = 2212h\r
-0000 0010 001x xxx1 010x UART1_SR\r
-0000 0010 0010 0001 0100 #UART1_SR = 2214h\r
-0000 0010 001x xxx1 011x UART1_RDR\r
-0000 0010 0010 0001 0110 #UART1_RDR = 2216h\r
-0000 0010 001x xxx1 100x UART1_TDR\r
-0000 0010 0010 0001 1000 #UART1_TDR = 2218h\r
-\r
-** Interface module\r
-0000 0010 010x xxxx XXXx *Interf\r
-0000 0010 010x xxxx 000x ADC_CR\r
-0000 0010 0100 0000 0000 #ADC_CR = 2400h\r
-0000 0010 010x xxxx 001x GPIN0\r
-0000 0010 0100 0000 0010 #GPIN0 = 2402h\r
-0000 0010 010x xxxx 010x GPIN1\r
-0000 0010 0100 0000 0100 #GPIN1 = 2404h\r
-0000 0010 010x xxxx 011x GPOUT0\r
-0000 0010 0100 0000 0110 #GPOUT0 = 2406h\r
-0000 0010 010x xxxx 100x GPOUT1\r
-0000 0010 0100 0000 1000 #GPOUT1 = 2408h\r
-0000 0010 010x xxxx 101x GPOUT2\r
-0000 0010 0100 0000 1010 #GPOUT2 = 240ah\r
-0000 0010 010x xxxx 110x GPOUT3\r
-0000 0010 0100 0000 1100 #GPOUT3 = 240ch\r
-\r
-0000 0010 011x xxxx xxxx na\r
-0000 0010 100x xxxx xxxx na\r
-\r
-** I2C module\r
-*** I2C master\r
-0000 0010 101x xxxX XXXx I2C\r
-0000 0010 101x xxx0 000x I2CM_CR\r
-0000 0010 1010 0000 0000 #I2CM_CR = 2a00h\r
-0000 0010 101x xxx0 001x I2CM_TCFG\r
-0000 0010 1010 0000 0010 #I2CM_TCFG = 2a02h\r
-0000 0010 101x xxx0 010x I2CM_SR\r
-0000 0010 1010 0000 0100 #I2CM_SR = 2a04h\r
-0000 0010 101x xxx0 011x I2CM_WCR\r
-0000 0010 1010 0000 0110 #I2CM_WCR = 2a06h\r
-0000 0010 101x xxx0 100x I2CM_TDR_ST\r
-0000 0010 1010 0000 1000 #I2CM_TDR_ST = 2a08h\r
-0000 0010 101x xxx0 101x I2CM_TDR\r
-0000 0010 1010 0000 1010 #I2CM_TDR = 2a0ah\r
-0000 0010 101x xxx0 110x I2CM_TDR_SP\r
-0000 0010 1010 0000 1100 #I2CM_TDR_SP = 2a0ch\r
-0000 0010 101x xxx0 111x I2CM_RDR\r
-0000 0010 1010 0000 1110 #I2CM_RDR = 2a0eh\r
-\r
-*** I2C slave\r
-0000 0010 101x xxx1 000x I2CS_CR\r
-0000 0010 1010 0001 0000 #I2CS_CR = 2a10h\r
-0000 0010 101x xxx1 001x I2CS_SR\r
-0000 0010 1010 0001 0010 #I2CS_SR = 2a12h\r
-0000 0010 101x xxx1 010x I2CS_TDR\r
-0000 0010 1010 0001 0100 #I2CS_TDR = 2a14h\r
-0000 0010 101x xxx1 011x I2CS_RDR\r
-0000 0010 1010 0001 0110 #I2CS_RDR = 2a16h\r
-\r
-0000 0010 110x xxxx xxxx na\r
-0000 0010 111x xxxx xxxx na\r
-\r
-** ROM\r
-0000 0011 xxxx xxxx xxxx ROM\r
-0000 0011 0000 0000 0000 #ROMStart = 3000h\r
-                         #ROMSize = 0800h\r
-\r
-** SRAM (3x 8ki-words = 24ki-words = 48 kiB\r
-0000 01xx xxxx xxxx xxxx SRAM0\r
-0000 0100 0000 0000 0000 #RAMStart = 4000h\r
-                         #RAMSize = c000h\r
-0000 10xx xxxx xxxx xxxx SRAM1\r
-0000 11xx xxxx xxxx xxxx SRAM2\r
-0001 00xx xxxx xxxx xxxx SRAM3 ;not fabbed, but used in addr decoder\r
-0001 01xx xxxx xxxx xxxx SRAM4 ;not fabbed, but used in addr decoder\r
-0001 10xx xxxx xxxx xxxx SRAM5 ;not fabbed, but used in addr decoder\r
-\r
+;-------------------------------------------------------------------------
+; NS430 constants for AtoI processor version.
+;
+; This files contains the SFR definitions for the 
+; MSP430 variant used in the AtoI processor
+; The hardware multiplier is the only perpherial compatabile
+; with the standard MSP 430.
+;
+; The bitfields are derived directly from the VHDL description.
+;-------------------------------------------------------------------------
+
+#PC_AFTER_RESET = 3000h
+
+memory map inferred from VHDL:
+0000 0000 000x xxxx xxxx *HWMult registers
+
+** CRC module
+0000 0000 000x xxx0 000x CRCDI
+0000 0000 0000 0000 0000 #CRCDI = 0000h
+0000 0000 0000 0000 0000 #CRCDI_L = 0000h
+0000 0000 0000 0000 0001 #CRCDI_H = 0001h
+0000 0000 000x xxx0 001x CRCDIRB
+0000 0000 0000 0000 0010 #CRCDIRB = 0002h
+0000 0000 0000 0000 0010 #CRCDIRB_L = 0002h
+0000 0000 0000 0000 0011 #CRCDIRB_H = 0002h
+0000 0000 000x xxx0 010x CRCINIRES
+0000 0000 0000 0000 0100 #CRCINIRES = 0004h
+0000 0000 0000 0000 0100 #CRCINIRES_L = 0004h
+0000 0000 0000 0000 0101 #CRCINIRES_L = 0005h
+0000 0000 000x xxx0 011x CRCRESR
+0000 0000 0000 0000 0110 #CRCRESR = 0006h
+0000 0000 0000 0000 0110 #CRCRESR_L = 0006h
+0000 0000 0000 0000 0111 #CRCRESR_L = 0007h
+
+** Mult module
+0000 0000 000x xxx1 000x MPY
+0000 0000 0001 0011 0000 #MPY = 0130h
+0000 0000 000x xxx1 001x MPS
+0000 0000 0001 0011 0010 #MPYS = 0132h
+0000 0000 000x xxx1 010x MAC
+0000 0000 0001 0011 0100 #MAC = 0134h
+0000 0000 000x xxx1 011x MACS
+0000 0000 0001 0011 0110 #MACS = 0136h
+0000 0000 000x xxx1 100x OP2
+0000 0000 0001 0011 1000 #OP2 = 0138h
+0000 0000 000x xxx1 101x RESLo
+0000 0000 0001 0011 1010 #RESLO = 013ah
+0000 0000 000x xxx1 110x RESHi
+0000 0000 0001 0011 1100 #RESHI = 013ch
+0000 0000 000x xxx1 111x SUMExt
+0000 0000 0001 0011 1110 #SUMEXT = 013eh
+
+0000 0000 001x xxxx xxxx na
+
+** AES module
+0000 0000 010x xxxx xxxx AES registers
+0000 0000 0100 0000 0000 AES_CR
+0000 0000 0100 0000 0000 #AES_CR = 0400h
+0000 0000 0100 0000 0010 AES_SR
+0000 0000 0100 0000 0010 #AES_SR = 0402h
+0000 0000 0100 0001 xxxx AES_STATE
+0000 0000 0100 0001 0000 #AES_STATE = 0410h
+                         #AES_STATE_SIZE = 0010h
+0000 0000 0111 000x xxxx AES_KEY
+0000 0000 0111 0000 0000 #AES_KEY = 0700h
+                         #AES_KEY_SIZE = 0020h
+0000 0000 0111 001x xxxx AES_EXPKEY (start)
+0000 0000 0111 0010 0000 #AES_EXPKEY = 0720h
+                         #AES_EXPKEY_SIZE = 00e0h
+0000 0000 011x xxxx xxxx AES_EXPKEY (range)
+
+** PIO module
+0000 0001 000x xxxx xxxx block start
+0000 0001 101x xxXX XXXx PIO
+0000 0001 101x xx00 000x PDSR_A
+0000 0001 1010 0000 0000 #PADSR = 1a00h
+0000 0001 101x xx00 001x PDSR_B
+0000 0001 1010 0000 0010 #PBDSR = 1a02h
+0000 0001 101x xx00 010x OEN_A
+0000 0001 1010 0000 0100 #PAOEN = 1a04h
+0000 0001 101x xx00 011x OEN_B
+0000 0001 1010 0000 0110 #PBOEN = 1a06h
+0000 0001 101x xx00 100x ODR_A
+0000 0001 1010 0000 1000 #PAOUT = 1a08h
+0000 0001 101x xx00 101x ODR_B
+0000 0001 1010 0000 1000 #PBOUT = 1a0ah
+0000 0001 101x xx00 110x PER_A
+0000 0001 1010 0000 1100 #PAPER = 1a0ch
+0000 0001 101x xx00 111x PER_B
+0000 0001 1010 0000 1110 #PBPER = 1a0eh
+0000 0001 101x xx01 000x IER_A
+0000 0001 1010 0001 0000 #PAIER = 1a10h
+0000 0001 101x xx01 001x IER_B
+0000 0001 1010 0001 0010 #PBIER = 1a12h
+0000 0001 101x xx01 010x IMR_A
+0000 0001 1010 0001 0100 #PAIMR = 1a14h
+0000 0001 101x xx01 011x IMR_B
+0000 0001 1010 0001 0110 #PBIMR = 1a16h
+0000 0001 101x xx01 100x PPER_A
+0000 0001 1010 0001 1000 #PAPUE = 1a18h
+0000 0001 101x xx01 101x PPER_B
+0000 0001 1010 0001 1010 #PBPUE = 1a1ah
+0000 0001 101x xx01 110x TestDrv_B
+0000 0001 1010 0001 1100 #PBTSD = 1a1ch
+0000 0001 101x xx01 111x PBPSR
+0000 0001 1010 0001 1110 #PBPSR = 1a1eh
+0000 0001 101x xx10 000x PAOCEN
+0000 0001 1010 0010 0000 #PAOCEN = 1a20h
+0000 0001 101x xx10 001x PBOCEN
+0000 0001 1010 0010 0010 #PAOCEN = 1a22h
+
+** Timer module
+*** Timer0
+0000 0001 110x xxx0 XXXx *TIMER0
+0000 0001 110x xxx0 000x TMR0_CR
+0000 0001 1100 0000 0000 #TMR0_CR = 1c00h
+0000 0001 110x xxx0 001x TMR0_SR
+0000 0001 1100 0000 0010 #TMR0_SR = 1c02h
+0000 0001 110x xxx0 010x TMR0_CNT
+0000 0001 1100 0000 0100 #TMR0_CNT = 1c04h
+0000 0001 110x xxx0 011x TMR0_RA
+0000 0001 1100 0000 0110 #TMR0_RA = 1c06h
+0000 0001 110x xxx0 100x TMR0_RB
+0000 0001 1100 0000 1000 #TMR0_RB = 1c08h
+0000 0001 110x xxx0 101x TMR0_RC
+0000 0001 1100 0000 1010 #TMR0_RC = 1c0ah
+0000 0001 110x xxx0 110x TMR0_C1
+0000 0001 1100 0000 1100 #TMR0_CAP0 = 1c0ch
+0000 0001 110x xxx0 111x TMR0_C2
+0000 0001 1100 0000 1110 #TMR0_CAP1 = 1c0eh
+
+*** Timer1
+0000 0001 110x xxx1 XXXx *TIMER1
+0000 0001 110x xxx1 000x TMR1_CR
+0000 0001 1100 0001 0000 #TMR1_CR = 1c10h
+0000 0001 110x xxx1 001x TMR1_SR
+0000 0001 1100 0001 0010 #TMR1_SR = 1c12h
+0000 0001 110x xxx1 010x TMR1_CNT
+0000 0001 1100 0001 0100 #TMR1_CNT = 1c14h
+0000 0001 110x xxx1 011x TMR1_RA
+0000 0001 1100 0001 0110 #TMR1_RA = 1c16h
+0000 0001 110x xxx1 100x TMR1_RB
+0000 0001 1100 0001 1000 #TMR1_RB = 1c18h
+0000 0001 110x xxx1 101x TMR1_RC
+0000 0001 1100 0001 1010 #TMR1_RC = 1c1ah
+0000 0001 110x xxx1 110x TMR1_C1
+0000 0001 1100 0001 1100 #TMR1_CAP0 = 1c1ch
+0000 0001 110x xxx1 111x TMR1_C2
+0000 0001 1100 0001 1110 #TMR1_CAP1 = 1c1eh
+
+*** Timer2
+0000 0001 111x xxx0 XXXx *TIMER2
+0000 0001 111x xxx0 000x TMR2_CR
+0000 0001 1110 0000 0000 #TMR2_CR = 1e00h
+0000 0001 111x xxx0 001x TMR2_SR
+0000 0001 1110 0000 0010 #TMR2_SR = 1e02h
+0000 0001 111x xxx0 010x TMR2_CNT
+0000 0001 1110 0000 0100 #TMR2_CNT = 1e04h
+0000 0001 111x xxx0 011x TMR2_RA
+0000 0001 1110 0000 0110 #TMR2_RA = 1e06h
+0000 0001 111x xxx0 100x TMR2_RB
+0000 0001 1110 0000 1000 #TMR2_RB = 1e08h
+0000 0001 111x xxx0 101x TMR2_RC
+0000 0001 1110 0000 1010 #TMR2_RC = 1e0ah
+0000 0001 111x xxx0 110x TMR2_C1
+0000 0001 1110 0000 1100 #TMR2_CAP0 = 1e0ch
+0000 0001 111x xxx0 111x TMR2_C2
+0000 0001 1110 0000 1110 #TMR2_CAP1 = 1e0eh
+
+*** Timer3
+0000 0001 111x xxx1 XXXx *TIMER3
+0000 0001 111x xxx1 000x TMR3_CR
+0000 0001 1110 0001 0000 #TMR3_CR = 1e10h
+0000 0001 111x xxx1 001x TMR3_SR
+0000 0001 1110 0001 0010 #TMR3_SR = 1e12h
+0000 0001 111x xxx1 010x TMR3_CNT
+0000 0001 1110 0001 0100 #TMR3_CNT = 1e14h
+0000 0001 111x xxx1 011x TMR3_RA
+0000 0001 1110 0001 0110 #TMR3_RA = 1e16h
+0000 0001 111x xxx1 100x TMR3_RB
+0000 0001 1110 0001 1000 #TMR3_RB = 1e18h
+0000 0001 111x xxx1 101x TMR3_RC
+0000 0001 1110 0001 1010 #TMR3_RC = 1e1ah
+0000 0001 111x xxx1 110x TMR3_C1
+0000 0001 1110 0001 1100 #TMR3_CAP0 = 1e1ch
+0000 0001 111x xxx1 111x TMR3_C2
+0000 0001 1110 0001 1110 #TMR3_CAP1 = 1e1eh
+
+** SPI module
+*** SPI0
+0000 0010 000x xxxx XXXx *SPI
+0000 0010 000x xxxx 000x SPI0_CR
+0000 0010 0000 0000 0000 #SPI0_CR = 2000h
+0000 0010 000x xxxx 001x SPI0_RDR
+0000 0010 0000 0000 0010 #SPI0_RDR = 2002h
+0000 0010 000x xxxx 010x SPI0_TDR
+0000 0010 0000 0000 0100 #SPI0_TDR = 2004h
+0000 0010 000x xxxx 011x SPI0_SR
+0000 0010 0000 0000 0110 #SPI0_SR = 2006h
+
+*** SPI1
+0000 0010 000x xxxx 100x SPI1_CR
+0000 0010 0000 0000 1000 #SPI1_CR = 2008h
+0000 0010 000x xxxx 101x SPI1_RDR
+0000 0010 0000 0000 1010 #SPI1_RDR = 200ah
+0000 0010 000x xxxx 110x SPI1_TDR
+0000 0010 0000 0000 1100 #SPI1_TDR = 200ch
+0000 0010 000x xxxx 111x SPI1_SR
+0000 0010 0000 0000 1110 #SPI1_SR = 200eh
+
+** UART module
+*** UART0
+0000 0010 001x xxx0 XXXx *UART0
+0000 0010 001x xxx0 000x UART0_CR
+0000 0010 0010 0000 0000 #UART0_CR = 2200h
+0000 0010 001x xxx0 001x UART0_BCR
+0000 0010 0010 0000 0010 #UART0_BCR = 2202h
+0000 0010 001x xxx0 010x UART0_SR
+0000 0010 0010 0000 0100 #UART0_SR = 2204h
+0000 0010 001x xxx0 011x UART0_RDR
+0000 0010 0010 0000 0110 #UART0_RDR = 2206h
+0000 0010 001x xxx0 100x UART0_TDR
+0000 0010 0010 0000 1000 #UART0_TDR = 2208h
+
+*** UART1
+0000 0010 001x xxx1 XXXx *UART1
+0000 0010 001x xxx1 000x UART1_CR
+0000 0010 0010 0001 0000 #UART1_CR = 2210h
+0000 0010 001x xxx1 001x UART1_BCR
+0000 0010 0010 0001 0010 #UART1_BCR = 2212h
+0000 0010 001x xxx1 010x UART1_SR
+0000 0010 0010 0001 0100 #UART1_SR = 2214h
+0000 0010 001x xxx1 011x UART1_RDR
+0000 0010 0010 0001 0110 #UART1_RDR = 2216h
+0000 0010 001x xxx1 100x UART1_TDR
+0000 0010 0010 0001 1000 #UART1_TDR = 2218h
+
+** Interface module
+0000 0010 010x xxxx XXXx *Interf
+0000 0010 010x xxxx 000x ADC_CR
+0000 0010 0100 0000 0000 #ADC_CR = 2400h
+0000 0010 010x xxxx 001x GPIN0
+0000 0010 0100 0000 0010 #GPIN0 = 2402h
+0000 0010 010x xxxx 010x GPIN1
+0000 0010 0100 0000 0100 #GPIN1 = 2404h
+0000 0010 010x xxxx 011x GPOUT0
+0000 0010 0100 0000 0110 #GPOUT0 = 2406h
+0000 0010 010x xxxx 100x GPOUT1
+0000 0010 0100 0000 1000 #GPOUT1 = 2408h
+0000 0010 010x xxxx 101x GPOUT2
+0000 0010 0100 0000 1010 #GPOUT2 = 240ah
+0000 0010 010x xxxx 110x GPOUT3
+0000 0010 0100 0000 1100 #GPOUT3 = 240ch
+
+0000 0010 011x xxxx xxxx na
+0000 0010 100x xxxx xxxx na
+
+** I2C module
+*** I2C master
+0000 0010 101x xxxX XXXx I2C
+0000 0010 101x xxx0 000x I2CM_CR
+0000 0010 1010 0000 0000 #I2CM_CR = 2a00h
+0000 0010 101x xxx0 001x I2CM_TCFG
+0000 0010 1010 0000 0010 #I2CM_TCFG = 2a02h
+0000 0010 101x xxx0 010x I2CM_SR
+0000 0010 1010 0000 0100 #I2CM_SR = 2a04h
+0000 0010 101x xxx0 011x I2CM_WCR
+0000 0010 1010 0000 0110 #I2CM_WCR = 2a06h
+0000 0010 101x xxx0 100x I2CM_TDR_ST
+0000 0010 1010 0000 1000 #I2CM_TDR_ST = 2a08h
+0000 0010 101x xxx0 101x I2CM_TDR
+0000 0010 1010 0000 1010 #I2CM_TDR = 2a0ah
+0000 0010 101x xxx0 110x I2CM_TDR_SP
+0000 0010 1010 0000 1100 #I2CM_TDR_SP = 2a0ch
+0000 0010 101x xxx0 111x I2CM_RDR
+0000 0010 1010 0000 1110 #I2CM_RDR = 2a0eh
+
+*** I2C slave
+0000 0010 101x xxx1 000x I2CS_CR
+0000 0010 1010 0001 0000 #I2CS_CR = 2a10h
+0000 0010 101x xxx1 001x I2CS_SR
+0000 0010 1010 0001 0010 #I2CS_SR = 2a12h
+0000 0010 101x xxx1 010x I2CS_TDR
+0000 0010 1010 0001 0100 #I2CS_TDR = 2a14h
+0000 0010 101x xxx1 011x I2CS_RDR
+0000 0010 1010 0001 0110 #I2CS_RDR = 2a16h
+
+0000 0010 110x xxxx xxxx na
+0000 0010 111x xxxx xxxx na
+
+** ROM
+0000 0011 xxxx xxxx xxxx ROM
+0000 0011 0000 0000 0000 #ROMStart = 3000h
+                         #ROMSize = 0800h
+
+** SRAM (3x 8ki-words = 24ki-words = 48 kiB
+0000 01xx xxxx xxxx xxxx SRAM0
+0000 0100 0000 0000 0000 #RAMStart = 4000h
+                         #RAMSize = c000h
+0000 10xx xxxx xxxx xxxx SRAM1
+0000 11xx xxxx xxxx xxxx SRAM2
+0001 00xx xxxx xxxx xxxx SRAM3 ;not fabbed, but used in addr decoder
+0001 01xx xxxx xxxx xxxx SRAM4 ;not fabbed, but used in addr decoder
+0001 10xx xxxx xxxx xxxx SRAM5 ;not fabbed, but used in addr decoder
+