在上章-制作文件系统,并使内核成功启动jffs2文件系统了

本章主要内容如下:

  • 1)使内核支持yaffs2文件系统
  • 2)裁剪内核
  • 3)制作内核补丁

1.首先获取yaffs2源码(参考git命令使用详解)

cd /work/nfs_rootgit clone git@github.com:lifeyx/yaffs2.git//若下载出现error:403,可以试试vi /etc/resolv.conf,将nameserver地址改为: 114.114.114.114

2.将yaffs2源码来配置到内核里(使内核支持yaffs2)

vi /work/nfs_root/yaffs2/README-linux

找到以下几段话:

参考上图:

/*给内核打补丁*/
cd /work/nfs_root/yaffs2/
./patch-ker.sh  c m /work/system/linux-3.4.2//c:将yffs2文件夹copy到linux-3.4.2/fs里, m:指定多版本/*通过menuconfig,来使内核支持yaffs2*/
cd /work/system/linux-3.4.2/
make menuconfig            

搜索yaffs,找到位于:

  • -> File systems
  • -> Miscellaneous filesystems (MISC_FILESYSTEMS [=y])
  • <*>   yaffs2 file system support                      //按Y键,使内核支持yaffs2

3.然后make uImage

如下图所示,出现很多错误:

如上图,问题都是出在fs/yaffs2/下,很多error都讲述:调用的成员名,在struct mtd_info结构体里没有定义.

接下来我们便将fs/yaffs2文件夹添加到内核3.4的si工程中.

3.1然后进入yaffs2/yaffs_vfs.c,第2514行:

然而发现struct mtd_info *mtd的结构体mtd_info定义的是_sync成员,如下图所示:

3.2 修改代码

所以接下来只有遇到与struct mtd_info有关的error,都在成员前加上: _

比如:

  • 将yaffs_vfs.c文件2514~2515行的mtd->sync 改为: mtd->_sync
  • 将yaffs_vfs.c文件2702行的mtd->erase改为: mtd->_erase
  • 将yaffs_vfs.c文件2703行的mtd->read改为: mtd->_read
  • ... ...
  • 并将yaffs_vfs.c的第2967行的  root = d_alloc_root(inode);改为: root = d_make_root(inode);

全部修改后,再次make uImage,接下来便制作yaffs2文件系统

4.制作yaffs2文件系统

由于上章-我们制作了文件系统,名为fs_mini_mdev_new,所以直接使用mkyaffs2image工具制作:

mkyaffs2image  fs_mini_mdev_new  fs_mini_mdev_new.yaffs2 

然后通过uboot来烧写yaffs2、烧写uImage:

最后启动yaffs2成功:

5.内核裁剪

为什么要裁剪内核?

因为mtd的kernel分区只有2M大,而实际内核有2.37MB,所以需要裁剪到小于2M(或者修改mtd分区值)

5.1首先裁剪内核里无关的CPU/单板文件

1)通过vi .config,然后搜索2440,如下图所示:

2)然后参考上图,make menuconfig

进入System Type ---> SAMSUNG S3C24XX SoCs Support:

如上图所示,CPU下只选择2440,单板文件下只选择SMDK2440以及MINI2440相关

5.2 裁剪无关的文件系统ext2、ext3、ext4

重新make menuconfig,进入File systems,去掉:

< > Second extended fs support               //ext2

< > Ext3 journalling file system support

< > The Extended 4 (ext4) filesystem

5.3裁剪光盘文件系统CD-ROM

进入File systems---> CD-ROM/DVD Filesystems,去掉:

< > ISO 9660 CDROM file system support

5.4裁剪不常用的杂项文件系统

进入File systems---> Miscellaneous filesystems,去掉:

< >   Compressed ROM file system support (cramfs)    // cramfs压缩文件系统

[ ]     Include support for ZLIB compressed file systems //zlib压缩文件系统

< >   ROM file system support                            // Romfs

5.5  通过内核启动信息来裁剪

如下图所示,内核启动时,看到初始化了PS2鼠标驱动

由于,我们2440板子只有USB接口,所以需要裁剪掉PS2鼠标驱动:

重新make menuconfig,进入Device Drivers-> Input device support,去掉:

[ ]     Provide legacy /dev/psaux device    //PS2鼠标鼠标指向的鼠标设备文件

[ ]   Mice  --->                   //其它各种鼠标驱动,包括PS2鼠标、I2C鼠标、触摸板等

5.6 通过.config文件的内容来裁剪

1)通过vi .config,找到如下图所示,由于CONFIG_TOUCHSCREEN_USB(USB触摸板)很少见到,所以去掉

2) USB-based Watchdog Cards(基于usb的看门狗卡)

如下图所示,这个看门狗卡很少用到,所以去掉CONFIG_SSB_POSSIBLE

3) Sonics Silicon Backplane (Sonics公司下的Silicon底板)

如下图所示,这个公司的产品没有用到,所以去掉CONFIG_BCMA_POSSIBLE

4) 找到如下图所示,由于CONFIG_SND_USB (USB声卡)没用到,所以去掉

5)去掉CONFIG_USB_LIBUSUAL,没用到

5.7 最后通过5.6小节查找的裁剪内容,来make menuconfig

1)去掉CONFIG_TOUCHSCREEN_USB

-> Device Drivers

-> Input device support

-> Generic input layer

-> Touchscreens

<*>   Samsung S3C2410/generic touchscreen input driver   //加上自带的触摸屏驱动

< >   USB Touchscreen Driver                                              //去掉USB触摸屏驱动 

2)去掉CONFIG_SSB_POSSIBLE

搜索如下图所示,该宏是被别的选项设置,所以去掉不了:

3)去掉CONFIG_BCMA_POSSIBLE

