ARM總線架構(S3C2440)


 S3C2440集成了豐富了外設控制器(LCD控制器、USB Device控制器、USB Host控制器、NAND FLASH控制器、I2C控制器、SPI控制器等)。要控制這些外設就要設置相應控制器的寄存器以產生相應的驅動時序。學習S3C2440,主要是如何配置寄存器。下面是S3C2440特殊功能寄存器地址:

復制代碼
#define rBANKCON0  (*(volatileunsigned *)0x48000004) //Boot ROM control
#define rBANKCON1  (*(volatileunsigned *)0x48000008) //BANK1 control
#define rBANKCON2  (*(volatileunsigned *)0x4800000c) //BANK2 cControl

#define rBANKCON0  (*(volatileunsigned *)0x48000004) //Boot ROM control

#define rBANKCON1  (*(volatileunsigned *)0x48000008) //BANK1 control

#define rBANKCON2  (*(volatileunsigned *)0x4800000c) //BANK2 cControl
復制代碼

 

 

圖1 內存映射

       下面就來詳細分析。

圖2 S3C2440結構框圖

    先介紹一下AMBA(Advanced Micro-Controller Bus Architecture)是由ARM Limited公司推出的On-Chip Bus片上總線規范,是目前芯片總線的主流標准。一開始AMBA 1.0只有ASB和APB,為了節省面積,這時候的總線協定都是采用3態的總線,到后來的AMBA 2.0版本,新增了AHB總線,共定義了3組總線:高性能總線(AdvancedHigh Performance Bus,AHB)、系統總線(AdvancedSystem Bus,ASB)和外設總線(Advanced PeripheralBus,APB)。

圖3 典型的基於AMBA總線的系統

    關於AMBA總線的更多的內容可上網查看,中文的資料都有很多。由圖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個主設備。當AHB總線上的主設備讀寫從設備時,發出的地址經過AHB總線的譯碼器(通過內存映射表) 產生該地址所對應從設備的選擇信號,選中從設備;這樣就可以對從設備進行讀寫啦。

圖4 AHB譯碼器

圖5 譯碼器的具體實現代碼

    譯碼器的內存映射表具有相對的獨立性。如果AHB總線上的從設備發生了變化,必須對內存映射表進行修改以確保每個地址都對應正確的從設備。下面是內存映射表的一個例子。

圖6 內存映射表

    使用了兩種內存映射表:正常工作下的內存映射表和重新啟動時的內存映射表。在正常工作時,微處理器的從設備包括內部RAM、外部RAM、外部ROM和AHB/APB橋;當系統重新啟動時,系統的內存映射不包括內部RAM,而是將0x0000—0000至0x0000—03FF的內存地址段映射為nash。這個部分包含系統的啟動和初始化代碼。當系統啟動完成初始化后,AMBA總線將產生一個Remap信號,送入譯碼器,將譯碼器的當前內存映射表改為正常工作狀態下的內存映射表。

下面是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

    總結:AHB總線上的譯碼器根據地址產生相應的片選信號,選中對應的設備。AHB總線上有一個AHB to APB 橋,橋是AHB總線的從設備,是APB總線上唯一的主設備。橋是一個協議轉換器(AHB協議到APB協議的轉換),它還要完成APB總線的地址譯碼工作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM