S3C2416裸機(jī)開(kāi)發(fā)系列一_裸機(jī)開(kāi)發(fā)環(huán)境以及啟動(dòng)模式
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1. S3C2416概述
S3C2416是低功耗、高性能、低成本的SAMSUNG ARM9(ARM926EJ)處理器,目前三星已停止生產(chǎn)S3C2440, S3C2416具有更高的性能,以及更低的價(jià)格,是S3C2440、S3C2410等處理器的完美替代者。相比S3C2440,S3C2416采用了雙總線(xiàn)架構(gòu),主頻也可穩(wěn)定達(dá)到533M,內(nèi)存接口也支持DDR/DDR2等,具有2D圖形加速器,支持MLC nand flash,支持SD卡啟動(dòng)。尤其是支持SD卡啟動(dòng),使之代碼調(diào)試,燒錄變得極其簡(jiǎn)單,無(wú)需任何的代碼燒錄設(shè)備,只要把代碼燒寫(xiě)進(jìn)SD卡,設(shè)置從SD卡啟動(dòng)即可對(duì)代碼進(jìn)行更新。S3C2416的特性有以下幾點(diǎn):
1.3V 內(nèi)核供電,主頻400M, 1.8V/2.5V/3.0V/3.3V ROM/SRAM儲(chǔ)存器供電, 1.8V/2.5V mSDR/mDDR/DDR2 動(dòng)態(tài)存儲(chǔ)器供電,1.8V/2.5V/3.3V 外部I/O 供電,具備16KB 的指令緩存和16KB 的數(shù)據(jù)緩存和MMU
外部存儲(chǔ)控制器(mSDR/mDDR/DDR2控制和片選邏輯)
LCD 控制器(最大支持256K色)提供1 通道LCD 專(zhuān)用DMA
6通道DMA 并有外部請(qǐng)求引腳
4通道UART(IrDA1.0,64字節(jié)發(fā)送FIFO和64字節(jié)接收FIFO)
1通道高速SPI
1通道IIC總線(xiàn)接口(支持多主機(jī))
1通道IIS總線(xiàn)音頻編解碼器接口(24位,端口0支持5.1聲道)
AC97/PCM編解碼器接口(和IIS復(fù)用)
2通道高速M(fèi)MC/SD接口(SD主接口協(xié)議2.0版,MMC協(xié)議兼容4.2版)
2通道USB主機(jī)(兼容1.1版)/1通道USB設(shè)備(兼容2.0版)
4通道PWM 定時(shí)器和1通道內(nèi)部定時(shí)器/看門(mén)狗定時(shí)器
10通道12位ADC 和觸摸屏接口
具有日歷功能的RTC
138個(gè)通用I/O口和16通道外部中斷源
電源管理具有工作,空閑,待機(jī),深度待機(jī)和休眠模式
具有PLL片上時(shí)鐘發(fā)生器
2. S3C2416編程環(huán)境概述2.1. 代碼編譯工具S3C2416是ARM926EJ內(nèi)核,使用armv5指令集,相比armv4指令集,指令只是增加了軟件斷點(diǎn)BKPT,雙字加載,存儲(chǔ)指令LDRD/STRD等。因此,只要能編譯armv4指令集(常見(jiàn)arm7/arm9芯片采用的指令版本)的編譯器都可以用來(lái)開(kāi)發(fā)S3C2416。目前流行的常用arm編譯器有IAR,Keil MDK,arm-linux-gcc等。尤其是對(duì)于嵌入式linux方面的開(kāi)發(fā),幾乎無(wú)疑選用arm-linux-gcc,但此處筆者暫時(shí)是用來(lái)作裸機(jī)方面的開(kāi)發(fā),因此選用一款windows下集成開(kāi)發(fā)環(huán)境更適合。Keil用于開(kāi)發(fā)arm的集成環(huán)境有很多稱(chēng)呼uVersion、MDK、Keil for arm等。而Keil公司已經(jīng)被ARM公司收購(gòu),因此編譯器方面選擇MDK是不錯(cuò)的選擇。
圖2.1-1 MDK集成開(kāi)發(fā)環(huán)境
2.2. 三星專(zhuān)用工具對(duì)于三星系列的cpu,三星公司開(kāi)發(fā)了兩個(gè)專(zhuān)用工具來(lái)開(kāi)發(fā)其門(mén)下的芯片。dnw.exe用來(lái)串口調(diào)試以及通過(guò)usb進(jìn)行下載,而IROM_Fusing_Tool.exe是用來(lái)燒寫(xiě)代碼到sd卡特定位置的,通過(guò)設(shè)置sd卡啟動(dòng),即可運(yùn)行sd卡里面的代碼。在沒(méi)有任何燒錄設(shè)備時(shí),這是唯一簡(jiǎn)單,省成本的代碼燒錄方式。從sd卡啟動(dòng)后可把bootloader燒寫(xiě)進(jìn)nand flash等固化存儲(chǔ)器,以后通過(guò)nand啟動(dòng)等方式運(yùn)行bootloader即可。
圖2.2-1 串口調(diào)試及usb下載工具dnw
圖2.2-2 sd卡啟動(dòng)代碼燒錄工具
3. S3C2416啟動(dòng)模式S3C2416支持多種啟動(dòng)模式,通過(guò)外部引腳OM[4:0]來(lái)決定從哪個(gè)存儲(chǔ)設(shè)備上啟動(dòng),引腳配置對(duì)應(yīng)的啟動(dòng)模式見(jiàn)下圖。目前市面上的各類(lèi)S3C2416開(kāi)發(fā)板都是參照三星smdk2416開(kāi)發(fā)板進(jìn)行開(kāi)發(fā)的。由于有了IROM啟動(dòng)以及NAND啟動(dòng),Nor flash已基本沒(méi)有用處,因?yàn)榇a一般是不會(huì)在Norflash執(zhí)行,都是要搬到RAM里執(zhí)行,不然性能無(wú)法忍受。因此,市面上的開(kāi)發(fā)板基本都是不再配置Nor flash,只配置了NAND flash。筆者此處只講解市面上S3C2416開(kāi)發(fā)板支持的兩種啟動(dòng)模式,IROM啟動(dòng)和NAND啟動(dòng)。
圖3-1 S3C2416啟動(dòng)模式配置
圖3-2 啟動(dòng)模式對(duì)應(yīng)的存儲(chǔ)器映射
3.1. IROM啟動(dòng)通過(guò)設(shè)置[OM4, OM3, OM2, OM1, OM0] = [0,1,0,0,x],上電復(fù)位即可從IROM啟動(dòng),IROM啟動(dòng)即先執(zhí)行芯片固化代碼(在0x0位置處),固化代碼先進(jìn)行初始化芯片,如設(shè)置系統(tǒng)時(shí)鐘,初始化堆棧等,隨后會(huì)再根據(jù)相關(guān)引腳的配置([GPC7:GPC5]),確定啟動(dòng)設(shè)備是SD/MMC還是NAND,對(duì)于IROM NAND啟動(dòng),固化代碼從[GPC7:GPC5]的引腳配置狀態(tài)得出NANDFLASH的信息,如頁(yè)大小,地址周期多少。之后固化代碼再?gòu)腘ANDFLASH的0x0地址偏移出讀出8k的代碼到內(nèi)部RAM地址0x40000000處,這塊8k的IRAM就被叫做Steppingstone。因?yàn)檫@8k的IRAM代碼往往需要進(jìn)一步引導(dǎo)用戶(hù)的其它代碼到RAM運(yùn)行。對(duì)于IROM SD/MMC啟動(dòng),固化代碼會(huì)直接從SD/MMC卡的一個(gè)特殊位置讀出8k的代碼到0x40000000處的Steppingstone。復(fù)制完代碼到Steppingstone后,固化代碼跳轉(zhuǎn)到0x40000000處開(kāi)始執(zhí)行用戶(hù)的代碼。IROM啟動(dòng)的更多細(xì)節(jié),筆者已在文章的最后給出相關(guān)的參考文檔S3C2450_51_16_IROM_ApplicationNote.pdf。
圖3.1-1 IROM啟動(dòng)存儲(chǔ)設(shè)備配置
3.2. NAND啟動(dòng)首先要先確定板載NAND FLASH的信息,如地址周期,頁(yè)大小等,然后再根據(jù)NAND FLASH的信息配置相應(yīng)的[OM4:OM0],上電復(fù)位即可從NAND啟動(dòng)。NAND啟動(dòng)模式下,NAND控制器會(huì)自動(dòng)從NAND FLASH 0x0地址偏移處拷貝8k的代碼到內(nèi)部RAM地址0x0處,用戶(hù)代碼從0x0處開(kāi)始執(zhí)行。從Samsung給出的S3C2416數(shù)據(jù)手冊(cè)來(lái)看,較新的數(shù)據(jù)手冊(cè)都已經(jīng)把NAND啟動(dòng)[OM4:OM0]引腳配置以及內(nèi)存映射信息都刪除了,因此Samsung是推薦用戶(hù)從IROM NAND啟動(dòng)的,因?yàn)檫@樣用戶(hù)代碼可以統(tǒng)一處理IROM SD/MMC或IROM/NAND,而不用考慮過(guò)多的啟動(dòng)模式。
附注:以下資料筆者認(rèn)為是與本文相關(guān)的,可供學(xué)習(xí)與參考,點(diǎn)擊下面鏈接即可下載。
a. S3C2416X_UM_Rev0.01_20080412.pdf,S3C2416數(shù)據(jù)手冊(cè),開(kāi)發(fā)必備
b. S3C2450_51_16_IROM_ApplicationNote.pdf,S3C2416及其同類(lèi)芯片的IROM啟動(dòng)流程詳述
c. dnw.exe,三星cpu串口調(diào)試及usb下載工具
d. IROM_Fusing_Tool.exe,三星cpu從sd卡代碼燒寫(xiě)工具,用于從sd卡啟動(dòng)
http://pan.baidu.com/s/1kTzAVD9