测试工具版本:PetaLinux 2018.2

测试单板: ZCU106

UBIFS是更强壮的FLash文件系统。很多嵌入式系统都使用了UBIFS。

Xilinx PetaLinux 2018.2也支持UBIFS。只需要在Linux/U-Boot里添加相关配置选项,就能为QSPI Flash创建UBIFS。

第1步,为Linux Kernel添加UBIFS配置选项。

需要注意的是,需要去掉SPI_NOR_USE_4K_SECTORS。

CONFIG_MTD_UBI=y

CONFIG_MTD_UBI_WL_THRESHOLD=4096

CONFIG_MTD_UBI_BEB_LIMIT=20

# CONFIG_MTD_UBI_FASTMAP is not set

# CONFIG_MTD_UBI_GLUEBI is not set

# CONFIG_MTD_UBI_BLOCK is not set

CONFIG_UBIFS_FS=y

# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set

CONFIG_UBIFS_FS_LZO=y

CONFIG_UBIFS_FS_ZLIB=y

CONFIG_UBIFS_ATIME_SUPPORT=y

# CONFIG_UBIFS_FS_ENCRYPTION is not set

CONFIG_UBIFS_FS_SECURITY=y

CONFIG_CRYPTO_DEFLATE=y

CONFIG_CRYPTO_LZO=y

# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set

第2步,为U-Boot添加UBIFS配置选项。

CONFIG_CMD_MTDPARTS=y

CONFIG_MTDIDS_DEFAULT=""

CONFIG_MTDPARTS_DEFAULT=""

CONFIG_CMD_MTDPARTS_SPREAD=y

CONFIG_CMD_UBI=y

CONFIG_CMD_UBIFS=y

CONFIG_MTD=y

# CONFIG_CFI_FLASH is not set

# CONFIG_ALTERA_QSPI is not set

CONFIG_MTD_UBI=y

CONFIG_MTD_UBI_WL_THRESHOLD=4096

CONFIG_MTD_UBI_BEB_LIMIT=20

# CONFIG_MTD_UBI_FASTMAP is not set

CONFIG_RBTREE=y

CONFIG_LZO=y

第3步,根据单板需要,定义Flash分区。

启动后,在Linux里可以通过命令 cat /proc/mtd检查。root@zcu106_vcu_trd:/qspi_fs# cat /proc/mtd

dev: size erasesize name

mtd0: 01e00000 00020000 "boot"

mtd1: 00040000 00020000 "bootenv"

mtd2: 00c00000 00020000 "kernel"

mtd3: 055c0000 00020000 "spare"

第4步,在Linux里创建和挂载UBIFS分区。

如果是第一次启动,在Linux里创建和挂载UBIFS分区。mkdir -p /qspi_fs

ubiformat /dev/mtd3

ubiattach /dev/ubi_ctrl -m 3

ubimkvol /dev/ubi0 -N qspi_ubi0 -m

mount -t ubifs ubi0:qspi_ubi0 /qspi_fs

如果不是第一次启动,直接在Linux里挂载UBIFS分区。ubiattach /dev/ubi_ctrl -m 3

mount -t ubifs ubi0:qspi_ubi0 /qspi_fs

第5步,创建分区后,在U-Boot里使用UBIFS。

sf probe 0 50000000 0

setenv partition "nor0,3" # Activate mtd3.

setenv mtdids "nor0=spi0.0"

setenv mtdparts "mtdparts=spi0.0:30m(boot),256k(bootenv),12m(kernel),87808k(spare)"

mtdparts

ubi part spare # Select mtd3.

mtd

ubifsmount ubi0:qspi_ubi0

ubifsls

ubifsload 0x2000000 qspi_fs_ready__do_not_remove.bin.md5

更详细的在U-Boot里使用UBIFS的记录。ZynqMP> sf probe 0 50000000 0

SF: Detected n25q512a with page size 512 Bytes, erase size 128 KiB, total 128 MiB

ZynqMP> setenv partition "nor0,3"

ZynqMP> setenv mtdids "nor0=spi0.0"

ZynqMP> setenv mtdparts "mtdparts=spi0.0:30m(boot),256k(bootenv),12m(kernel),87808k(spare)"

ZynqMP> mtdparts

device nor0 , # parts = 4

#: name size offset mask_flags

0: boot 0x01e00000 0x00000000 0

1: bootenv 0x00040000 0x01e00000 0

2: kernel 0x00c00000 0x01e40000 0

3: spare 0x055c0000 0x02a40000 0

active partition: nor0,3 - (spare) 0x055c0000 @ 0x02a40000

defaults:

mtdids :

mtdparts:

ZynqMP> ubi part spare

ubi0: attaching mtd2

ubi0: scanning is finished

ubi0: attached mtd2 (name "mtd=3", size 85 MiB)

ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 130944 bytes

ubi0: min./max. I/O unit sizes: 1/512, sub-page size 1

ubi0: VID header offset: 64 (aligned 64), data offset: 128

ubi0: good PEBs: 686, bad PEBs: 0, corrupted PEBs: 0

ubi0: user volume: 1, internal volumes: 1, max. volumes count: 128

ubi0: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 1968612066

ubi0: available PEBs: 0, total reserved PEBs: 686, PEBs reserved for bad PEB handling: 0

ZynqMP> ubifsmount ubi0:qspi_ubi0

