【转】搞定了YAFFS IMAGE烧写在新内核linux2.6.23.9上

linux下支持yaffs2文件系统与yaffs2文件系统制作 搞了2周终于解决这个问题了,网上的资料比较散乱,在这里总结下: 1.如果可以使用inband_tag方式的话,可以不用进行操作2,直接nand write就可,具体参照下面网站操作: https://blog.csdn.net/boysic/article/details/82178386 2.在uboot上增加烧录yaffs2文件系统的命令:nand write.yaffs2,如下网址,亲测有效,我的uboot版本是2010.06 http://www.linuxidc.com/Linux/20. 阅读详情

来源:http://www.armchina.cn/article.asp?id=64

 

经过分析(参见我上一篇日志),一切都变得很明晰了!终于搞定了YAFFS IMAGE烧写在新内核linux2.6.23.9上。
新的yaffs2代码是通过nandmtd1_WriteChunkWithTagsToNAND写NAND的,写入nand的oob不再是调整的yaffs_spare结构,而是yaffs_PackedTags1结构!
在mkyaffsimage中却还是没有改过来。这也是为什么好多人反应,烧写的yaffs image在mount之后只能看见lost +found,其他什么都没有。
所以简单的修改一下mkyaffsimage.c就行拉,可以参考nandmtd1_WriteChunkWithTagsToNAND这个函数。
把修改mkyaffsimage的关键代码贴出来
static int write_chunk(__u8 *data, __u32 objId, __u32 chunkId, __u32 nBytes)
{
    yaffs_Tags t;
    yaffs_Spare s;
    yaffs_PackedTags1 pt1; //add by hiboy
    yaffs_ExtendedTags  etags;
    __u8 oobdata[16];
    error = write(outFile,data,512);
    if(error < 0) return error;

    etags.chunkId = chunkId;
    etags.serialNumber=0;
    etags.byteCount=nBytes;
    etags.objectId=objId;
    
    yaffs_PackTags1(&pt1, &etags);
    yaffs_CalcTagsECC((yaffs_Tags *)&pt1);
    ((__u8 *)&pt1)[8] = 0xff;
    memset(oobdata,0xff,16);
    memcpy(oobdata+8,&pt1,8);
    
    nPages++;
    
    //return write(outFile,&s,sizeof(yaffs_Spare));
    return write(outFile,oobdata,16); //YTAG1_SIZE
}
这里的16字节oob符合nand mtd的要求,低8字节保留0xFF给MTD,高8字节yaffs_PackedTags1结构,符合目前yaffs2的代码。
这样通过mkyaffsimage制作的yaffsimage通过mtd_util烧到nand中就正确了:
./flasheraseall /dev/mtdX
./nandwrite -a -o /dev/mtdX YAFFSIMAGE

让uboot烧写yaffs也很简单了,因为先前我发布过能够烧写YAFFS的uboot,他使用nand而不是nand legacy,关于代码的修改就留给读者自行完成了。我回头也再试一下

一次有趣(痛苦)的yaffs2文件系统的制作,烧写过程 大体经历,刚开始制作简单的文件系统,制成yaffs2镜像文件,进行烧写,由于配置文件的问题,无法运行。 接着,就选择了linux内核中rootfs.cpio包来制作文件镜像。 (一)、简易的根文件系统的制作 工具:Busybox1.19.2 step1.Busybox的配置和编译见网络。 step2.建立... 阅读详情

相关推荐

Windows10下RTABMAP+T265实现三维建图

win10+rtabmap+t265扫描地形

Suxiang1997的博客 3486

一步一步制作yaffs/yaffs2根文件系统(五)---生成yaffs/yaffs2镜像文件及下载到开发板

开发环境:Ubuntu 12.04                             开发板:mini2440  256M NandFlash   64M SDRAM                              交叉编译器:arm-linux-gcc 4.4.3 点此可下载                              BusyBox版本:busybox-1.

王文松的博客 1万+

激光雷达接收芯片选型指南:APD、SiPM、SPAD阵列的优缺点对比

本文深入对比了激光雷达接收芯片APD、SiPM和SPAD阵列的核心技术原理与性能差异。APD作为线性模式工作的稳健选择,动态范围大;SiPM具备单光子探测和高增益优势;而SPAD阵列凭借像素级数字读出和集成TDC,在时间分辨率与系统集成度上领先。文章从灵敏度、时间精度、动态范围及系统成本等多维度剖析,为不同应用场景(如车载雷达、Flash LiDAR、消费电子)的芯片选型提供实战指南。

ik6789012的博客 656

