|
作者:liweikui 覺(jué)得好的話要頂哦!
開(kāi)發(fā)板到了之后,用的是板子自帶的bootloader、linux內(nèi)核和文件系統(tǒng),在上面跑了幾個(gè)小程序知道流程和方法后,就想著用自已移植的這些東西了,因?yàn)榧热灰愕讓拥臇|西,我想這些東西還是要學(xué)會(huì)的。
剛開(kāi)始躊躇滿志,以為不會(huì)有什么困難,網(wǎng)上不都多得是文章嗎。可實(shí)際上,下了N多資料,看了N多文章之后,下到flash中一運(yùn)行,串口控制臺(tái)中什么都沒(méi)有,當(dāng)時(shí)真有點(diǎn)蒙了。其實(shí)不成功,倒還沒(méi)什么,關(guān)鍵是你想繼續(xù)努力的時(shí)候,卻沒(méi)有方向和方法,那真的才是又浪費(fèi)時(shí)間,又郁悶。
不過(guò)還得感謝網(wǎng)絡(luò),文章看多了,就知道哪些可以直接close,那些可以復(fù)制下來(lái)慢慢看(我通常都是一氣狂搜,一氣“另存為”,最后再集中在一起看)。三五天后,終于找到了方向和方法,而且在sdram中運(yùn)行,成功地在串口輸出里看到了u-boot啟動(dòng)信息。
第一次學(xué)做u-boot移植,綜合別人的方法,總結(jié)歸納如下:
1. 先不去考慮nor/nand flash啟動(dòng),先讓u-boot在SDARM中成功運(yùn)行。
2. 把那個(gè)既經(jīng)典又簡(jiǎn)單又very useful的調(diào)試方法用上,那就是在程序中需要的地方加上led燈指示。
(有時(shí)串口沒(méi)信息,一頭霧水,連自己的程序是否在運(yùn)行都不知道,這里在程序開(kāi)頭加led的代碼,最合適不過(guò)了)
3. u-boot能在SDRAM中運(yùn)行后,先考慮nor flash中運(yùn)行(如果有nor flash的話),因?yàn)橹С謓or flash比支持nand flash改動(dòng)少,較容易一些。SMDK2410里也是支持nor flash的,那里用的是AMD公司的。
4. 能在flash 中啟動(dòng)后,增加nand支持,看是否能檢測(cè)到nand,并在u-boot中用些nand的命令驗(yàn)證驅(qū)動(dòng)是否有問(wèn)題。
5. 增加代碼,讓u-boot從nand啟動(dòng)。
6. u-boot可是從nand啟動(dòng)后,增加代碼,讓代碼能自動(dòng)識(shí)別跳線的設(shè)置,從相應(yīng)的flash啟動(dòng)。
以上6步完成之后,關(guān)于啟動(dòng)方面的就完成了,如果有需要,再增加這個(gè)u-boot的其它功能,比如:網(wǎng)絡(luò)支持、USB支持等,這些部分如果自已的開(kāi)發(fā)板和SMDK2410不同的話,也是要做移植的。
這個(gè)過(guò)程我正在進(jìn)行中,已進(jìn)行到第三步,前兩部的具體實(shí)現(xiàn)過(guò)程在后面的文章中寫(xiě)出來(lái),只為了自已以后用到的時(shí)候,有資料可查,不然忘了又得花時(shí)間,相當(dāng)于做筆記吧。 |
|