JZ2440 移植linux2.6.39

在JZ2440的基础上  移植linux2.6.39   编译器gcc4.3.2  Ubuntu16.04

一.uboot
    1.解压缩 tar xjf u-boot-1.1.6.tar.bz2       
    2.cd u-boot-1.1.6
    3.打补丁 patch -p1 < ../u-boot-1.1.6_jz2440.patch   打完补丁就把uboot修改成板子适配的了
        补丁中做了有关nand驱动、网卡驱动等等,PDF上有细说
    4.配置  make 100ask24x0_config
    5.修改 u-boot-1.1.6/include/configs/100ask24x0.h
        主要是内核编译后大于2M,这里需要将NAND修改分区
        (1)#define MTDPARTS_DEFAULT "mtdparts=nandflash0:512k@0(bootloader)," \
                              "512k(params)," \
                              "4m(kernel)," \
                              "-(root)"
        (2)#define CONFIG_BOOTARGS         "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200"                      
            /dev/mtdblock3     3是指linux内核 MTD分区第四个分区    
        (3)#define CONFIG_BOOTCOMMAND      "nand read.jffs2 0x30107FC0 kernel; bootm 0x    30107FC0"
            这里根据实际编译出来的uImage修改
        (4)网络配置    
        #define CONFIG_IPADDR           192.168.0.99
        #define CONFIG_SERVERIP         192.168.0.104
    6.编译 make   u-boot.bin
    编译完uboot后tools文件夹下会生成mkimage 它是制作内核uImage  的工具
    sudo cp tools/mkimage /usr/local/bin 

    7.烧写 u-boot.bin  至NAND   或者 nor
      oflash u-boot.bin
     
二.内核
    1.make s3c2410_defconfig   
    2.make menuconfig    
        开启 EABI
        Kernel Configuration
             [*] Use the ARM EABI to compile the kernel
             [*]   Allow old ABI binaries to run with this kernel (EXPERIMENTA
    3.yaffs2补丁支持
        ./patch-ker.sh c ~/linuxkernel/linux-2.6.39
        (1)修改了fs/Kconfig   末尾添加
            #Patched by YAFFS
            source "fs/yaffs/Kconfig"
        (2)修改了fs/Makefile   末尾添加
            #Patched by YAFFS
            obj-$(CONFIG_YAFFS_FS)        += yaffs2/
        (3)创建fs/yaffs2 目录      复制Makefile.kernel -> fs/yaffs2/Makefile , Kconfig ->fs/yaffs2/Kconfig
           复制*.c  *.h  到fs/yaffs2/下
    4.make menuconfig       修改支持yaffs2  
        File system--->
            [*]Miscellaneous filesystems  ---> 
                [*]yaffs2 file system support
                    默认配置即可
    5.修改arch/arm/plat-s3c24xx/common-smdk.c  至少使得文件系统位置和uboot的root分区一致
     static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
                .name = "bootloader",
                .size = 0x40000,
                .offset = 0,
        },
        [1] = {
                .name = "params",
                .size = 0x20000,
                .offset = 0x40000,
        },
        [2] = {
                .name   = "kernel",
                .size   = SZ_4M,
                .offset = 0x60000,
        },
        [3] = {
                .name   = "yaffs",
                .offset = SZ_4M+0x60000,
                .size   = MTDPART_SIZ_FULL,
        }
    };
    5.修改arch/arm/mach-s3c2440/mach-smdk2440.c
        //s3c24xx_init_clocks(16934400);
        s3c24xx_init_clocks(12000000);
    6.make uImage    
三.文件系统
    官网下载busybox-1.21.1
    1.Makefile 修改
        190 ARCH ?= arm
        164 CROSS_COMPILE ?=arm-linux-
    2.编译
        make menuconfig   全部默认
        make
    3.安装
        mkdir ../fs_1.21.1 
        make CONFIG_PREFIX=../fs_1.21.1 install
        后 ../fs_1.21.1 会出现  bin  linuxrc  sbin  usr
    4.制作镜像    
        (1)打包工具制作
            yaffs_source_util_larger_small_page_nand.tar.bz2(网盘提供)解压得到Development_util_ok
            进入Development_util_ok/yaffs2/utils$
            make
            把生成的 mkyaffs2image 复制到 /usr/local/bin 下
        (2)继续文件系统制作    
            回到~/jz2440/busybox/fs_1.21.1$创建文件夹
            bin  dev  etc  lib  linuxrc  mnt  proc  root  sbin  sys  tmp  usr
            ~/jz2440/busybox/fs_1.21.1/dev$ sudo mknod console c 1 5
            ~/jz2440/busybox/fs_1.21.1/dev$ sudo mknod null c 3 1
            ~/jz2440/busybox/fs_1.21.1$ vim etc/fstab
                proc /proc proc defaults 0 0
                sysfs /sys sysfs defaults 0 0
                tmpfs /tmp tmpfs defaults 0 0
                tmpfs /dev tmpfs defaults 0 0
            ~/jz2440/busybox/fs_1.21.1$ vim etc/inittab
                # /etc/inittab
                ::sysinit:/etc/init.d/rcS
                ttySAC0::askfirst:-/bin/sh
                ::ctrlaltdel:/sbin/reboot
                ::shutdown:/bin/umount -a -r
            mkdir etc/init.d
            ~/jz2440/busybox/fs_1.21.1$ vim etc/init.d/rcS                
                #mount -t proc none /proc
                #ifconfig eth0 192.168.0.99
                mount -a
                mkdir /dev/pts
                mount -t devpts devpts /dev/pts
                echo /sbin/mdev > /proc/sys/kernel/hotplug
                mdev -s
            libc库复制
            ~/jz2440/busybox/fs_1.21.1/lib$ cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*.so* . -d
            ~/jz2440/busybox/fs_1.21.1/lib$ cp cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*.so* . -d
        (3)打包    
            ~/jz2440/busybox$ mkyaffs2image fs_1.21.1 fs_1.21.1.yaffs2
            
        
        
        
四.下载uboot OPENJATG下载
五.下载uImage 到norflash
    同光盘步骤
六.下载kernel  (ubuntu需要设置好TFTP,板子uboot设置ipaddr  serverip)  也可以USB下载
    tftp 0x32000000 uImage
    nand erase 0 0x10000000   全片擦除
    nand write.jffs2 0x60000 $(filesize)
七.下载yaffs2  也可以USB下载
    tftp 0x30000000 fs_mini.yaffs2
    nand write.jffs2 0x460000 $(filesize)


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值