移植Linux 2.6.39至Micro2440开发板

12 篇文章 0 订阅
11 篇文章 0 订阅

        所有版本的Linux源代码压缩包都可以在https://github.com/torvalds/linux/下载。本文档使用的Linux源码为linux-2.6.39(网盘:http://pan.baidu.com/s/1dDxjNl3)。

1. 解压源码

        解压源码到工作目录,这里使用的是p7zip工具中的7za命令,使用unzip命令会提示“File name too long”错误。

                # 进入工作目录

                # 7za x /media/sf_ShareDIR/MICRO2440/source/linux-2.6.39.zip 

                # cd ./linux-2.6.39


2. Linux内核编译

        在Linux 2.6.39中的内核树中,已经支持mini2440开发板,micro2440是mini2440的升级版本,所以很多配置都可以兼容,因此可选用mini2440开发板的配置。

      

          a) 修改Makefile(红色字为修改或添加部分)

                # vim Makefile

                        ARCH            ?= arm

                        CROSS_COMPILE   ?= arm-linux-


        b) 生成mini2440开发板配置

                # make mrproper

                # make mini2440_defconfig


        c) 编译内核

                # make uImage


        d) 通过U-BOOT(NOR)下载内核到RAM中运行

                可通过在“移植U-BOOT-2.14.07MICRO2440开发板.doc”一文中制作的NOR U-BOOT将内核下载到RAM中运行。

                # tftp 0x30008000 /MICRO2440/uImage

                # bootm

 

                为了方便调试,可以设置U-BOOT的启动命令为通过TFTP下载内核引导。

                # setenv bootcmd 'tftp 0x30008000 /MICRO2440/uImage;bootm'



        如上图所示,内核可以正常启动,但卡在“Uncompressing Linux... done, booting the kernel.”,这通常是因为没有设置启动参数(没有设设置console=)或U-BOOT与内核的机器码不一致导致的。经测试在U-BOOT中设置了启动参数(bootargs)后,可正常启动。可能2.6.39有个BUG,这里我没有设置任何机器码,都是使用默认的,U-BOOT中使用的是193(arch/arm/include/asm/mach-types.h),LINUX中使用的是1999(arch/arm/tools/mach-types),机器码不一致,还能启动。经测试,其它版本的LINUX是不能启动的,必须机器码一致才可以启动。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值