2.移植3.4内核-使内核支持烧写yaffs2

时间:2022-08-28 11:49:23

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

本章主要内容如下:

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

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

cd /work/nfs_root

git 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

找到以下几段话:

2.移植3.4内核-使内核支持烧写yaffs2

参考上图:

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

搜索yaffs,找到位于:

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

3.然后make uImage

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

2.移植3.4内核-使内核支持烧写yaffs2

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

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

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

2.移植3.4内核-使内核支持烧写yaffs2

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

2.移植3.4内核-使内核支持烧写yaffs2

3.2 修改代码

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

比如:

  • 将yaffs_vfs.c文件2514~2515行的mtd->sync 改为: mtd->_sync
  • 将yaffs_vfs.c文件行的mtd->erase改为: mtd->_erase
  • 将yaffs_vfs.c文件行的mtd->read改为: mtd->_read
  • ... ...
  • 并将yaffs_vfs.c的第行的  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成功:

2.移植3.4内核-使内核支持烧写yaffs2

5.内核裁剪

为什么要裁剪内核?

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

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

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

2.移植3.4内核-使内核支持烧写yaffs2

2)然后参考上图,make menuconfig

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

2.移植3.4内核-使内核支持烧写yaffs2

如上图所示,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鼠标驱动

2.移植3.4内核-使内核支持烧写yaffs2

由于,我们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.移植3.4内核-使内核支持烧写yaffs2

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

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

2.移植3.4内核-使内核支持烧写yaffs2

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

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

2.移植3.4内核-使内核支持烧写yaffs2

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

2.移植3.4内核-使内核支持烧写yaffs2

5)去掉CONFIG_USB_LIBUSUAL,没用到

2.移植3.4内核-使内核支持烧写yaffs2

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

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

2.移植3.4内核-使内核支持烧写yaffs2

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. linux-3.4.2_new //更改文件名
tar -xjf linux-3.4..tar.bz2 //解压需要比较的源文件 diff -urN linux-3.4. 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. 2&period;移植3&period;4内核-支持烧写yaffs2&comma;裁剪内核并制作补丁

    在上章-制作文件系统,并使内核成功启动jffs2文件系统了 本章主要内容如下: 1)使内核支持yaffs2文件系统 2)裁剪内核 3)制作内核补丁 1.首先获取yaffs2源码(参考git命令使用详解 ...

  2. 3&period;移植驱动到3&period;4内核-移植DM9000C驱动

    在上章-使内核支持烧写yaffs2,裁剪内核并制作补丁了 本章,便开始移植以前2.6内核的驱动到3.4新内核 1.介绍 首先内核更新,有可能会重新定义新的宏,去除以前的宏,以前更改函数名等 所以移植驱 ...

  3. FL2440 Linux-3&period;0内核触摸屏的支持

    ---------------------------------------------------------------------------------------------------- ...

  4. 6&period;移植uboot-支持yaffs烧写&comma;打补丁

    在上一章,裁剪uboot以及分区后,本章主要使uboot支持yaffs以及制作补丁 1. 修改uboot支持yaffs 首先,每个命令都会对应一个文件,比如nand命令对应的common/cmd_na ...

  5. s3c2440 移值u-boot-2016&period;03 第6篇 支持mtd yaffs 烧写

    1, 解决启动时的错误 Warning - bad CRC, using default environment 搜索发现 在 /tools/env/fw_env.c 中 /* 放在NAND FLAS ...

  6. 1&period;移植3&period;4内核-分析内核启动过程&comma;重新分区&comma;烧写jffs2文件系统

    1.在上章-移植uboot里.我们来分析下uboot是如何进入到内核的 首先,uboot启动内核是通过bootcmd命令行实现的,在我们之前移植的bootcmd命令行如下所示: bootcmd=nan ...

  7. ARM-Linux内核移植之(一)——内核启动流程分析

    内核版本:2.6.22  为什么要采用这样一个较低的版本进行移植了,因为韦东山大牛说了,低版本的才能学到东西,越是高版本需要移植时做的工作量越少,学的东西越少. 内核启动分为三个阶段,第一是运行hea ...

  8. &lbrack;转帖&rsqb;Linux内核为大规模支持100Gb&sol;s网卡准备好了吗?并没有

    Linux内核为大规模支持100Gb/s网卡准备好了吗?并没有 之前用 千兆的机器 下载速度 一般只能到 50MB 左右 没法更高 万兆的话 可能也就是 200MB左右的速度 很难更高 不知道后续的服 ...

  9. linux4&period;10&period;8 内核移植(三)---裁剪内核

    一.裁剪内核 1.1 第一次修改 现在的内核大小为2.8M左右,要裁剪到2.0M以下,毕竟给内核分区就只有2.0M. 这两个设备我们没有,裁剪掉. 进入make menuconfig中,搜索mouse ...

随机推荐

  1. Android Studio增加NDK代码编译支持--Mac环境

    Android的APP开发基本都是使用Java或者跨平台框架进行开发的,对于很多APP来说已经足够了,但是,对于提供功能给外部使用或者性能要求很高的需求下,如图像处理等,可能会需要C/C++库的支持, ...

  2. RabbitMQ的几种典型使用场景

    RabbitMQ主页:https://www.rabbitmq.com/ AMQP AMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现.它主要包括以下组件: 1.Serve ...

  3. JS(javascript) 将网站加入收藏夹

    | 浏览:688 | 更新:2014-09-20 19:39 1 2 3 分步阅读 将网站网址加入收藏夹,方便下次访问! 工具/原料 网址: 电脑. 方法/步骤   //创建加入收藏夹JS函数 &lt ...

  4. 四个使用this的典型应用

    (1)在html元素事件属性中使用,如 <input type=”button” onclick=”showInfo(this);” value=”点击一下”/> (2)构造函数 func ...

  5. Allegro pcb -等长设计

    1.首先注意打开的Allegro PCB是哪个产品控件,如下图,若打开的是Allegro PCB Designer,在后面,看别人的讲解过程中会找不到“SiXplorer”,原因 就是出在这里,All ...

  6. 【Linux】【Apatch Tomcat】Linux、CentOS7安装最新版Apartch Tomcat环境

    1.前言 相当嫌弃,博客园搞掉了我快写完的 Tomcat. 请先安装 :[Linux][Java]CentOS7安装最新版Java1.8.191运行开发环境 虽然安装Tomcat没啥技术,但是还是记录 ...

  7. IntelliJ IDEA入门系列

    1.Java Web之Helloworld配置 2.Java Web之Maven搭建Helloworld 3.Java Web之Spring MVC简单管理系统

  8. 了解一下SQL映射文件

    1:SQL映射文件 MyBatis真正强大之处就在于SQL映射语句,相对于强大的功能,SQL映射文件的配置非常简单,与JDBC相比减少了50%的代码.下面是关于SQL映射文件的几个*元素配置 map ...

  9. 关于pycharm中安装第三方库时报错的解决办法(一)

    记录自己的生活!   一.事发背景 在pycharm中直接安装第三方库时因为版本问题总是无法安装成功,事情不大,但是很重要.   二.经过 最开始我自己电脑上安装了Python3.6和Python2. ...

  10. &period;net Json JavaScriptSerializer JsonHelper类

    结合.net 的JavaScriptSerializer 类实现Json数据处理 调用1: Model.Users m = BLL.UsersBLL.GetUserById(Convert.ToInt ...