问题分析:

为了将IPRAN平台的APP烧录到nandflash,需要解决如下问题:

  1. linux内核启动后,挂载nandflash设备时,采用的ubi的文件系统。所以,烧录到nandflash的必须是一个ubi格式的文件系统。
  2. 挂载后的nandflash,有home和data两个卷,所有,烧录的ubi格式的文件系统必须已经包含home和data两个卷(以下方式不适用与创建两个或者多个分区的情况)
  3. Nandflash不像norflash可以字节编程,nandflash是块设备且在生产和使用过程中会产生坏块,nandflash通过ECC校验解决该问题,校验信息存在OOB数据区。这就需要在制作烧录文件时,追加这部分信息。

为了解决上述3个问题,按如下步骤逐步解决以上问题:

1、创建工作目录,目录结构如下:

/home

/bin

/data

/dat

/ver

将IPRAN平台APP解压到 /hom/bin 目录下。

2、将IPRAN平台APP制作成可烧录到nandflash的ubi格式的文件系统镜像。/home 目录制作成 home.img,大小为80M,/data 目录制作成 data.img,大小为160M。命令如下:

mkfs.ubifs -r ./bin/home -m 2048 -e 126976  -c  640 -o home.img

mkfs.ubifs -r ./bin/data -m 2048 -e 126976  -c  1280 -o data.img

选项说明:

-r:创建文件系统镜像的原目录;

-m:最小I/O单元,即NAND FLASH一个page的大小;

-e:逻辑擦除块大小,即leb-size;

-c:最大逻辑擦除块的;

-o:输出文件名称;

3、制作成ubi格式的文件系统可烧录程序

ubinize -o ubifs  -m 2048 -p 128KiB -s 2048 -O 2048 ubi.cfg

选项说明:

-o:输出文件名称;

-m:最小I/O单元,即nandflash一个page的大小;

-p:物理擦除块的大小(强制参数);

-s:最小的硬件输入输出页面大小,即:--sub-page-size;

-O: VID头相对物理擦除块起始地址的偏移量(默认是下一个EC之后的最小I / O单元或子页面头);

Ubinize的配置文件ubi.cfg内容如下:

[home]
mode=ubi--------------------------------固定值
image=home.img----------------------镜像源文件
vol_id=0----------------------------------卷ID
vol_size=83886080--------------------卷的大小
vol_type=dynamic
vol_alignment=1
vol_name=home------------------------卷名[data]
mode=ubi
image=data.img
vol_id=1
vol_size=167772160
vol_type=dynamic
vol_alignment=1
vol_name=data
vol_flags=autoresize

3、添加OOB数据(位于nandflash的spare区)。

通过软件的方式计算从EEC校验值,然后添加到ubi镜像文件中。

(nandflash的驱动程序采用的是软件ECC方式,本人未测试过硬件ECC的情况)

串行nandflash芯片MX35LF2GE4AB的ECC校验代码是linux内核源码中的 drivers/mtd/nand/nand_ecc.c 中的,代码详见 nand_calculate_ecc() 函数。算法说明详见内核源码 documentation/mtd/nand_ecc.txt 文件。在此不赘述。

对于MX35LF2GE4AB芯片,通过实验得知,OOB数据位于spare区的最后24字节中。如下如图所示(XX表示OOB数据):

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

XX

注意:

如果是spare区为128字节,则剩余部分需要用0xFF补全,即:每页需要添加128字节的OOB数据。例如:镁光的串行flash MT29F2G01ABAGDWB,每页有2176字节(2048+128),当添加OOB数据的时候,需要填充128字节到烧录文件中。

相关代码及编译脚本见如下链接(Linux version 4.9.65):nandflash烧录文件制作

