用的是tiny210+1312的SDK,友善之臂给的文件系统居然有300多兆,烧写系统可是要人命了,那个等啊。。。所以,想着把系统给做小一点。和其他一样,我的知识仅限于理论阶段,嘿嘿。今天实践一下。

1. nand基础

nand的读写基础都是page,但是,因为没有直接操作过nand,没发现原来还有个spare。其中的spare是用来存放校验和的。也就是,实际的读写size,应该是page+spare。page的概念就烂大街了,在这里记录一下spare。Nand由于最初硬件设计时候考虑到,额外的错误校验等需要空间,专门对应每个页,额外设计了叫做spare area空区域,在其他地方,比如jffs2文件系统中,也叫做oob(out of band)数据。其具体用途,总结起来有:1)标记是否是坏块;2)存储ECC数据3)存储一些和文件系统相关的数据,如jffs2就会用到这些空间存储一些特定信息。

2. yaffs2基础

留白。

3. unyaffs2

因为不像从头做文件系统——可能以为着花很多时间去排除其他的错误。所以,首先想到的是把友善的系统拿来,剔除掉我不需要的即可。那么,就需要先把这个img给解开。事实上,用了好几个版本的unyaffs2,才把文件包给解开,最后拿到的是从github找来的最新yaffs2utils,unyaffs2版本是0.2.8(另外一个只有2进制的0.2.4也是可以用的)。

需要注意的是,解压时,最好是以root权限来进行操作(sudo,或者su)。因为,解压出的很多文件都是归root所有,而大多数linux发行版都使用SELinux的缘故,一般用户是无法对归“root”所有的文件进行操作的,所以,如果不是以root权限,便会平白无故的多出很多权限相关的问题来。

至于解压需要的page_size和spare_size,则要看具体的flash了。我这里的是2k + 64, 即2048和64,这个也是unyaffs2的默认值。

4.mkyaffs2

和上面的一样,没有什么需要特别注意的。从上面解压出的目录中,删掉该删的,添加我需要的库和配置文件。mkyaffs2 dir_name name.img 就可以了(同样的,它的默认值是2048和64)。

nand以及yaffs2的更多相关文章

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

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

  2. 转 -- OK6410 tftp下载内核、文件系统以及nand flash地址相关整理、总结

    转载地址:http://emouse.cnblogs.com/ 飞凌官方提供了一键下载烧写linux的方式,相对来说比较方便,但是对于开发来说不够灵活,因此这篇文章把tftp相关的点介绍一下,整理下其 ...

  3. DM6446开发攻略:UBOOT-2009.03移植及nand flash烧写

    有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-boot-2009.03差别不大,只不过这个u-boot-2009.03是从TI的网站上下载 ...

  4. yaffs文件系统

    1. 概述yaffs文件系统专为Nandflash设计的日志文件系统,占用page中oob区域.目前有两个版本的yaffs文件系统.nandflash不可靠,存在坏块,存在数据错误,需要软件弥补纠正此 ...

  5. u-boot 源码修改 bootcmd,IP ,BOOTARGS等参数

    uboot1.1.6\include\configs\smdk6410.h #define CONFIG_BOOTCOMMAND"nand read 0xc0008000 0x200000 ...

  6. 改进uboot,添加自定义快捷菜单

    .在common目录下新增cmd_menu.c文件,内容为: #include<common.h> #include<command.h> #ifdef CONFIG_MENU ...

  7. jz2440烧写开发板uboot,内核和文件系统等的相关命令

    下载文件{ftpget -u 1 -p 1 192.168.2.110 a.out a.outnfs 30000000(destination) 192.168.2.109:/home/fs/work ...

  8. tiny6410的启动参数

    bootargs=root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200 bootcmd=nand led ...

  9. JZ2440使用笔记之熟悉uboot和Linux的移植

    目录 一.点亮开发板:移植uboot.Linux内核.文件系统 1.1 配置上位机交叉编译环境 1.2 制作U-boot镜像文件 1.3 通过oflash.exe / openJTAG 烧写u-boo ...

随机推荐

  1. QT 记事本小程序

    //mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <Q ...

  2. jquery常用代码

    转自:未找到 以下是jquery中比较常用的一些操作实现方式: $("标签名") //取html元素 document.getElementsByTagName("&qu ...

  3. 工作随笔——Intellij_idea-14官方快捷键中文版

    听说Intellij Idea好几年了.因为快捷键的原因,所以一直没有放弃eclipse.上周末抽了点时间,用google翻译+自己实践翻译了一下官方的快捷键. 基本做完的时候在百度文库上突然搜索到一 ...

  4. 处理 EF 并发其实就这么简单

    最近项目有点闲,终于可以了解点自己想了解的了,以前听同事讲面试的经历总会被问到“如何处理高并发大数据” 乍一听感觉这东西好像很有学问的样子,于是并发这个词在脑海里留深刻印像,而且在自己心中的技术地位也 ...

  5. jQuery学习笔记(四):attr()与prop()的区别

    这一节针对attr()与prop()之间的区别进行学习. 先看看官方文档是如何解释两者之间功能差异的: attr() Get the value of an attribute for the fir ...

  6. [BZOJ3142][HNOI2013]数列(组合)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3142 分析: 考虑差值序列a1,a2,...,ak-1 那么对于一个确定的差值序列,对 ...

  7. CMD命令简单使用

    1.定位磁盘 2.打开文件路径 3.查看文件目录里面所有的文件或目录信息

  8. 在eclipse中使用第三方库总结

    一.建立user library 导入第三方jar文件,最简单的方式是:右键工程/属性/java build path/add external jars. 另一种方式是:window/prefren ...

  9. 当在XP系统上无法安装Mysql ODBC时,怎么办?

    system32下面缺失如下连接中的dll http://www.33lc.com/soft/19950.html 这个dll名为: msvcr100.dll 本来安装过程中会出现Error 1918 ...

  10. 如何在UIimageview里显示一张图片里的某一部分

    首先,获取想要显示的部分的大小及位置 CGRect rect: 然后,将此部分从图片中剪切出来 CGImageRef imageRef=CGImageCreateWithImageInRect([im ...