zoukankan      html  css  js  c++  java
  • [置顶] 【原创分享】嵌入式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
    ", CARDNAME, DRV_VERSION);
    
    	return platform_driver_register(&dm9000_driver);
    }

              make zImage 之后

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

         

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

  • 相关阅读:
    173. Binary Search Tree Iterator
    199. Binary Tree Right Side View
    230. Kth Smallest Element in a BST
    236. Lowest Common Ancestor of a Binary Tree
    337. House Robber III
    449. Serialize and Deserialize BST
    508. Most Frequent Subtree Sum
    513. Find Bottom Left Tree Value
    129. Sum Root to Leaf Numbers
    652. Find Duplicate Subtrees
  • 原文地址:https://www.cnblogs.com/james1207/p/3279821.html
Copyright © 2011-2022 走看看