使用nandwrite烧写yaffs2文件系统

说一下我的开发环境 CPU: AT91SAM9G45

三多 4913

【Verilog】valid-ready双向握手机制 ——很绕但是很有意思

valid-ready双向握手机制。

GalaxyerKw的博客 1万+

打造会自主学习的 AI 助手:OpenClaw 记忆系统完全指南

这不是科幻,这是我正在使用的系统。我的 AI 助手「小琳」已经运行了一段时间,积累了大量的知识和经验,而且还在不断学习成长。心跳(Heartbeat)是 OpenClaw 的定时轮询机制,可以让 AI 主动做一些事情。你有没有遇到过这样的困扰:每次和 AI 对话,它都像失忆了一样,之前聊过的内容完全不记得?设置定时任务:每天早上 8 点,查询天气和热点新闻,通过钉钉推送给我。让你的 AI 助手拥有持久记忆,能够自主学习、总结经验、不断成长。这不仅仅是一个「能记住事情的 AI」,而是一个。

Honmaple的博客 1633

Linux内核---22.mkyaffs2image

Linux内核---22.mkyaffs2image

wangcong02345的专栏 1311

UE5 Compute Shader实战:从基础到高级应用全解析

本文全面解析了在UE5中应用Compute Shader的完整流程,从基础概念、环境搭建到核心机制与实战应用。详细介绍了如何通过参数传递、线程派遣与数据读写实现GPU并行计算,并深入探讨了GPU粒子模拟、性能优化及结合光线追踪等高级应用场景,为开发者掌握UE5高性能计算提供系统指导。

yhn45678901的博客 499

yaffs2img linux,mkyaffs2image的用法

在Ubuntu中第一次使用mkyaffs2image命令时,会提示mkyaffs2image:找不到命令还需要安装mkyaffs2image下载yaffs2-source.tar解压后,进入utils文件夹,然后make将make之后生成的mkyaffs2image文件拷贝到/usr/bin目录下$ su# cp mkyaffs2image /usr/bin/# chmod 777 /usr/bi...

weixin_42512842的博客 577

Unity VR 零基础开发之 Pico4 MR

2、弹出弹窗后,点击Android选项,然后再点击Switch Platform按钮切换成安卓平台。3、切换完成后Android选项后面会显示unity图标。

十画的博客 5096

干掉百度Apollo的安装!(Apollo10.0的源码安装)

1、在Apollo10.0的安装手册中,没有再详细给出源码安装的步骤,官方更推荐的是包管理安装,但实际上Apollo10.0仍然是可以进行源码安装的。2、使用源码安装Apollo10.0,比Apollo9.0的源码安装问题要少,整个安装过程更顺畅。3、从Apollo 10.0开始,源码安装和包管理安装采用同一套编译工具,也就是aem。之前只有在进行包管理安装的时候我们才需要安装aem,现在进行源码安装也需要安装aem。

qq_40033030的博客 892

制作jffs2文件系统时遇到的错误————转载

由于粗心大意,又耽误了一天,不过这一天也对jffs2文件系统的制作了解了更多,前面主要是操作错误,写nand flash时我用的是nand write,而文章:在nand flash上实现JFFS2根文件文件系统中用的是:  nand write.jffs2 300008000 200000 800000  不过启动后,还有些问题:  VFS: Unable to mount

laughing_zhu的专栏 2415

【深度学习】Progressive Distillation for Fast Sampling of Diffusion Models

这种方法通过迭代地将一个需要较多步骤的模型(称为教师模型)蒸馏成一个需要较少步骤的学生模型,每次迭代都将采样步骤减半,直到达到所需的采样步骤数量。通过渐进式蒸馏,论文将原始需要8192步采样的模型成功蒸馏为只需4步采样就能取得接近的生成质量的新模型,大幅提高了扩散模型的推理效率。这篇论文提出了一种"渐进式蒸馏"(Progressive Distillation)的方法,来大幅降低用于生成对抗网络(GAN)的扩散模型(Diffusion Model)在推理阶段的采样步数,从而提高其推理效率。

q742971636的博客 1786

嵌入式linux烧录文件格式,嵌入式文件系统镜像制作及烧写

将rootfs和userdata两个目录分别制作为镜像文件进行烧写:镜像文件对应文件系统类型的选择,采用:rootfs制作为rootfs.img镜像,采用的文件系统类型为cramfs,只读,用于保护根文件系统;userdata制作为userdata.img镜像,采用的文件系统类型为yaffs2,可读写;配置linux内核,支持两种文件系统:cd/opt/kernelmakemenuconfi...

