【内核配置】一、从标准linux-2.6.22.6系统到ARM平台JZ2440开发板的linux系统的修改攻略...

主    机:VMWare--Ubuntu-16.04.2-x64-100ask

开发板:JZ2440--256M NandFlash,   2M NorFlash,   64M SDRAM,   LCD-4.3寸;
    bootlorder:u-boot1.16,       Kernel:2.6.22.6;
编译器:arm-linux-gcc-3.4.5


 

 工作目的:裁剪、打补丁、配置、修改,得到一个包含uboot、内核、根文件系统的可在JZ2440开发板上运行的linux系统;

 

一、u-boot配置/使用
1. 解压u-boot-1.1.6.tar.bz2;得到u-boot-1.1.6文件夹;
  命令:tar xjf u-boot-1.1.6.tar.bz2
2. 打补丁u-boot-1.1.6_jz2440.path到u-boot-1.1.6;
  命令:cd u-boot-1.1.6
  命令:patch -p1 < ../u-boot-1.1.6_jz2440.patch
3. 配置
  命令:make 100ask24x0_config //配置
  命令:make //编译得到uboot.bin;
*4.设置环境变量--看门狗倒数计时:
  命令:set bootdelay 10 //由3s改为10s;
  命令:save //保存环境变量到flash空间;Saving Environment to NAND...
  命令:reset //重启,观察看门狗倒数计时的改变现象;

二、内核配置/启动
1. 解压linux-2.6.22.6.tar.bz2:得到linux-2.6.22.6
  命令:tar xjf linux-2.6.22.6.tar.bz2
2. 打补丁linux-2.6.22.6_jz2440.patch:
  命令:cd linux-2.6.22.6
  命令:patch -p1 < ../linux-2.6.22.6_jz2440.patch
3. 配置,直接使用百问网提供的config_ok配置文件,省去大量配置工作;
  1)命令:make s3c2410_defconfig
  2)命令:cp config_ok .config
4. 配置菜单
  命令:make menuconfig
  设置菜单,结束后退出菜单设置界面;
  (此命令一般会造成编译错误,原因是因为Makefile文件和Ubuntu的make工具最新版本不完全匹配,可查看本人博客园的博客解决)
5. 编译并生成uImage;
  命令:make uImage
6. 加载内核
  命令:k [k]Download linux kernel uImage.
  命令:通过DNW传输内核到单板。
7. 启动内核
  命令:b [b]Boot the system.
  观察串口控制台的打印信息,由于没有文件系统,只能启动到一半。
8. 重启电源。


三、根文件系统
1. 加载根文件系统映像
  命令:k [k]Download linux kernel uImage.
  命令:通过DNW传输内核到单板。
2. 启动内核和系统
  命令:b [b]Boot the system.
  观察串口控制台的打印信息;
3. 配置并编译busybox:
  a. 命令:上传busybox-1.7.0tar.bz2到Ubuntu服务器并解压切入路径:busybox-1.7.0;
  b. 查看INSTALL文件,了解Busybox的建立方法;
  c. 配置busybox:
    命令:make menuconfig
    操作:按照《嵌入式完全开发手册》_17.2_busybox设置
  d. 编译busybox:
    1)修改busybox根目录的Makefile, 使用交叉编译器:
      176 CROSS_COMPILE ?=
    改为:
      176 CROSS_COMPILE ?= arm-linux-
    2)编译Busybox:
      命令:make
  e. 安装Busybox:
    命令:mkdir -p /work/nfs_root/fs_first
    命令:make CONFIG_PREFIX=/work/nfs_root/fs_first install
  注:切勿直接命令:make install; 否则,将安装到默认PC机文件系统,破坏系统!
4. 构建最小根文件系统(五项内容)
  a. 仿照PC机的设备文件,创建两个设备文件:
    控制台(终端)/dev/console 无ID标准输入/输出/报错定位-/dev/null

    命令:mkdir dev

    命令:cd dev/
    命令:sudo mknod console c 5 1
    命令:sudo mknod null c 3 1
  b. init->busybox, 第三节已经完成了;
  c. /etc/inittab ;配置文件
    命令: mkdir etc
    命令: ls
    bin dev etc linuxrc sbin usr
    命令:vi etc/inittab

       console::askfirst:-/bin/sh

    命令: cat etc/inittab
        console::askfirst:-/bin/sh

  d. 配置文件指定的应用程序,最小根文件系统暂时不需要;
  e. C库;
    1)创建路径:/work/nfs_root/fs_first/lib
      命令:/work/nfs_root/fs_first$ mkdir -p /work/nfs_root/fs_first/lib
    2)复制PC机Linux系统的动态库到/work/nfs_root/fs_first/lib:
      命令:cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib
      命令:cp *.so* /work/nfs_root/fs_first/lib/ -d
    如此,即创建好了最小根文件系统。

5. 烧写最小根文件系统到开发板
  5.1 把最小根文件系统制作一个映像文件fs_first.yaffs2;
    a. 生成制作yaffs2映像文件的工具
      /workbook/jz2440/system$ tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2
      /workbook/jz2440/system$ cd Development_util_ok/
      /workbook/jz2440/system$ cd Development_util_ok/yaffs2/utils
      /workbook/jz2440/system/Development_util_ok/yaffs2/utils$ make
      。。。mkyaffs2image 。。。
      .../utils$ sudo cp mkyaffs2image /usr/local/bin/
      .../utils$ sudo chmod +x /usr/local/bin/mkyaffs2image
    b. 制作yaffs2映像文件
      .../utils$ cd /work/nfs_root/
      /work/nfs_root$ mkyaffs2image fs_first fs_first.yaffs2
      (...文件生成过程的打印...)
      /work/nfs_root$ ls
      ... fs_first.yaffs2 ... //此即yaffs2映像文件;
  5.2 回传并烧写最小根文件系统的映像文件到开发板;
  5.3 启动系统;
6. 结束。

转载于:https://www.cnblogs.com/xiaohujian/p/9801682.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值