该宏也没找到,所以去掉不了

4)去掉CONFIG_SND_USB

-> Device Drivers

-> Sound card support

-> Advanced Linux Sound Architecture

[ ]   USB sound devices              //去掉USB声卡驱动

5)去掉CONFIG_USB_LIBUSUAL

-> Device Drivers

-> USB support

[ ]   The shared table of common (or usual) storage devices

6.给内核制作补丁

制作补丁之前,首先需要make distclean清除所有的配置文件,也包括了menuconfig菜单

而menuconfig菜单是通过读取.config文件来生成的.

所以我们需要保存.config文件

步骤如下:

cp .config  config_ok            //保存到config_ok文件
make distclean
cd ..mv linux-3.4.2  linux-3.4.2_new  //更改文件名
tar -xjf linux-3.4.2.tar.bz2             //解压需要比较的源文件

diff -urN linux-3.4.2 linux-3.4.2_new > linux-3.4.2_new.patch    //生成补丁文件linux-3.4.2_new.patch

未完待续,下章来移植以前2.6内核的驱动到3.4内核

2.移植3.4内核-支持烧写yaffs2,裁剪内核并制作补丁相关推荐

  1. 移植U-BOOT之支持烧写YAFFS文件系统以及制作U-BOOT补丁

    今天,我们来移植U-BOOT让其支持YAFFS文件系统映像的烧写,以及最后的终极目标,制作Uboot补丁,因为我们信心苦苦移植好了Uboot,如果换一个地方的或者换一台电脑之类的,我们也不想再浪费时间 ...

  2. 烧写linux内核的步骤,启动redboot后,向目标机烧写一个linux内核的全过程

    命令说明 对一个没有内核和根文件系统的板子是不可以运转的,当通过一种方式下载了RedBoot引导程序以后,我们可以通过下面的方式下载内核和根文件系统. 在本系统中,我们对内核和根文件系统的下载是通过t ...

  3. armboot和内核文件系统烧写总结

    armboot的烧写和内核文件系统的烧写是最基本的,也是最原始的操作.但是对于以后整块板的分析是很有好处的,为下一步外围模块的添加做好了准备工作.<?xml:namespace prefix = ...

  4. u-boot-2012.04.01移植到TQ2440(八):支持烧写yaffs文件系统

    一.支持yaffs烧写文件系统 先直接烧写试一下 TQ2440 # nand write.yaffs32000000 rootfs $filesize NAND write: device 0 off ...

  5. Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写

    很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-boot ...

  6. 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上

    博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813  本篇文章中用到的工具源码下载 : -- ok-6410A 附带的 A ...

  7. tq210 定制linux内核,TQ210 烧写Linux系统

    硬件平台:TQ210v6开发板 把SD卡插到PC机上,对SD卡进行快速格式化. 在虚拟机的右下角,有个类似u盘或者硬盘的图标,点击它选择连接,这样就可以把SD卡连接到虚拟机的Linux系统中. 在虚拟 ...

  8. Marvell 98DX3236系列交换机Uboot及内核文件烧写

    1. 开发环境 开发板硬件相关 (1)交换机开发板型号:RD-XC3-24G4XG-B (2)交换机CPU型号:98DX3236 (3)交换机PHY芯片型号:88E1680 开发板软件相关 (1)CP ...

  9. tiny4412学习(一)之从零搭建linux系统(烧写uboot、内核进emmc+uboot启动内核)

    硬件平台:tiny4412 系统:linux-3.5-20151029 文件系统:busybox-1.22.1.tar.bz2 编译器: arm-linux-gcc-4.5.1 目的: 使用uboot ...

  10. 烧写ubl,uboot,内核。

    原创:http://blog.sina.com.cn/u/2312748742 1.打开超级终端,将开发板设置为串口模式.确定可以收到数据,即bootcm循环,关闭超级终端. 2.用命令打开F:\li ...

最新文章

  1. Spring注入---实例工厂
  2. DL之U-Net:U-Net算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  3. 【栈】【856. 括号的分数】【中等】(需回顾)
  4. 第三方快递接口API调用
  5. java content()_Java contentEquals() 方法
  6. PostgreSQL 并行查询概述
  7. Java面向对象设计原则
  8. 宝宝三岁多了,整天自言自语,乱说一通怎么办?
  9. 模拟电路 - 半导体基本知识
  10. lua table的__index ,setmetable()的一些操作
  11. 4款超好用的时间轴制作软件
  12. 感谢有你,一路同行,历史文章汇总,涉及STM32、模块使用、传感器、物联网、鸿蒙、仿真和综合实例等嵌入式的方方面面,欢迎关注。
  13. 博士申请 | 西湖大学智能无人系统实验室招收空中机器人方向全奖博士生
  14. Decoupled Sparial-Temporal Attention Network forSkeleton-Based Action Recognition
  15. 高德地图实现逻辑及代码
  16. 微型计算机输入设备 写出六种,计算机一级考试word题及答案
  17. PYNQ-Z1 资源分析
  18. AR珠宝试戴经典案例盘点
  19. 机器学习-----Jupyter下载安装
  20. html表格高度自动调整,table表格自适应高度的办法

热门文章

  1. 二维树状数组的区间加减及查询 tyvj 1716 上帝造题的七分钟
  2. ListBox横向绑定数据
  3. matlab中如何创建使用构架数组?
  4. 通过Spring Boot中的手动Bean定义提高启动性能
  5. 搭建Jetbrains家族IDE授权服务器
  6. 读RESTful API 设计指南心得体会
  7. Java 读取文件方法大全
  8. VirtualBox中安装Ubuntu、LAMP、SVN、JRE和Tomcat
  9. 智能家居实训系统的项目有感!
  10. Transact-SQL 参考的语法