Lnux裝置驅動開發——2.瞭解Exynos4412晶片
二、瞭解Exynos4412晶片
瞭解一款晶片,最好的方法就是去看官方的晶片手冊,這裡大概瀏覽了晶片手冊第1章Overview 瞭解晶片基本資源:
首先我們需要了解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(記憶體對映)
由圖片可以看出,晶片自帶ROM和RAM的地址空間,大小為分貝為
對於我們的高階晶片,內部iRAM都是很小的,需要外部擴充套件記憶體。同樣,我們可以看出外擴記憶體的地址空間基地址是0x40000000,Memory of Dynamic Memory Controller (DMC)-0 和 Memory of DMC-1 一共可擴張3GB記憶體空間。
第5章 啟動流程:Booting Sequence
Exynos 4412支援的啟動方式有:NAND FLASH、SD/MMC eMMC、USBdevice,哪種啟動方式由硬體OM引腳決定。
我們前面講過系統由iROM程式(BL0),BL1,BL2(BL表示bootloader),OS組成,下面我們講解iROM(BL0)、BL1、BL2的功能、並分析系統啟動流程:
iROM(BL0):三星公司寫的,晶片內部固化的程式碼,直接在iROM中執行。
BL1(First boot loader): 晶片相關程式碼,存在外部裝置。(自己寫或用三星的,三星公司的BL1固定為8KB)
BL2(Second boot loader):平臺相關程式碼,存在外部裝置。BL2最核心的功能:初始化外部擴充套件的ROM、RAM對應的控制器,堆疊設定,複製OS到外部擴充套件的DRAM中,跳轉到OS執行。
BL2程式碼一般是bootloader的前14KB-4B 程式碼,所以我們使用三星公司提供的sd_fuse/來將uboot前14K-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中,然後複製OS到DDR3中。(如果我們使用uboot,一般是複製uboot到DDR中)
7.對OS映像完整性進行檢測,通過就跳到OS程式碼執行。
注:參考E:\driver\Android_Exynos4412_iROM_Secure_Booting_Guide_Ver.1.00.00.pdf Exynos4212 iROM Booting Guide