AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17
AT91RM9200Linux移植筆記(三)-移植Linux kernel 2.6.17
手上板子原來自帶的是2.4.19的內核, 打算移植新的2.6的內核,從網上下了2.6.17的kernel,下載地址為:http://www.kernel.org/pub/linux/kernel/v2.6/
修改PATH環境變量或者Makefile文件的CROSS_COMPILE宏,將前面制作好的交叉編譯工具鏈路徑添加進來,同時需要下載針對AT91rm9200的patch包, 2.6.17-at91.patch.gz, 下載地址是http://maxim.org.za/AT91RM9200/2.6/
$ tar zxvf linux-2.6.17.tar.gz
$ cp 2.6.17-at91.patch.gz linux-2.6.17
$ cd linux-2.6.17
$ zcat ./2.6.17-at91.patch.gz | patch -p1
有點要注意的是,如果從windows下下載該patch,有三四百K大小,執行zcat時會報not gzip format的錯誤,而在linux環境里下載則為79.1K,且命令執行沒有問題,不知道下同一個文件在兩種環境下怎么會有區別,協議有區別?
然后一個很必要的修改是串口的驅動,打開文件: /linux-2.6.17/arch/arm/mach-at91rm9200/board-dk.c, 作如下改動:
/*
* Serial port configuration.
*? 0 .. 3 = USART0 .. USART3
*? 4??? = DBGU
*/
static struct at91_uart_config __initdata dk_uart_config = {
? .console_tty??? = 0,??????????????? /* ttyS0 */
? .nr_tty??????? = 5,
? .tty_map??? = { 4, 1, 0, 2, 3 }??????? /* ttyS0, ..., ttyS4 */
};
否則,新內核沒有ttyS4設備,而我們的serial console正是基于ttyS4的,所以ramdisk解壓后由于找不著ttyS4而死掉。
然后運行
$ make mrproper
$ make distclean
$ make at91rm9200dk_defconfig
$ make menuconfig
修改其中的Boot Options:
Default Kernel Command String: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
我修改的為:mem=32M console=ttyS0,115200 initrd=0x21000000,0x181341 root=/dev/ram0 rw
0x21000000是ram文件系統的起始地址,0x181341是文件系統大小
at91rm9200dk_defconfig位于/linux-2.6.17/arch/arm/config/下,可以修改其默認配置
最后
$ make
# cp arch/arm/boot/zImage ...
在uboot的shell里
$ tftp 20008000 zImage
$ tftp 21000000 Ramdisk.gz
$ go 20008000
內核啟動后會停在
wanted = 164392 limterd = 164384
無法啟動文件系統,經過在網上多番搜索,可能的原因是kernel配置的ramdisk的大小不夠
但是我的ramdisk只有1.5M,而內核配置默認的是8192,怎么會不夠呢??改大到10240,果然可以加載ramdisk了
轉載:http://blog.csdn.net/shevsten/archive/2007/07/16/1694003.aspx
轉載于:https://www.cnblogs.com/fly-fish/archive/2011/03/10/1979470.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到掉大门牙是什么预兆
- 下一篇: Linux运行可执行文件