對S3C2440特殊功能寄存器地址的深入挖掘
下面是S3C2440特殊功能寄存器地址:
本文引用地址:http://2s4d.com/article/201611/320029.htm#define rBANKCON0 (*(volatileunsigned *)0x48000004) //Boot ROM control
#define rBANKCON1 (*(volatileunsigned *)0x48000008) //BANK1 control
#define rBANKCON2 (*(volatileunsigned *)0x4800000c) //BANK2 cControl
……
在學(xué)習(xí)的過程我一直在想這些地址為什么是這樣的,想起來一次就在網(wǎng)上找資料,但每次都沒有得到很好的結(jié)果。最近在學(xué)習(xí)AMBA(AdvancedMicrocontroller Bus Architecture)的時候終于解開這個謎團了,哈哈?。?!
先看下面這個圖,看完后估計就知道了一半啦。
圖1 內(nèi)存映射
下面就來詳細分析。
圖2 S3C2440結(jié)構(gòu)框圖
先介紹一下AMBA。AMBA(Advanced Micro-Controller Bus Architecture)是由ARM Limited公司推出的On-Chip Bus片上總線規(guī)范,是目前芯片總線的主流標準。一開始AMBA 1.0只有ASB和APB,為了節(jié)省面積,這時候的總線協(xié)定都是采用3態(tài)的總線,到后來的AMBA 2.0版本,新增了AHB總線,共定義了3組總線:高性能總線(AdvancedHigh Performance Bus,AHB)、系統(tǒng)總線(AdvancedSystem Bus,ASB)和外設(shè)總線(Advanced PeripheralBus,APB)。
圖3 典型的基于AMBA總線的系統(tǒng)
關(guān)于AMBA總線的更多的內(nèi)容可上網(wǎng)查看,中文的資料都有很多。由圖2可知AHB總線上掛載了LCD控制器、中斷控制器、USB Host控制器、電源管理、NAND控制器、Camera控制器、存儲器控制器以及AHB to APB橋和DMA控制器。APB總線上掛載了UART控制器、I2C控制器、USB Device控制器、I3S控制器SDI/MMC控制器、GPIO、Watchdog/定時器、RTC、ADC、SPI、AC97。下面這段話是摘自S3C2440芯片手冊:
The S3C2440A holds 13 bus masters. They include DRAMrefresh controller, LCD_DMA, CAMIF DMA, DMA0,DMA1, DMA2, DMA3, USB_HOST_DMA,EXT_BUS_MASTER, Test interface controller (TIC) and ARM920T.
S3C2440A有13個主設(shè)備。當(dāng)AHB總線上的主設(shè)備讀寫從設(shè)備時,發(fā)出的地址經(jīng)過AHB總線的譯碼器(通過內(nèi)存映射表) 產(chǎn)生該地址所對應(yīng)從設(shè)備的選擇信號,選中從設(shè)備;這樣就可以對從設(shè)備進行讀寫啦。
圖4 AHB譯碼器
圖5 譯碼器的具體實現(xiàn)代碼
譯碼器的內(nèi)存映射表具有相對的獨立性。如果AHB總線上的從設(shè)備發(fā)生了變化,必須對內(nèi)存映射表進行修改以確保每個地址都對應(yīng)正確的從設(shè)備。下面是內(nèi)存映射表的一個例子。
圖6 內(nèi)存映射表
使用了兩種內(nèi)存映射表:正常工作下的內(nèi)存映射表和重新啟動時的內(nèi)存映射表。在正常工作時,微處理器的從設(shè)備包括內(nèi)部RAM、外部RAM、外部ROM和AHB/APB橋;當(dāng)系統(tǒng)重新啟動時,系統(tǒng)的內(nèi)存映射不包括內(nèi)部RAM,而是將0x0000—0000至0x0000—03FF的內(nèi)存地址段映射為nash。這個部分包含系統(tǒng)的啟動和初始化代碼。當(dāng)系統(tǒng)啟動完成初始化后,AMBA總線將產(chǎn)生一個Remap信號,送入譯碼器,將譯碼器的當(dāng)前內(nèi)存映射表改為正常工作狀態(tài)下的內(nèi)存映射表。
下面是S3C2440的地址映射
AHB Memory Map
Memory control 0x48000000 0x48000030
USB HOST 0x49000000 0x49000058
INTERRUPT 0x4a000000 0x4a00001c
DMA 0x4b000000 0x4b0000e0
CLOCK & POWER MANAGEMENT 0x4c000000 0x4c000018
*LCD CONTROLLER 0x4d000000 0x4d000060 0x4d000400(Palettestart address)
Nand Flash 0x4E000000 0x4E00003C
Camera Interface 0x4F000000 0x4F0000A0
APB Memory Map
UART0 0x50000000 0x50000028
UART1 0x50004000 0x50004028
UART2 0x50008000 0x50008028
PWM TIMER 0x51000000 0x51000040
USB DEVICE 0x52000140 0x5200026c
WATCH DOG TIMER 0x53000000 0x53000008
IIC 0x54000000 0x54000010
IIS 0x55000000 0x55000010
AC97 0x5b000000 0x5b00001C
I/O PORT
- A 0x560000000x56000004
- B 0x560000040x56000018
- C 0x560000200x56000028
- D 0x560000300x56000038
- E 0x560000400x56000048
- F 0x560000500x56000058
- G 0x560000600x56000068
- H 0x560000700x56000078
- J 0x560000d0 0x560000d8
- other 0x56000080 0x560000cc
RTC 0x57000040 0x57000088
ADC 0x58000000 0x58000014
SPI 0x59000000 0x59000034
SD Interface 0x5a0000000x5a000040
總結(jié):AHB總線上的譯碼器根據(jù)地址產(chǎn)生相應(yīng)的片選信號,選中對應(yīng)的設(shè)備。AHB總線上有一個AHB to APB 橋,橋是AHB總線的從設(shè)備,是APB總線上唯一的主設(shè)備。橋是一個協(xié)議轉(zhuǎn)換器(AHB協(xié)議到APB協(xié)議的轉(zhuǎn)換),它還要完成APB總線的地址譯碼工作。
評論