S5PV210启动过程
常用器件特性
內(nèi)存:
SRAM 靜態(tài)內(nèi)存 特點(diǎn)就是容量小、價(jià)格高,優(yōu)點(diǎn)是不需要軟件初始化直接上電就能用
DRAM 動(dòng)態(tài)內(nèi)存 特點(diǎn)就是容量大、價(jià)格低,缺點(diǎn)就是上電后不能直接使用,需要軟件初始化后才可以使用。
單片機(jī)中:內(nèi)存需求量小,而且希望開發(fā)盡量簡單,適合全部用SRAM
嵌入式系統(tǒng):內(nèi)存需求量大,而且沒有NorFlash等可啟動(dòng)介質(zhì)
PC機(jī): 內(nèi)存需求量大,而且軟件復(fù)雜,不在乎DRAM的初始化開銷,適合全部用DRAM
外存:
NorFlash:特點(diǎn)是容量小,價(jià)格高,優(yōu)點(diǎn)是可以和CPU直接總線式相連,CPU上電后可以直接讀取,所以一般用作啟動(dòng)介質(zhì)。
NandFlash(跟硬盤一樣):特點(diǎn)是容量大,價(jià)格低,缺點(diǎn)是不能總線式訪問,也就是說不能上電CPU直接讀取,需要CPU先運(yùn)行一些初始化軟件,然后通過時(shí)序接口讀寫。
所以一般PC機(jī)都是:很小容量的BIOS(NorFlash)+ 很大容量的硬盤(類似于NandFlash)+ 大容量的DRAM
一般的單片機(jī): 很小容量的NorFlash + 很小容量的SRAM
嵌入式系統(tǒng):因?yàn)镹orFlash很貴,所以現(xiàn)在很多嵌入式系統(tǒng)傾向于不用NorFlash,
直接用:外接的大容量Nand + 外接大容量DRAM + SoC內(nèi)置SRAM
S5PV210使用的啟動(dòng)方式是:外接的大容量Nand + 外接大容量DRAM + SoC內(nèi)置SRAM
?
1.大體的啟動(dòng)過程如下:
第零步:設(shè)置OM PIN引腳,就可以選擇啟動(dòng)方式了,譬如從SD卡啟動(dòng),emmc啟動(dòng),norflash啟動(dòng)等等,我們這里假設(shè)從SD卡啟動(dòng)。
第一步:IROM內(nèi)的代碼(BL0)對(duì)SOC進(jìn)行初步的初始化工作
第二步:從SD卡中復(fù)制BL1到SOC內(nèi)的SRAM,執(zhí)行BL1內(nèi)的代碼
第三步:從SD卡中復(fù)制BL2到SOC內(nèi)的SRAM,執(zhí)行BL2內(nèi)的代碼(作用:初始化SDRAM控制器,那樣我們就可以用DDR內(nèi)存了)
第四步:把我們的操作系統(tǒng)OS復(fù)制到SDRAM中
第五步:我們?cè)贐L2中進(jìn)行一個(gè)長跳轉(zhuǎn),跳轉(zhuǎn)到SDRAM中去執(zhí)行程序,這樣我們整個(gè)啟動(dòng)過程就完成了。
2.大體流程的具體實(shí)現(xiàn)過程
(0)設(shè)置OM PIN引腳,選擇啟動(dòng)的介質(zhì)(圖為部分截取)
從圖上我們可以看到,只要我們的OM[0-5]設(shè)置為:100000或000000(1代表的就是供電,0代表接地)的時(shí)候,我們就選擇了essd介質(zhì)的啟動(dòng)方式
當(dāng)我們OM[0-5]設(shè)置為:001100或者101100的時(shí)候,我們選擇的就是SD/MMC的模式。這就看你需要什么啟動(dòng)方式了。
我的開發(fā)板(九鼎X210)支持SD卡啟動(dòng)和USB啟動(dòng):
SD卡啟動(dòng):001100或者101100
USB啟動(dòng):1XXXX1(x表示沒有)
所以,我們?cè)谇袚Q的時(shí)候,只需要在SD卡的基礎(chǔ)上進(jìn)行改動(dòng)(因?yàn)镺M[1-4]位為什么并不影響USB啟動(dòng)的),撥動(dòng)引腳OM5就可以了,OM為1就是USB啟動(dòng),OM為0就是SD卡啟動(dòng)。
(1)IROM代碼所做的工作
第一步:關(guān)看門狗
第二步:初始化iCache
第三步:初始化棧區(qū)域
第四步:初始化堆區(qū)域
第五步:初始化塊設(shè)備拷貝功能
第六步:初始化PLL并設(shè)置系統(tǒng)時(shí)鐘
第七步:檢查OM PIN引腳,看看從哪種介質(zhì)(如SD/MMC)中復(fù)制BL1到SRAM,這里就和第零步的工作相照應(yīng)了,選擇了啟動(dòng)方式了
第八步:檢查BL1中的checksum,如果checksum失敗,就嘗試以第二種啟動(dòng)方式啟動(dòng)(SD/MMC 通道2)
第九步:檢查是不是安全模式啟動(dòng)(這步比較少應(yīng)用)
第十步:跳到BL1的起始地址去執(zhí)行程序
以上就是IROM所做的工作。具體的圖示如下:
從上圖我們可以看到,我們的啟動(dòng)凡事可以有6種,找到啟動(dòng)方式后,就從那介質(zhì)中復(fù)制BL1到SDRAM中,然后執(zhí)行BL1,,執(zhí)行完BL1之后,查看它是不是喚醒狀態(tài),不是就載入BL2到SRAM中,然后就不是安全模式,就跳轉(zhuǎn)到BL2執(zhí)行,然后判斷是不是喚醒狀態(tài),不是就開始初始化DRAM了,然后就把操作系統(tǒng)OS載入到DRAM中,之后就跳轉(zhuǎn)到DRAM中去了,然后就是操作系統(tǒng)啟動(dòng)了。(這里就是后面步驟的示意圖了)
第二種情況:我們的第一種啟動(dòng)方式不成功,進(jìn)入到第二種啟動(dòng)方式去執(zhí)行程序的過程。
從上圖我們可以看到:第一種啟動(dòng)方式失敗之后,就會(huì)跳轉(zhuǎn)到第二種啟動(dòng)方式,然后檢查checkSum(校驗(yàn)和),如果正常的話,就跳轉(zhuǎn)到從第二種啟動(dòng)介質(zhì)里面復(fù)制過來的BL1去執(zhí)行,如果不正常,就跳轉(zhuǎn)到了串口啟動(dòng)的方式去執(zhí)行,串口成功的話,那就跳轉(zhuǎn)到串口上傳過來的BL1去執(zhí)行,還是不行的話,就跳轉(zhuǎn)到USB啟動(dòng)的方式去執(zhí)行,可以就跳轉(zhuǎn)到USB下載下來的BL1執(zhí)行,還是不行的話就是啟動(dòng)失敗了。
最后:我們的文檔還涉及了一些其他的具體的內(nèi)容,如:USB/UART啟動(dòng)模式(注意:UART模式啟動(dòng)的時(shí)候,只是支持UART2這個(gè)接口,我們不要接錯(cuò)了)的設(shè)置的一些內(nèi)容,還有SRAM內(nèi)存映射的區(qū)域,還有從SD卡等內(nèi)存介質(zhì)中復(fù)制BL1到SRAM中需要用到的一些函數(shù),還有一些時(shí)鐘設(shè)置的內(nèi)容。
因?yàn)檫M(jìn)行裸機(jī)實(shí)驗(yàn)的時(shí)候,需要用到USB啟動(dòng)的方式,還有后面的SRAM內(nèi)存映射的一些內(nèi)容,所以下面就順帶介紹一下這些內(nèi)容。
首先是:USB啟動(dòng)模式
1.我們可以使用DNW工具,看看我們的USB是否接好(看到上面的USB:OK字樣)
2.設(shè)置好具體的值:波特率是115200,你用的是哪個(gè)COM端口,就設(shè)哪個(gè)COM端口,具體的COM端口可以看右鍵我的電腦->管理->設(shè)備管理器->usbdnw處
3.下載具體的程序就好了
注意:因?yàn)槲覀兊腢ART/USB啟動(dòng)模式都不需要頭校驗(yàn)的,所以,我們的下載地址是:0xD0020000,像SD卡那些的,需要頭校驗(yàn)和的,他們的下載地址就是:0xD0020010
接下來就是:SRAM的內(nèi)存映像了
看著這個(gè)圖:我們就知道了我們的下載地址為什么是0xD0020000和0xD0020010了,因?yàn)镾RAM的頭地址就是這些。
Exception Vector Table:中斷異常向量表
Heap:堆,申請(qǐng)堆的時(shí)候,在這里申請(qǐng)
Global Variable:全局變量放在這里
IRQ stack:中斷模式下的棧
SVC stack:SVC模式下的棧,我們平時(shí)就是SVC模式下的,所以我們說的設(shè)置棧的時(shí)候,就是設(shè)置這里的棧
?
bootloader、Kernel、filesystem等在nand中的分布
S5PV210的啟動(dòng)方式很多種,第一次學(xué)習(xí)的理解就這么多,做個(gè)記錄,相信隨著學(xué)習(xí)的深入理解也會(huì)不一樣,到時(shí)候再回來更新。
總結(jié)
以上是生活随笔為你收集整理的S5PV210启动过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RS232
- 下一篇: 180页PPT,讲解人工智能技术与产业发