移植u-boot-2012-10到tiny210v2一-----基本芯片介紹和啟動(dòng)流程介紹_第1頁
移植u-boot-2012-10到tiny210v2一-----基本芯片介紹和啟動(dòng)流程介紹_第2頁
移植u-boot-2012-10到tiny210v2一-----基本芯片介紹和啟動(dòng)流程介紹_第3頁
移植u-boot-2012-10到tiny210v2一-----基本芯片介紹和啟動(dòng)流程介紹_第4頁
移植u-boot-2012-10到tiny210v2一-----基本芯片介紹和啟動(dòng)流程介紹_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、移植u-boot-2012-10到tiny210v2(一) -基本芯片介紹和啟動(dòng)流程介紹軟硬件環(huán)境宿主機(jī)系統(tǒng):Fedora10U-boot版本:U-boot-2012-10板子芯片:S5PV210(Contex-A8),512MDDR2,512M SLC Nand交叉編譯器:arm-linux-gcc-4.5.1-v6-vfp-20120301(支持armv7指令系統(tǒng))1.Tiny210買回來好幾個(gè)星期了, 一直沒有很認(rèn)真的弄他,偶爾看看友善之臂提供的裸機(jī)程序。本 來買板子回來是要跑android系統(tǒng)的,還沒有真正跑到那 步。本來以為友善之臂會(huì)和mini2440一樣提供U-boot源碼,買回來

2、發(fā)現(xiàn)啥都木有,只有一個(gè)superBoot。superBoot確實(shí) 很美,可是不是我們自己的,總覺得有點(diǎn)遺憾。所以不想用superBoot來做Bootloader,想自己移植U-boot。搜索了網(wǎng)上 的一些帖子和博客。對(duì)s5pv210的u-boot移植有兩個(gè)人是連 篇寫的,寫得也不錯(cuò)。 一個(gè)是在別人移植到mini210的u-boot基礎(chǔ)上改的,一個(gè)是移植到qt210的。第一個(gè)是在別人修改 的源碼上修改的,沒有了在原始代碼上移植的滋味,并且我 試過,我這邊沒法編譯,悲催!第二個(gè)是在QT210上的,雖然芯片是一樣的,可是按照他的步驟第一步我的程序就跑不寫在前面的話起來。哎!算了吧,還是靠自己吧!移植

3、之前首先要準(zhǔn)備幾樣?xùn)|西,下面列個(gè)清單:U-boot-2012-10的源代碼,可以自行去http:/ftp.denx.de/pub/u-boot/下載 arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz交叉編譯器,友善 之臂的光盤有提供S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf這個(gè)是S5PV210的啟動(dòng) 流程文檔,友善的光盤有提供在光 盤的No0S(裸機(jī)程序preference下S5PV210_UM_REV1.1.pdf,S5PV210的datasheet友善光盤 有提供s5pv210芯片地址的頭文件,m

4、kv210_image.c到我spl的時(shí)候需要使用到。這兩個(gè)文件可以在友善之臂供的光盤中找到,具體位置在No 0S(裸機(jī)程序)src6.sdramBL1中就有這兩個(gè)文件4G的可用的SD卡和一塊tiny210開發(fā)板。 在這一篇中不 會(huì)涉及到U-boot的移植,只是做U-boot移植之前的一些基 本前提知識(shí)的介紹, 這樣子我們進(jìn)入U(xiǎn)-boot的移植才會(huì)明白每一步是怎么走的,要不你總是拷貝別人的修改的代碼來編S5PV210是三星的Contex-A8系列的一塊芯片, 屬于ARMV7架構(gòu),如果你想了解Context-A8是啥,那你就得來了解ARM的發(fā)展歷程。說起ARM那是一個(gè)大名鼎鼎的家伙,可能你 們覺

5、得手s5pv210.h和mkv210_image.c,s5pv210.h是定義了們制作準(zhǔn)備一張譯,就算能跑起來也不是你的。2.S5PV210介紹里拿著Iphone和IPad有多高級(jí),可是別忘了,你 拿著的這些東西的處理器都是ARM架構(gòu)的,就算是Iphone5使用的自己的不標(biāo)準(zhǔn)的ARM架構(gòu)的A6,可是還是ARM沾邊的,可以說是盜版的ARM,至于三星,HTC,那就更加不用說了,都是用高通的ARM架構(gòu)芯片比較多。2011年的額,簡直就比Intel牛多了! 不過兩個(gè)不同的市場, 沒什么可 比性。聽說最近Intel也在向移動(dòng)設(shè)備靠近,不過被Android搞個(gè)半死, 因?yàn)锳ndroid開始設(shè)計(jì)就沒把Int

