二、了解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的位址空間,大小為分貝為iROM:64K iRAM:256K
對于我們的高端晶片,内部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
第6章、General Purpose Input/Output (GPIO) Control (通用GPIO控制器)
由手冊圖,我們便了解GPIO管腳的命名規則,通用GPIO最基本的離不開3個寄存器: GPIO功能寄存器:選擇GPIO管腳的功能,如輸入、輸出、外設(LCD、I2C等) GPIO資料寄存器: 設定/讀取管腳資料,是0或1 GPIO上拉下拉寄存器:配置管腳上拉、下拉功能 對應是XXXCON、XXXDAT、XXXUPD。