历史上的今天
返回首页

历史上的今天

今天是:2025年11月17日(星期一)

正在发生

2022年11月17日 | S3C2440移植linux3.4.2内核之支持YAFFS文件系统

2022-11-17 来源:知乎

获取yaffs2源码并给内核打补丁

首先获取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

将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


编译内核make uImage


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

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



修改yaffs2源码


接下来我们便将fs/yaffs2文件夹添加到内核3.4的si工程中. 然后进入yaffs2/yaffs_vfs.c,第1958行: (linux下显示的是yaffs_vfs.c,vi可以打开yaffs_vfs.c。但是在si工程中没有找到yaffs_vfs.c,所以从ubuntu中拷贝一份yaffs_vfs.c添加到si中。)



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

所以接下来只有遇到与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);

全部修改后,将yaffs_vfs.c上传到ubuntu,再次make uImage, 报错如下



内核没有定义 d_alloc_root



我们在内核搜索下s_root看下别的文件系统怎么使用的。



全部修改后,将yaffs_vfs.c上传到ubuntu,再次make uImage,报错如下



估计是缺少下划线

修改完后重新编译 报错同样,没有在SI工程中找到yaffs_mtdif1.c,从ubuntu中拷贝下来,添加到si工程中。 上图报错的各个文件内的函数都要添加下划线



编译报错

把ubuntu上的yaffs_mtdif2.c文件拷贝到本地假如si工程,继续上述文件中的下划线



最终编译成功



拷贝


cp arch/arm/boot/uIamge /work/nfs_root/uImage_yaffs


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


mkyaffs2image  fs_mini_mdev_new  fs_mini_mdev_new.yaffs2


然后通过uboot来烧写yaffs2、烧写uImage发现没成功,我们用替代法查找问题 UBOOT可能有问题:换上1.1.6的UBOOT,文件系统启动成功 发现1.1.6的UBOOT没问题,所以就是我们移植的新UBOOT有BUG:


driversmtdnandNand_util.c
if (!need_skip && !(flags & WITH_DROP_FFS)) {


改为


if (!need_skip && !(flags & WITH_DROP_FFS) && !(flags & WITH_YAFFS_OOB)) {


最后启动yaffs2成功:


推荐阅读

史海拾趣

西安航天民芯公司的发展小趣事

除了商业产品的研发外,西安航天民芯还积极承担国家重大科研项目。公司参与了我国工业强基高性能工业DSP芯片等多项国产化项目的研发工作,为提升国家产业核心竞争力做出了贡献。这些项目的成功实施,进一步提升了西安航天民芯在行业内的影响力和地位。

Auctor Corp公司的发展小趣事

Auctor Corp公司的创始人,一群富有远见和冒险精神的工程师,怀揣着对电子技术的热情和对市场的敏锐洞察,决定共同创办这家公司。在创业初期,公司面临着资金紧张、技术储备不足等多重困难。然而,团队成员们凭借着坚韧不拔的精神和对技术的执着追求,通过自主研发和不断改进,逐渐在市场上站稳了脚跟。

Amperite Co公司的发展小趣事

在产品质量和技术水平得到市场认可后,Auctor Corp公司开始积极拓展市场。公司通过与国内外知名企业建立合作关系,成功将产品打入多个国家和地区的市场。同时,公司还注重品牌塑造,通过参加国际电子展会、举办产品发布会等方式,提升品牌知名度和影响力。这些举措使得Auctor Corp在电子行业中的地位逐渐提升。

ETTINGER公司的发展小趣事

在快速发展的电子行业中,Ettinger始终坚持传统工艺和品质至上的原则。公司不仅仍然由Ettinger家族所有,所有的产品制作也依然保持纯手工制作,以确保每一件产品都达到最高的品质标准。这种对品质和工艺的执着追求,使得Ettinger在竞争激烈的电子行业中独树一帜,赢得了消费者的信任和尊重。

ANOVA公司的发展小趣事

面对日益复杂多变的电子市场环境,ANOVA公司始终保持着清醒的头脑和敏锐的洞察力。无论是疫情带来的供应链挑战,还是技术更新换代带来的竞争压力,ANOVA都能迅速应对,不断调整策略,确保公司的稳健发展。同时,ANOVA也积极展望未来,不断探索新的业务领域和技术方向,以期在电子行业中继续保持领先地位。

这五个故事只是ANOVA公司发展过程中的冰山一角,但它们足以展现出ANOVA公司如何在电子行业中逐步崛起,成为一支不可忽视的力量。ANOVA以其卓越的技术实力、全球化的布局和紧密的合作伙伴关系,不断推动着电子行业的发展和进步。

D+H Mechatronic AG公司的发展小趣事

随着市场竞争的加剧,D+H Mechatronic AG开始调整其市场布局策略。公司根据市场需求和产品特点,有针对性地开拓新的市场领域。同时,公司还加强了与客户的沟通和合作,深入了解客户需求并提供定制化的解决方案。这些举措使公司在激烈的市场竞争中保持了稳定的增长态势,并逐步巩固了其在电子行业中的地位。

问答坊 | AI 解惑

使用中遇到的问题

今天使用TI提供的开发包里面的工程进行调试时,突然无法下载和调试,错误提示如下: Mon Jun 21 10:23:31 2010: Loaded macro file: C:\\Program Files\\IAR Systems\\Embedded Workbench& ...…

查看全部问答>

单片机开发只用C和汇编?

单片机开发只用C和汇编? 原来想搞单片机 不会C 从C学起 听人讲:既然学习C,可以直接从C++起步 开始学习C++ 又听人讲: 要是想搞单片机的话 单片机开发只用C和汇编 C++没有用 ¥#@……%@&%……*&%……(…

查看全部问答>

嵌入式培训专家华清远见600元代金券200元转让

嵌入式培训专家华清远见600元代金券200元转让    具体内容请看www.farsight.com.cn 培训内容很精,我听过驱动班,很不错的。 需要的请联系13581898986,   北京…

查看全部问答>

单片机编程交流群:10651014,欢迎大家加入

单片机编程交流群:10651014,欢迎大家加入…

查看全部问答>

有没人在弄IMX51+WINCE60? 我的系统怎么跑不起来啊,也不知道是软件问题还是硬件问题

有没人在弄IMX51+WINCE60? 我的系统怎么跑不起来啊,也不知道是软件问题还是硬件问题…

查看全部问答>

基于PC104下网卡的配置问题(82559ER)

在修改config.h文件时,引导行写的网卡类型为fei,发现下载不了!想问问是不是pc104的网卡(82559er)需要添加驱动网卡驱动??请各位指点迷津!谢谢了!!!…

查看全部问答>

求 wince下打包工具

请问各位大侠,你们在wince下打包的时候都用什么工具?…

查看全部问答>

wince下如何编写控制台程序?

我想在wince下写一个ping程序,如何在控制台下实现…

查看全部问答>

旋转LED 立体平面一体板制作 无线供电方式 分享制作资料

4种模式旋转LED,通过红外遥控切换任何一种模式。分别有立体显示字模式(通过上位机改立体显示字),平面显示字模式,平面显示数字钟模式,平面模拟表盘模式。      采用无线供电也很给力,支持平面和立体一起显示,非常赞 ...…

查看全部问答>

为什我我的modelsim始终添加不上xilinx的库文件呢?请各位看看我哪里操作的不对?

大家好:          我想用modelsim对xilinx工程进行仿真,但是现在xilinx库文件怎么都加不进去,各位帮我看看,我是不是漏掉了什么操作 首先 modelsim 和 ISE肯定都安装好了 然后点击ISE的“ Simulation Libra ...…

查看全部问答>