欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

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

程序员文章站 2022-08-10 10:43:09
在上章-制作文件系统,并使内核成功启动jffs2文件系统了 本章便开始使内核支持烧写yaffs2文件系统 1.首先获取yaffs2源码(参考git命令使用详解) 2.将yaffs2源码来配置到内核里(使内核支持yaffs2) 找到以下几段话: 参考上图: 搜索yaffs,找到位于: -> File ......

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

本章便开始使内核支持烧写yaffs2文件系统

 


 

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.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

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

 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文件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成功:

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

 

 

未完待续,下章来裁剪3.4内核,并制作补丁~~