6、el納入它使用的 芯片范疇,對(duì)Intel是各種不支持, 并且Intel使用CISC指令, 功耗可想而知。對(duì)于具體的ARM發(fā)展的歷史和知識(shí),請(qǐng)自行查看網(wǎng)絡(luò)。S5PV210的datasheet中有對(duì)它的基本架構(gòu)的我們可以看出,對(duì)于S5PV210來說,除了內(nèi)部的運(yùn)算單元, 兩級(jí)高速緩存之外其他的部分都是屬于核外部件,這跟S3C2440不一樣,當(dāng)然啦,要是一樣,那就沒必要換個(gè)名字 了。并且ContextA8具有32KB的一級(jí)緩存(Cache)和512K的二級(jí)緩存,這是S3C2440沒法比的。如果你學(xué)過計(jì)算機(jī) 組成原理,那么你就知道Cache對(duì)CPU來說是多么的重要我們看到ContextA8有一個(gè)96K

7、的iRam和個(gè)64K的iRom。 這兩個(gè)東西是干嘛用的呢,iRom是拿來存 放ContextA8的啟動(dòng)BL0的,在出廠的時(shí)候由生產(chǎn)商固化在 里面,iRam是ContextA8的內(nèi)部RAM,這個(gè)才是真正意義 上的內(nèi)存,BL0會(huì)把BL1拷貝到iRam中運(yùn)行,至于什么是時(shí)候ARM在全球的移動(dòng)設(shè)備市場上占據(jù)了90%以上的份些介紹,里面有這么一幅圖從這張圖中的。BL0,BL1,下面會(huì)仔細(xì)介紹,這里不羅嗦。然后剩下的就 是memory管理接口,多媒體管理接口,電源管理接口等。我們的芯片中有4個(gè)串口,3個(gè)IIC接口,2個(gè)SPI接口,有個(gè)DSP和一個(gè)MFC還有2D,3D加速器。有四個(gè)PLL升 頻鎖相環(huán)路,用于

8、為芯片提供CPU時(shí)鐘和外設(shè)時(shí)鐘。支持MLC/SLC NAND接口和DDR2/LPDDR2接口。來看看ContextA8的Memory Map,datasheet有張圖很清楚射到了0 x0000 0000 0 x1FFF FFFF地址空間, 如果你認(rèn)真點(diǎn) 看你會(huì)發(fā)現(xiàn)在0 xD000 0000的位置還有一個(gè)IROM&IRAM,這是為啥呢?如果你看下面你就知道其 實(shí)我們的S5PV210的IROM是掛在了0 x0000 0000這里,而IRAM呢是掛在了0 xD000 0000這里的。從0 x2000 0000開 始至y 0 x7FFFFFFF是兩個(gè)DRAM,1個(gè)512M一個(gè)1G。具體

9、其他的自己可以看datasheet,可以從這里看出我們的基本的一些外設(shè)是掛在哪個(gè)位置的。接下來我們開始接觸三星給 我們提供的英文的S5PV210介紹文檔, 這個(gè)文檔給我們介紹 了iRom的基本程序和S5PV210的基本啟動(dòng)流程。3. S5PV210啟動(dòng)流程這里首先假設(shè)你知道計(jì)算機(jī)的基本知識(shí)對(duì)系統(tǒng)和bootloader一點(diǎn)認(rèn)識(shí)也沒有。這里講的都是以S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf以下簡稱SIAP)這個(gè)文檔以及S5PV210的的介紹了我們看到IROM和IRAM是映S5PV210_UM_REV1.1.pdf這個(gè)版本的datas

10、heet作為根據(jù)的。候就是一按開關(guān)就開起來了,就這么簡單!是的,就這么簡 單!可是作為一個(gè)嵌入式開發(fā)人員來說,你要是也是看到這 么個(gè)表象的話,那肯定不行的,這些表面現(xiàn)象本來就不是做 給你看的,是你要做給別人看的。所以我們必須先要知道從 我們給我們的板子一上電的瞬間開始,我們的程序是怎么跑 起來的。首先我們先來看看SIAN里面的一個(gè)圖: 對(duì)這個(gè)圖,在SIAP里面有很詳細(xì)的解析,在這個(gè)圖中我們 看以看出我們的S5PV210支持NorFlash啟動(dòng),eSSD啟動(dòng),MMC啟動(dòng),OneNand啟動(dòng)和Nand啟動(dòng)。 這里的啟動(dòng)代碼分為三個(gè)部分,第一個(gè)就是BL0,第二個(gè)就是BL1,第三個(gè)就是BL2,這里的B

11、L就是Bootloader的意思。這些標(biāo)著 的就是三星給我們的一個(gè)啟動(dòng)流程建議步驟,為啥說是建 議的步驟呢?因?yàn)槲覀兊膯?dòng)有時(shí)候不一定按照它的建議 來,不過流程是不變的, 只是代碼存放的地方要做一些調(diào)整。我們先來看看這幾個(gè)流程是怎么樣子的,如果你喜歡自己3.1板子是怎么啟動(dòng)起來的?平時(shí)我們開電腦的時(shí)看, 請(qǐng)自己自行去看SIAP,里面說得很清楚, 并且還有流程 碼是三星給我們固化好的,你想改或者想看,那么沒門了, 可是三星告訴了你它做了什么東西,我們看看三星是怎么說 的:2.2 iROM(BL0) boot-up sequence(Refer 2.3 V210 boot-up diagram)

