0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

QSPI Flash创建UBIFS 5步流程

454398 来源:赛灵思中文社区论坛 作者:赛灵思中文社区论 2020-12-08 15:07 次阅读

测试工具版本: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: minmax. 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

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1551

    浏览量

    146671
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3431

    浏览量

    128227
  • UBIFS
    +关注

    关注

    0

    文章

    5

    浏览量

    6891
收藏 人收藏

    评论

    相关推荐

    编译可在QSPI Flash上运行的程序

    在前文中已经实现了一个能够在 MDK 平台进行下载代码到 QSPI Flash 中的下载算法,以及一个能跳转执行应用程序的 2nd Bootloader,但若想将代码下载到 QSPI Flas
    的头像 发表于 03-31 09:50 2384次阅读
    编译可在<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>上运行的程序

    自带的QSPI flash如何下载

    有个一直很头疼的问题就是自带的QSPI flash如何下载的问题,我们以 STM32F7Discovery官方资料-1\STM32Cube_FW_F7_V1.1.0\Projects
    发表于 08-04 06:16

    如何在STUDIO下使用QSPI FLASH呢?

    最近用原子的STM32H750开发板,由于片内FLASH只有128k,如果上系统这些肯定不够,所以需要使用外扩的QSPI FLASH,在keil下我知道要增加三个地方,(1)初始化并设置QSP
    发表于 01-11 14:42

    什么是QSPI?如何使用QSPIQSPI Flash进行通信呢?

    吧,直接 16 根数据信号线,速度自然变得更快了,但使用 SPI FLash,不就是图一个线少嘛。  为了方便描述,我们将使用 QSPI 接口连接的 SPI Flash 称之为 QSPI
    发表于 03-17 15:17

    QSPI flash首次量产时推荐的编程方法是什么?

    对于我们的项目,我们将 QSPI 闪存连接到以下引脚: 而我们的板子会使用qspi flash作为默认的启动源,不会有任何其他的启动设备。在此配置中,我们应该如何处理 BOOT_CFG 引脚?从
    发表于 04-17 08:50

    UBIFS损耗均衡对系统I/O性能的影响

    分析flash 文件系统的损耗均衡问题,指出损耗均衡的触发条件对系统I/O 性能的影响。在最新UBIFS 文件系统上运行测试程序,结果证明在不同损耗均衡触发条件下,系统I/O 性能的
    发表于 03-30 10:10 24次下载

    GD32-Colibri-F207实验板QSPI_FLASH

    GD32-Colibri-F207实验板QSPI_FLASH,很好的GD32资料,快来学习吧。
    发表于 04-21 16:35 26次下载

    如何开发功能齐全的QSPI驱动

    QSPI驱动 在项目的开发中,我们经常会使用外挂Flash在做一些应用,而STM32H743带QSPI接口,可以用来外挂QSPI Flash
    的头像 发表于 09-25 14:42 3166次阅读
    如何开发功能齐全的<b class='flag-5'>QSPI</b>驱动

    如何使用QSPI Flash控制器开发板上的 QSPI Flash进行写读操作

    学习内容 本文首先介绍FlashQSPI Flash控制器的相关内容,然后使用 QSPI Flash 控制器,开发板上的
    的头像 发表于 06-10 17:08 1.2w次阅读
    如何使用<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>控制器开发板上的 <b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>进行写读操作

    【STM32H7】第20章 ThreadX GUIX汉字显示(QSPI Flash全字库)

    【STM32H7】第20章 ThreadX GUIX汉字显示(QSPI Flash全字库)
    发表于 12-02 09:36 14次下载
    【STM32H7】第20章 ThreadX GUIX汉字显示(<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>全字库)

    在Linux/U-Boot里为QSPI Flash使用UBIFS

    UBIFS是更强壮的FLash文件系统。很多嵌入式系统都使用了UBIFS。Xilinx PetaLinux 2018.2也支持UBIFS。只需要在Linux/U-Boot里添加相关配置
    发表于 08-02 15:51 1363次阅读

    QSPI flash上运行毫米波芯片的测试代码

    QSPI flash上运行毫米波芯片的测试代码
    发表于 10-28 12:00 0次下载
    在<b class='flag-5'>QSPI</b> <b class='flag-5'>flash</b>上运行毫米波芯片的测试代码

    工程师笔记|通过 KEIL 制作 QSPI 接口的外部 Flash 下载算法

    关键词:KEIL,QSPI,下载算法 目录预览 1. 引言 2. MDK 下载算法基础知识 3. 程序擦除操作执行流程 4. 程序烧录操作执行流程 5. 程序校验操作执行流程 6. M
    的头像 发表于 02-12 12:10 1933次阅读

    微控制器外置QSPI Flash选型的注意事项

    为了扩展微控制器可用的 Flash 空间,用户可以使用 QSPI 接口连接 QSPI Flash;为了让用户能尽量像使用片内 Flash
    的头像 发表于 04-07 09:23 1389次阅读

    通过KEIL制作QSPI接口的外部Flash下载算法

    电子发烧友网站提供《通过KEIL制作QSPI接口的外部Flash下载算法.pdf》资料免费下载
    发表于 09-19 16:26 2次下载
    通过KEIL制作<b class='flag-5'>QSPI</b>接口的外部<b class='flag-5'>Flash</b>下载算法