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