12、1. Disable the Watch-Dog Timer 2.Initialize the instruction cache 3. Initialize the stack region (see“memorymap”on chap 2.5) 4. Initialize the heap regi on. (seemap”on chap 2.5) 5. Initialize the Block Device Copy Function.Copy the BL1 to the internal SRAM region (seeFunction”on chap 2.7) 8. Verify

13、the checksum of BL1. If checksum fails,iROM will try the second boot up. (SD/MMCchannel 2) 9. Check if it is secure-boot mode or not. If the security keyvalue is writt en in S5PV210, ItIf it is secure-boot mode, verify the integrity of BL1. 10. Jump可以看出BL0做的東西挺多了: 關(guān)閉看門狗, 初始化cache,初始化堆棧, 初始化系統(tǒng)時(shí)鐘, 拷貝B

14、L1到IRAM并且我們知道它為我們提供了好幾個(gè)拷貝函數(shù),這些函數(shù)我 們?cè)诤竺鏁?huì)使用到,既然三星提供給我們了,我們就不用自 己寫的,何樂而不為呢是吧。可是這里有一個(gè)很重要的信息 我們沒有讀取到,三星也沒有明顯提及,就圖。第一步,開始運(yùn)行IROM里面的BL0,這些代memory(see“Device Copy Function”on chap 2.7) 6. Initialize the PLLand Set system clock. (seeclock configuration”on chap 2.1Device Copys s-ebcouortemode.to the start addr

15、ess of BL1從這段英文介紹中我們中運(yùn)行等是我們的BL1該 有多大呢?總不可能無限大的,因?yàn)槲覀兊腎RAM就只有96K,撐死讓你全用了,也就是96K。在網(wǎng)絡(luò)上也存在兩種說法,一個(gè)說是16K, 一個(gè)說是8K。到底是多少k呢?這個(gè)問題我也說不準(zhǔn),不過我覺得應(yīng)該是8K,為什么呢,我們來看SIAN里面的一個(gè)memory map的圖這個(gè)是我們上面說的那個(gè)全部memory map的一部分,就是是拷貝16K過來的呢?這個(gè)我沒做過實(shí)驗(yàn), 如果有星期自己可以做過實(shí)驗(yàn)驗(yàn)證一下是不是真的是拷貝16K,而且我們使用友善的那個(gè)生成BL1的工具是把它認(rèn)為是16K的。既然說到了這個(gè)圖,那么我們繼續(xù)對(duì)這個(gè)圖挖掘一下信息

16、。我們可以看到在BL1的前面16個(gè)字節(jié)是一些關(guān)于BL1的基本信息的,其中包含了BL1 size和BL1的cksum值,而在, 貌似只做cksum校驗(yàn), 那么這個(gè)cksum我們必須填去找拷貝BL1的那個(gè)函數(shù),因?yàn)槲覀兇蛩阍贐L1中拿它來啟動(dòng), 所以我們會(huì)使用到CopySDMMCtoMem這個(gè)函數(shù), 這 個(gè)函數(shù)被定義在0 xD0037F98這個(gè)位置, 這個(gè)函數(shù)的原型是:cpp view plaincopyprint?/*MMC(MoviNAND/iNand) Card Data tomemory.我們IROM和IRAM的那兩個(gè)部分,IROM我們就不看的,我們來看IRAM的,我們可以看到從0 xD0

17、02_0000開始到0 xD003_5400這8K的空間中包含了BL1和Reserved,那么我覺得BL1最大只能是8K。但是這也不一定,如果BL0就BL0中寫正確。具體的自己去看友善的代碼。面我們要拷貝BL2。因?yàn)槲沂褂玫氖菑腟DMMC* This Function copy* This function works at問題我也說不準(zhǔn),不過我覺得應(yīng)該是8K,為什么呢,我們Always use EPLL source clock.* param u32 StartBlkAddress : Sourcecard(MoviNAND/iNand MMC) Address.(It must bloc

18、k address.) * paramu16 blockSize : Number of blocks to* param u32* memoryPtr : Buffer to copy from.* param bool with_init : determined card initialization.CopySDMMCtoMem(z,a,b,c,e)(bool(*)(int, unsigned int,unsigned short, unsigned int*, bool)(*(unsigned int*)0 xD0037F98)(z,a,b,c,e)style=font-family:Arial;BACKGROUND-COLOR:MMC(MoviNAND/iNand) Card Data to memory.use EPLL source clock. * This function works at 20Mhz.* param u32 StartBlkAddress : Source card(MoviNAND/iNand MMC)Address.(It must block address.) * param u16 blockSize : Number ofblocks to copy. * param u32* memoryPtr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論