UBIFS assert failed in ubifs_change_lp at 540

UBIFS assert failed in ubifs_release_lprops at 278

UBIFS assert failed in ubifs_change_lp at 540

UBIFS assert failed in ubifs_release_lprops at 278

UBIFS assert failed in ubifs_change_lp at 540

UBIFS assert failed in ubifs_release_lprops at 278

UBIFS assert failed in ubifs_change_lp at 540

UBIFS assert failed in ubifs_release_lprops at 278

ZynqMP> ubifsls

1024 Fri Feb 01 09:57:29 2019 qspi_fs_ready__do_not_remove.bin

76 Fri Feb 01 09:57:29 2019 qspi_fs_ready__do_not_remove.bin.md5

ZynqMP> ubifsload 0x2000000 qspi_fs_ready__do_not_remove.bin.md5

Loading file 'qspi_fs_ready__do_not_remove.bin.md5' to addr 0x02000000...

Done

ZynqMP> md 0x2000000

02000000: 63336432 36336334 35333664 33316537 2d3c4c36d6357e13

02000010: 65636164 31303032 61626234 62393632 dace20014bba269b

linux内核配置成qspi挂载,【分享】在Linux/U-Boot里为QSPI Flash使用UBIFS相关推荐

  1. linux内核配置成qspi挂载,Zynq-Linux移植学习笔记之十-qspi驱动配置

    1.  devicetree配置 devicetree中涉及到QSPI FLASH的部分如下: spi@e000d000 { clock-names= "ref_clk", &qu ...

  2. Linux内核配置(转)

    2.5  Linux内核配置选项 下面以最新的Linux 2.6.20内核为例,介绍比较常用的一些Linux内核配置选项,其他选项读者可以参考系统提供的帮助信息. 需要说明的是,在内核配置中,某项选择 ...

  3. Linux内核配置和编译

    一.引言:  本文档的内容大部份内容都是从网上收集而来,然后配合一些新的截 图(内核版本:V2.4.19).在每一配置项后会有一个选择指南的部份,用来指导大家怎么样 根据自己的情况来做相应的选择:还有 ...

  4. linux文件系统启动流程,linux 内核启动过程以及挂载android 根文件系统的过程

    转载 作者:汕头大学-黄珠唐 时间:2009 年10 月29 日 主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源 ...

  5. linux内核配置大全

    linux内核配置选项大全 Posted by isnull  on December 20, 2010  in SHELL | 0 Comment Code maturity level optio ...

  6. linux内核配置系统浅析(转)

    随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中.面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后, ...

  7. linux内核启动配置,启动linux内核配置

    启动linux内核配置 发布时间:2005-09-22 20:04:48来源:红联作者:ccs LILO 入门 现在是最后来重新配置 LILO 的时候了,它将负责载入新的内核.LILO 是最流行的 L ...

  8. Linux内核配置系统浅析

    随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中.面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后, ...

  9. arm linux 内核配置,Linux + ARM驱动开发环境配置(内核配置与编译)

    要想编写驱动,首先是建立内核目录树. ** 1.查看ARM开发板的内核版本 ** uname -a 我的arm开发板的版本是3.4.39 ** 2.安装必要的软件包 ** sudo apt-get i ...

  10. Linux 内核配置选项

    Linux 内核配置选项 第一部分 01.Code maturity level options ---> 代码成熟等级选项 01.01. [ ] Prompt for development ...

最新文章

  1. [恩难到了]陨石的秘密
  2. java gpio_Java控制树莓派GPIO口-Pi4J
  3. GitHub 宣布正式收购 npm | 云原生生态周报 Vol. 42
  4. zzuliOJ 2536: 绿绿学姐与AI 1
  5. mysql 视图 查询速度慢_mysql 视图查询速度慢
  6. 下载丨9月数据库技术通讯:Redo日志丢失,重建遭遇ORA-16433处理
  7. Eclipse安装SVN插件图文详解
  8. vue.js学习02之vue-cli脚手架创建项目环境搭建
  9. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_18_注解_案例_简单的测试框架...
  10. 安卓手机上最好用的3个azw3阅读器
  11. 删除右键新建多余菜单
  12. 空间后方交会编程c语言,单像空间后方交会(python实现)
  13. 大陆居民可以在香港汇丰银行开私人账户
  14. facebook获取好友头像
  15. 迪杰斯特拉--链式向前星
  16. Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
  17. linux 删除所有a字符串,linux文本处理三剑客(grep、sed、akw)命令选项整理
  18. Windows下Bonobo.Git.Server服务器的搭建
  19. navicat premium连接数据库出现2059错误
  20. 微电网数字孪生 | 智能时代,部署源网荷储一体化管控平台

热门文章

  1. js 正则表达式总结
  2. Java之品优购课程讲义_day03(6)
  3. html中文本域选中后会出现蓝边框
  4. 虚拟Linux系统使用Windows系统oracle数据库
  5. MapReduce 规划 系列十 采用HashPartitioner调整Reducer计算负荷
  6. Android 测试入门之---Monkey test
  7. 【转载】视频网站六间房将从200人减至60人裁员三分之二
  8. 把一个web项目改名后复制,再把改名后的web项目发布到tomcat,访问出现404错误的解决办法
  9. 对存在过期 binlog 的 MySQL5.7 添加从服务器
  10. 迷宫最短路径-货郎担问题的解决思路