1. 程式人生 > >Lnux裝置驅動開發——2.瞭解Exynos4412晶片

Lnux裝置驅動開發——2.瞭解Exynos4412晶片

二、瞭解Exynos4412晶片

瞭解一款晶片,最好的方法就是去看官方的晶片手冊,這裡大概瀏覽了晶片手冊

1Overview 瞭解晶片基本資源:

首先我們需要了解4412有哪些基本的資源:

Exynos 4412處理器是Cortex-A9 Quad(四核),主屏為1.4G每核,帶內部有:256KB RAM空間,64K ROM空間,它的資源包括:DRAM控制器、NADN FLASH控制器、內部RAM控制器、SROM 控制器等。

晶片集成了很多硬體外設(介面):

TFT 24-bit true color LCD controller, (24位真彩LCD控制器)

Camera Interface, (攝像頭介面)

 MIPI DSI, 

CSI-2, 

System Manager for power management,  (電源管理)

embedded GPS and GLONASS, (嵌入GPS和全球定位系統)

MIPI slimbus interface, MIPI HSI, four UARTs, 

24-channel DMA, (24通道的DMA)

Timers, (定時器)

General I/O Ports, (通用IO口)

three I2S, S/PDIF,  (I2S和S/PDIF音訊介面)

eight IIC-BUS interface, (8個I2C匯流排介面)

three HS-SPI,  (3個SPI介面)

USB Host 2.0, (USB主機2.0介面)

 USB 2.0 Device operating at high speed (480Mbps),  (USB高速模式)

two USB HSIC,(2個USB 高速IC支援介面)

four SD Host and high-speed Multimedia Card Interface, (4個SD卡和多媒體卡介面)

Chip to Chip interface, 

and four PLLs for clock generation

3章 Memory Map(記憶體對映)


由圖片可以看出,晶片自帶ROMRAM的地址空間,大小為分貝為

iROM:64K   iRAM:256K

對於我們的高階晶片,內部iRAM都是很小的,需要外部擴充套件記憶體。同樣,我們可以看出外擴記憶體的地址空間基地址是0x40000000,Memory of Dynamic Memory Controller (DMC)-0 和 Memory of DMC-1 一共可擴張3GB記憶體空間。

5章 啟動流程:Booting Sequence

Exynos 4412支援的啟動方式有:NAND FLASHSD/MMC eMMCUSBdevice,哪種啟動方式由硬體OM引腳決定。

我們前面講過系統由iROM程式(BL0),BL1BL2(BL表示bootloaderOS組成,下面我們講解iROM(BL0)、BL1BL2的功能、並分析系統啟動流程:

iROM(BL0):三星公司寫的,晶片內部固化的程式碼,直接在iROM中執行。

BL1(First boot loader): 晶片相關程式碼,存在外部裝置。(自己寫或用三星的,三星公司的BL1固定為8KB

BL2(Second boot loader):平臺相關程式碼,存在外部裝置。BL2最核心的功能:初始化外部擴充套件的ROMRAM對應的控制器,堆疊設定,複製OS到外部擴充套件的DRAM中,跳轉到OS執行。

BL2程式碼一般是bootloader的前14KB-4B 程式碼,所以我們使用三星公司提供的sd_fuse/來將uboot14K-4製作成 BL2。也就是說,如果uboot程式碼超過14K(正常都超過),程式碼的前14K也就必須具有BL2的功能——把程式碼搬到DDR3上執行!如果程式碼小於14K(比如自己寫的裸機程式),則可以由BL1載入執行,比如我們可以將裸機程式碼直接當成是bootloader來執行。

系統啟動流程:

1.復位,iROM中直接執行iROM程式:初始化時鐘、棧等必要裝置。

2.iROM程式讀取OM引腳判斷啟動方式(SD or eMMC),初始化相應的啟動控制器。

3.從相應的相應的啟動裝置中讀取BL1程式碼到內部SRAM,再對BL1完整性檢測,檢測通過跳到BL1執行。

4.BL1重新配置時鐘,從啟動裝置讀取BL2程式碼到內部SRAM,再對BL2完整性檢測,檢測通過跳到BL2執行。

5.BL2初始化DRAM控制器,讓外部擴充套件的DDR3晶片可以工作。

6.DDR3晶片正常工作後,重新設定棧到外部DDR3中,然後複製OSDDR3(如果我們使用uboot,一般是複製ubootDDR)

7.對OS映像完整性進行檢測,通過就跳到OS程式碼執行。

注:參考E:\driver\Android_Exynos4412_iROM_Secure_Booting_Guide_Ver.1.00.00.pdf  Exynos4212 iROM Booting Guide


6章、General Purpose Input/Output (GPIO) Control (通用GPIO控制器)

由手冊圖,我們便了解GPIO管腳的命名規則,通用GPIO最基本的離不開3個暫存器: GPIO功能暫存器:選擇GPIO管腳的功能,如輸入、輸出、外設(LCD、I2C等) GPIO資料暫存器: 設定/讀取管腳資料,是0或1 GPIO上拉下拉暫存器:配置管腳上拉、下拉功能 對應是XXXCON、XXXDAT、XXXUPD。