【原创分享】嵌入式linux应用之内核移植定制篇-前篇(linux-3.8.12 mini2440)--20130824

            移植的话其实很早就做过了,不过那时用的友善定制的老版本2.6.32 驱动什么的全部弄好了,仅仅用默认配置而已。基本不用改动什么,很简单。

内核更新其实非常的快,今天我就用个3.8.12来移植。

            当然,3.8.12其实也是有mini2440的配置文件的,不过,试过之后你就会发现问题一大堆。

           

          一:准备工作

           1.内核3.8.12

           2.ubuntu 13.04

           3.arm-linux-gcc 4.4.3

           4.mini2440 128mNAND

           5.YAFFS2 


           二:移植

            1.下载好后的内核文件,解压到工作目录 linux-3.8.12目录

            2.打开跟目录的Makefile  修改编译工具参数 保存

              

export KBUILD_BUILDHOST := $(SUBARCH)
ARCH		?= arm
CROSS_COMPILE	?= arm-none-linux-gnueabi-
             

             3.下载yaff2补丁,一定要用git方式,保证是最新的

git clone git://www.aleph1.co.uk/yaffs2

./patch-ker.sh c m /home/lynn/share/linux/linux-3.8.12
                  

                    这样在工作目录下生成一个YAFFS2的文件夹,进入这个目录,给内核打yaff2的支持。因为我的开发板用的yaff2的文件系统。

             4.make mini2440_defcoonfig  用默认mini2440的配置文件

             5.make menuconfig     在file system中选定yaffs2支持。

             6.make zImage


           这样,一个3.8.12 mini2440内核文件就出来了,生产的zImage 在内核源码/arch/arm/boot 下面

          为了能给Uboot引导还要

           

mkimage -n 'lynn' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage zImage.img
            

           使用Uboot:

tftp zImage.img
bootm
.....进入linux内核

 


            对于新手的话,Uboot的移植请参考我前面的文章   【原创分享】嵌入式linux应用之U-BOOT移植定制篇--20130822


        

        看上图 内核就启动了。。。

 


           三:解决问题


            到上面,虽然内核启动了,文件系统也挂载了。系统正常启动,但是,有个问题

           这个时候的系统  无法使用nfs,虽然内核配置时是配置了nfs,不过因为DM9000的驱动问题。导致了nfs以及ping网络都非常慢,这个问题主要是最新的驱动

时序不一样,参考友善的dm9000驱动,就发现,在初始化时是有配置的。找到DM9000.C,加入红色部分程序。


static int __init
dm9000_init(void)
{
       #if defined(CONFIG_ARCH_S3C24XX)
	unsigned int oldval_bwscon = *(volatile unsigned int *)S3C2410_BWSCON;
	unsigned int oldval_bankcon4 = *(volatile unsigned int *)S3C2410_BANKCON4;
	*((volatile unsigned int *)S3C2410_BWSCON) =
			(oldval_bwscon & ~(3<<16)) | S3C2410_BWSCON_DW4_16 | S3C2410_BWSCON_WS4 | S3C2410_BWSCON_ST4;
	*((volatile unsigned int *)S3C2410_BANKCON4) = 0x1f7c;
#endif
	printk(KERN_INFO "%s Ethernet Driver, V%s\n", CARDNAME, DRV_VERSION);

	return platform_driver_register(&dm9000_driver);
}
          make zImage 之后

          重新测试,网络就正常了。
        

     

       到此一个网络正常的3.8.12内核就启动了。不过,lcd驱动,背光驱动还是有问题的。问题后篇解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值