移植u-boot-2012-10到tiny210v2一-----基本芯片介紹和啟動流程介紹_第1頁
移植u-boot-2012-10到tiny210v2一-----基本芯片介紹和啟動流程介紹_第2頁
移植u-boot-2012-10到tiny210v2一-----基本芯片介紹和啟動流程介紹_第3頁
移植u-boot-2012-10到tiny210v2一-----基本芯片介紹和啟動流程介紹_第4頁
移植u-boot-2012-10到tiny210v2一-----基本芯片介紹和啟動流程介紹_第5頁
免費預(yù)覽已結(jié)束,剩余7頁可下載查看

下載本文檔

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

文檔簡介

1、移植u-boot-2012-10到tiny210v2(一) -基本芯片介紹和啟動流程介紹軟硬件環(huán)境宿主機系統(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買回來好幾個星期了, 一直沒有很認(rèn)真的弄他,偶爾看看友善之臂提供的裸機程序。本 來買板子回來是要跑android系統(tǒng)的,還沒有真正跑到那 步。本來以為友善之臂會和mini2440一樣提供U-boot源碼,買回來

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

3、之前首先要準(zhǔn)備幾樣?xùn)|西,下面列個清單: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這個是S5PV210的啟動 流程文檔,友善的光盤有提供在光 盤的No0S(裸機程序preference下S5PV210_UM_REV1.1.pdf,S5PV210的datasheet友善光盤 有提供s5pv210芯片地址的頭文件,m

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

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

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

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

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

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

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

11、L就是Bootloader的意思。這些標(biāo)著 的就是三星給我們的一個啟動流程建議步驟,為啥說是建 議的步驟呢?因為我們的啟動有時候不一定按照它的建議 來,不過流程是不變的, 只是代碼存放的地方要做一些調(diào)整。我們先來看看這幾個流程是怎么樣子的,如果你喜歡自己3.1板子是怎么啟動起來的?平時我們開電腦的時看, 請自己自行去看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)時鐘, 拷貝B

14、L1到IRAM并且我們知道它為我們提供了好幾個拷貝函數(shù),這些函數(shù)我 們在后面會使用到,既然三星提供給我們了,我們就不用自 己寫的,何樂而不為呢是吧??墒沁@里有一個很重要的信息 我們沒有讀取到,三星也沒有明顯提及,就圖。第一步,開始運行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從這段英文介紹中我們中運行等是我們的BL1該 有多大呢?總不可能無限大的,因為我們的IRAM就只有96K,撐死讓你全用了,也就是96K。在網(wǎng)絡(luò)上也存在兩種說法,一個說是16K, 一個說是8K。到底是多少k呢?這個問題我也說不準(zhǔn),不過我覺得應(yīng)該是8K,為什么呢,我們來看SIAN里面的一個memory map的圖這個是我們上面說的那個全部memory map的一部分,就是是拷貝16K過來的呢?這個我沒做過實驗, 如果有星期自己可以做過實驗驗證一下是不是真的是拷貝16K,而且我們使用友善的那個生成BL1的工具是把它認(rèn)為是16K的。既然說到了這個圖,那么我們繼續(xù)對這個圖挖掘一下信息

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

17、02_0000開始到0 xD003_5400這8K的空間中包含了BL1和Reserved,那么我覺得BL1最大只能是8K。但是這也不一定,如果BL0就BL0中寫正確。具體的自己去看友善的代碼。面我們要拷貝BL2。因為我使用的是從SDMMC* 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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論