nandflash烧录文件制作(ubi文件系统)相关推荐

  1. 解压ubi文件_制作ubi文件系统

    制作 ubi 文件系统 目录 开发环境 ................................................................................ ...

  2. 解压ubi文件_请问为什么AM3352 NAND FLASH UBI文件系统挂载失败?

    本帖最后由 一只耳朵怪 于 2018-6-21 11:08 编辑 各位好: 在NAND FLASH中写入ubi文件系统,内核启动时出现挂载失败. SDK:ti-processor-sdk-linux- ...

  3. 嵌入式 详解制作根文件系统以及文件系统中init以及其他文件详解

    一.FHS(Filesystem Hierarchy Standard)标准介绍 当我们在linux下输入ls  / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行 ...

  4. linux内核创建ubi,UBI文件系统制作和挂载

    关于参数可以参考attach的命令输出: root@ubuntu:~# ubiattach  /dev/ubi_ctrl -m 4 -d 0 UBI device number 0, total 40 ...

  5. linux烧录文件的格式,制作emmc 烧录文件

    量产需要统一使用烧录器烧录, 需要制作统一的 emmc 烧录文件,主要升级步骤如下: 工具: ISP tool; winhex ; checksum , mboottnize ; U盘(大于主板 EM ...

  6. 最小镜像文件制作【树莓派镜像】,简单有效,已经制作多次。使用Linux系统,只有Win系统的不适合。及再次烧录后启动可能出现的问题解决办法。

    目录 一.前言 二.平台选择 1.Win系统:优缺点 2.Linux系统:优缺点 三.制作(只要两步[加上安装gparted,算三步]) 1.安装gparted 2.使用gparted (1)运行gp ...

  7. UBI 文件系统移植 sys 设备信息【转】

    转自:http://blog.chinaunix.net/uid-25304914-id-3058647.html cat /sys/class/misc/ubi_ctrl/dev --------- ...

  8. Hi3516A开发-- UBI 文件系统使用指南

    这篇文章在 Hi3516A V100R001C01SPC050\02.Only for Reference\02.software\documents_cn\UBI 文件系统使用指南.pdf 拿出来只 ...

  9. UBI文件系统(转)

    UBI-Unsorted Block Imagine http://www.linux-mtd.infradead.org/doc/ubi.html 1.注意 很多人搞不清楚UBI到底是什么,这就是写 ...

最新文章

  1. Soldier and Badges
  2. 简明 Python 编程规范
  3. Flash数据的采集方法-搜房房价走势采集
  4. 五种计算机编程语言注定要衰落,牛逼的你怎么看呢???
  5. Eclipse 自动注释的设置
  6. AspectJ——AOP框架快速入门
  7. 小程序秒杀活动服务器,微信小程序官方上线张大仙周年活动,人数太多把服务器弄崩溃了...
  8. jeecg 与 jeecg-p3有什么区别?
  9. Spark入门(Python)
  10. 电脑备忘录软件测试自学,软件测试经验和教训分享.pdf
  11. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_1_线程状态概述...
  12. FPGA图像处理 —— fpga实现cameralink接口图像传输
  13. 【python爬虫】反反爬之破解js加密--入门篇:谷歌学术镜像搜索(scmor.com)
  14. 时间线MindMap里程碑的使用方法
  15. iOS调用系统相机将英文改成中文
  16. 如何修改pdf文件内容并保存
  17. 个人简历应聘优势怎么写? 个人优势让你的简历模板加分
  18. ESP32之蓝牙配网blufi
  19. java中appletviewer是什么意思_自动生成供AppletViewer运行Java Applet的HTML文件
  20. Dragger.android的使用

热门文章

  1. TensorFlow 2.0 U-Net图像分割教程
  2. 电化学气体传感器电路分析
  3. clickhouse建表,字段类型设置为可为null类型
  4. C语言实现正余弦函数图像的输出!(源码)
  5. Springboot之Excel表格导出
  6. iOS 9 的新特性
  7. 使用stram流从list集合中取出一个或两个属性值
  8. ubuntu安装rvm
  9. 黑龙江省计算机软件专科学校,黑龙江省主要大专院校及专业统计.doc
  10. 去掉图片转换后的黑色背景