weixin_28903111的博客 865

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

linux打包文件夹移植,根文件的制作与移植(yaffs2)

根文件的制作1. 准备根文件系统创建工作目录:$mkdir my_rootfs创建根文件系统的目录:$cd ./my_rootfs$mkdir bin dev etc home lib mnt proc sbin sys tmp var usr(12个目录)$mkdir etc/init.d2. 创建设备文件复制当前系统的设备文件:$cp -dpR /dev ./my_rootfs/dev如果使用...

weixin_32770687的博客 352

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

YAFFS2文件制作以及烧写工具的特殊处理

这部分讲描述yaffs2文件的制作,以及在烧写的过程中数据的处理。以便区分yaffs2文件和其它不同的文件系统。

曹太强的专栏 3635

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

开始阅读YAFFS源码 2.6.18以上需要打补丁 yaffs2 内核 kernel的ecc布局

开始阅读YAFFS2源码,有不少收获。初步明白为什么在新内核上原来的yaffs会有问题,让我突然觉得那些拿了别人可以烧写yaffs的uboot 又问linux 2.6.22怎么出问题的那些人挺可笑的,其实我自己一开始也这样,算是自嘲了。感觉纯粹的就是拿来,不去自己分析其中的问题,这样学不到东西。这两天我对原来uboot烧写yaffs的功能作了深入分析,因为补丁其实很短小,反复看看就明白

LYJ个人博客,记录技术、八卦、生活,分享各种心得,期待与朋友们一同进步 4885

创建yaffs文件制作工具

移植yaffs根文件系统,开发板是mini2440。NAND flash是64M的,由于yaffs2/utils中的mkyaffsimage程序只能生成老式的yaffs1映象文件,需要修改才能支持新格式。yaffs1新、老格式的不同在于oob区的使用发生了变化:一是ECC检验码的位置发生了变化,二是可用空间即标记(tag)的数据结构定义发生了变化。      移植uboot版本为uboot-20

river0351的专栏 905

linux封装工具下载,|mkyaffs2image(system.img解压打包工具)下载linux版 - 欧普软件下载...

mkyaffs2image是基于Linux系统推出的一款system.img解压打包工具,通过这款软件可以读取system.img文件信息,从而进行解包打包操作,对于Linux操作人员来说非常的方便,需要的朋友可以来本站下载!使用说明1.Ubuntu下,在任意文件夹下面建立一个system文件夹,我的是在home/jamly/下面建的2.将下载的自己喜欢的直刷ROM中的system.img复制到s...

weixin_27322123的博客 1482

uboot烧写命令--yaffs、jiffs和ubifs

如果要烧写的镜像的格式是yaffs2或者yaffs格式的,那么在往Nand Flash中烧写该镜像是必须采用nand write.yaffs,而不能采用nand write:     nand write.yaffs 0x82000000  0    13cb00            将内存地址0x82000000处的内容写到Nand Flash起始地址为0的地方,烧写大小为13cb...

weixin_33743703的博客 493

理解 Linux 动态库加载:LD_LIBRARY_PATH

flyfish

二分掌柜的 340

Linux-iostat命令详解

Linux命令学习记录

m0xin的博客 106

【Linux】APT 本地 deb 安装与 `-f` 参数总结笔记

apt install ./xx.deb 可自动解析并安装依赖,无需 -f;-f 仅用于修复已损坏的依赖状态,非首次安装时必需。apt install -f 可单独运行,修复 broken dependencies。两者职责不同:前者是安装与依赖解决,后者是故障修复。完全离线时需提前准备依赖包或本地源。

hknaruto的专栏 210

Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位

iptables 四表五链模型、firewalld zone 信任级别、云安全组与主机防火墙的关系与优先级,避坑改了防火墙把自己挡在服务器外面的翻车事故。

2502_91473995的博客 299

Linux rm 误删文件恢复实操教程

Linux使用rm删除文件时,并不会直接抹除磁盘上的数据,只是移除文件索引,让系统不再识别这块空间。只要没有写入新数据,原有扇区内容就会保留。新文件写入才有可能覆盖这些区域,一旦覆盖就很难找回。恢复的本质就是扫描磁盘,找到这些还存在、但索引丢失的数据条目,再把它们导出保存到其他分区。越早停止写入,恢复成功的概率越高。

海天数据恢复-winhex数据恢复教程 227
上一篇: 用insight(GDB的GUI端)调试时传入参数
下一篇: 【参考】+【原创】uboot 烧写 yaffs的补丁+补充
#Page#
博客等级 码龄23年 1691粉丝 360原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值