Linux內(nèi)核移植問(wèn)題總結(jié)
移植一個(gè)內(nèi)核會(huì)涉及到很多東西,對(duì)想學(xué)arm的人來(lái)說(shuō)還是挺有幫助的,會(huì)比直接拿別人移植好的內(nèi)核來(lái)跑有趣的多。
一、串口打印問(wèn)題
內(nèi)核移植的第一步就是要有打印輸出。看不到打印信息,都不知道內(nèi)核有沒(méi)有跑起來(lái)。我移植 linux-2.6.35編譯完成后運(yùn)行,啟動(dòng)一直停在starting kernel . . .,檢查machine-type、cpu-id、時(shí)鐘、入口地址等可能會(huì)導(dǎo)致問(wèn)題的地方都沒(méi)有問(wèn)題,最后想到可能是串口使用的引腳和內(nèi)核不一致,最后才發(fā)現(xiàn)板子使用的是串口2作為打印輸出(也是我一開(kāi)始沒(méi)想到的,因?yàn)橐话愣紩?huì)默認(rèn)使用串口1,糾結(jié))。講啟動(dòng)參數(shù)改成串口2,mx5_loco.c 里面的init串口改成UART2_BASE_ADDR,可以輸出信息了。
二、文件系統(tǒng)
1、自己編譯一個(gè)busybox來(lái)制作一個(gè)文件系統(tǒng)其實(shí)還是挺麻煩的,只能制作一個(gè)很簡(jiǎn)單的文件系統(tǒng),因?yàn)槭窃趂lash上加載,所以我最開(kāi)始嘗試的是cramfs,加載文件系統(tǒng)階段一直出錯(cuò)
List of all partitions:
1f00 131072 mtdblock0 (driver?)
No filesystem could mount root, tried: cramfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,0)
這里只讀到了一個(gè)塊設(shè)備,block0,顯然flash的分區(qū)沒(méi)有成功,修改nandflash的分區(qū),文件系統(tǒng)正常加載,啟動(dòng)參數(shù)如下
setenv bootargs root=/dev/mtdblock3 rootfstype=cramfs rw console=ttymxc1,115200 init=/linuxrc
2、加載成功有時(shí)會(huì)出現(xiàn)Kernel panic - not syncing: Attempted to kill init!,這個(gè)很多人說(shuō)要開(kāi)
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL)(NEW)
我試過(guò)好像沒(méi)什么效果,出現(xiàn)這個(gè)問(wèn)題有可能是文件系統(tǒng)的inittab和rcS兩個(gè)文件有問(wèn)題。
3、jffs2文件系統(tǒng)
JFFS2 error: (1) jffs2_build_inode_pass1: child dir"alsa" (ino #1159) of dir ino #1074 appears to be a hard link JFFS2 error: (1) jffs2_build_inode_pass1:child dir "l" (ino #1170) of dir ino #1075 appears to be a hard link
原由 : flash沒(méi)有erase徹底.,多 nand erase幾次就好了
還有就是jffs2文件系統(tǒng)會(huì)有很多警告信息,我在源碼里面將打印都去掉還是不行
posted on 2014-06-03 09:52 順其自然EVO 閱讀(561) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): linux