我使用的不是SMDK2412的開發(fā)板,而是公司已經(jīng)出貨的2412的機(jī)器,原來(lái)用的是自己的一個(gè)OS,現(xiàn)在打算在他上面運(yùn)行l(wèi)inux.
編譯2.6的內(nèi)核,需要比較新的gcc, 我暫時(shí)能找到的新版arm-linux-gcc也就是3.4.1。,之前用arm-none-linux-eabi-gcc 4.1編出來(lái)的zImage好大,基本不能用。對(duì)于開發(fā)工具和內(nèi)核版本,我覺得還是越新越好(穩(wěn)定版),否則可能會(huì)遇到一些稀奇古怪的問題。
1.修改Boot
使用公司原有的Boot, 在Boot啟動(dòng)Kernel的時(shí)候,加入的參數(shù)設(shè)定,然后用公司專用的usb更新工具燒錄kernel到flash中,啟動(dòng)機(jī)器以后顯示了一堆亂碼,在啟動(dòng)參數(shù) console=ttySAC0后面加上了,115200,設(shè)定波特率以后一切OK.
2.MTD分區(qū):修改文件common-smdk.c , 修改其中的MTD設(shè)備的分區(qū)。
新的kernel里面已經(jīng)有了默認(rèn)分區(qū)表,我們只要根據(jù)我們需要來(lái)做部分修改就可以,我的nand有512MB, 我目前只是將前面的2M分給boot,kernel, 緊接下來(lái)的4M分給rootfs,打算暫時(shí)加載一個(gè) 簡(jiǎn)單的cramfs。其他的nand都還沒有用。
3.取消NAND驅(qū)動(dòng)中的ECC讀校驗(yàn),以及壞塊監(jiān)測(cè)部分, 因?yàn)镹AND操作部分,boot和kernel有一些不同。
重啟以后,mount root分區(qū)失敗,還打出了I/O 錯(cuò)誤。 關(guān)閉了ECC校驗(yàn),修改了pc工具的燒錄地址以后,ok. 這都是因?yàn)槲覀兊臒浌ぞ呤褂玫牡刂繁硎痉椒ê蚭cc的方式有一些不同。
4.燒錄 root 文件系統(tǒng)。
拿了一個(gè)在kernel2.4 2440 上用過(guò)得cramfs直接來(lái)用,提示找不到dev/console, 上網(wǎng)查了一遍,應(yīng)該是因?yàn)楝F(xiàn)在新版的kernel去掉了devfs的緣故,為了先快速的有一個(gè)可執(zhí)行環(huán)境,所以在網(wǎng)上找了一個(gè)現(xiàn)成的,已經(jīng)自己建立好節(jié)點(diǎn)的cramfs,里面的busybox版本也比較新。
開機(jī)運(yùn)行,總算見到了親愛的shell.