0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

QSPI Flash創(chuàng)建UBIFS 5步流程

454398 ? 來源:賽靈思中文社區(qū)論壇 ? 作者:賽靈思中文社區(qū)論 ? 2020-12-08 15:07 ? 次閱讀

測試工具版本:PetaLinux 2018.2
測試單板: ZCU106

UBIFS是更強(qiáng)壯的FLash文件系統(tǒng)。很多嵌入式系統(tǒng)都使用了UBIFS。

Xilinx PetaLinux 2018.2也支持UBIFS。只需要在Linux/U-Boot里添加相關(guān)配置選項(xiàng),就能為QSPI Flash創(chuàng)建UBIFS。

第1步,為Linux Kernel添加UBIFS配置選項(xiàng)。

需要注意的是,需要去掉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配置選項(xiàng)。

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步,根據(jù)單板需要,定義Flash分區(qū)。

啟動后,在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里創(chuàng)建和掛載UBIFS分區(qū)。

如果是第一次啟動,在Linux里創(chuàng)建和掛載UBIFS分區(qū)。

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分區(qū)。

ubiattach /dev/ubi_ctrl -m 3
mount -t ubifs ubi0:qspi_ubi0 /qspi_fs

第5步,創(chuàng)建分區(qū)后,在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

更詳細(xì)的在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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1598

    瀏覽量

    147339
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    40

    文章

    3520

    瀏覽量

    128805
  • UBIFS
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6909
收藏 人收藏

    評論

    相關(guān)推薦

    編譯可在QSPI Flash上運(yùn)行的程序

    在前文中已經(jīng)實(shí)現(xiàn)了一個能夠在 MDK 平臺進(jìn)行下載代碼到 QSPI Flash 中的下載算法,以及一個能跳轉(zhuǎn)執(zhí)行應(yīng)用程序的 2nd Bootloader,但若想將代碼下載到 QSPI Flas
    的頭像 發(fā)表于 03-31 09:50 ?2794次閱讀
    編譯可在<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>上運(yùn)行的程序

    自帶的QSPI flash如何下載

    有個一直很頭疼的問題就是自帶的QSPI flash如何下載的問題,我們以 STM32F7Discovery官方資料-1\STM32Cube_FW_F7_V1.1.0\Projects
    發(fā)表于 08-04 06:16

    什么是QSPI?如何使用QSPIQSPI Flash進(jìn)行通信呢?

    吧,直接 16 根數(shù)據(jù)信號線,速度自然變得更快了,但使用 SPI FLash,不就是圖一個線少嘛?! 榱朔奖忝枋?,我們將使用 QSPI 接口連接的 SPI Flash 稱之為 QSPI
    發(fā)表于 03-17 15:17

    UBIFS損耗均衡對系統(tǒng)I/O性能的影響

    分析flash 文件系統(tǒng)的損耗均衡問題,指出損耗均衡的觸發(fā)條件對系統(tǒng)I/O 性能的影響。在最新UBIFS 文件系統(tǒng)上運(yùn)行測試程序,結(jié)果證明在不同損耗均衡觸發(fā)條件下,系統(tǒng)I/O 性能的
    發(fā)表于 03-30 10:10 ?24次下載

    GD32-Colibri-F207實(shí)驗(yàn)板QSPI_FLASH

    GD32-Colibri-F207實(shí)驗(yàn)板QSPI_FLASH,很好的GD32資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-21 16:35 ?26次下載

    如何使用QSPI Flash控制器開發(fā)板上的 QSPI Flash進(jìn)行寫讀操作

    學(xué)習(xí)內(nèi)容 本文首先介紹FlashQSPI Flash控制器的相關(guān)內(nèi)容,然后使用 QSPI Flash 控制器,開發(fā)板上的
    的頭像 發(fā)表于 06-10 17:08 ?1.3w次閱讀
    如何使用<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>控制器開發(fā)板上的 <b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>進(jìn)行寫讀操作

    STM32CubeIDE XiP 和 BootROM介紹, XiP外部內(nèi)存QSPI FLASH執(zhí)行用戶代碼

    STM32CubeIDE XiP 和 BootROM介紹, XiP外部內(nèi)存QSPI FLASH執(zhí)行用戶代碼
    發(fā)表于 12-02 09:21 ?14次下載
    STM32CubeIDE XiP 和 BootROM介紹, XiP外部內(nèi)存<b class='flag-5'>QSPI</b> <b class='flag-5'>FLASH</b>執(zhí)行用戶代碼

    【STM32H7】第20章 ThreadX GUIX漢字顯示(QSPI Flash全字庫)

    【STM32H7】第20章 ThreadX GUIX漢字顯示(QSPI Flash全字庫)
    發(fā)表于 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是更強(qiáng)壯的FLash文件系統(tǒng)。很多嵌入式系統(tǒng)都使用了UBIFS。Xilinx PetaLinux 2018.2也支持UBIFS。只需要在Linux/U-Boot里添加相關(guān)配置
    發(fā)表于 08-02 15:51 ?1645次閱讀

    QSPI flash上運(yùn)行毫米波芯片的測試代碼

    QSPI flash上運(yùn)行毫米波芯片的測試代碼
    發(fā)表于 10-28 12:00 ?0次下載
    在<b class='flag-5'>QSPI</b> <b class='flag-5'>flash</b>上運(yùn)行毫米波芯片的測試代碼

    工程師筆記|通過 KEIL 制作 QSPI 接口的外部 Flash 下載算法

    關(guān)鍵詞:KEIL,QSPI,下載算法 目錄預(yù)覽 1. 引言 2. MDK 下載算法基礎(chǔ)知識 3.?程序擦除操作執(zhí)行流程 4.?程序燒錄操作執(zhí)行流程 5. 程序校驗(yàn)操作執(zhí)行
    的頭像 發(fā)表于 02-12 12:10 ?3013次閱讀

    微控制器外置QSPI Flash選型的注意事項(xiàng)

    為了擴(kuò)展微控制器可用的 Flash 空間,用戶可以使用 QSPI 接口連接 QSPI Flash;為了讓用戶能盡量像使用片內(nèi) Flash
    的頭像 發(fā)表于 04-07 09:23 ?1836次閱讀

    mm32-2nd-bootloader技術(shù)白皮書(5)——編譯可在QSPI Flash上運(yùn)行的程序

    mm32-2nd-bootloader技術(shù)白皮書(5)——編譯可在QSPI Flash上運(yùn)行的程序
    的頭像 發(fā)表于 10-24 16:14 ?372次閱讀
    mm32-2nd-bootloader技術(shù)白皮書(<b class='flag-5'>5</b>)——編譯可在<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>上運(yùn)行的程序

    通過KEIL制作QSPI接口的外部Flash下載算法

    電子發(fā)燒友網(wǎng)站提供《通過KEIL制作QSPI接口的外部Flash下載算法.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 16:26 ?7次下載
    通過KEIL制作<b class='flag-5'>QSPI</b>接口的外部<b class='flag-5'>Flash</b>下載算法

    在mmWave SDK增加QSPI Flash驅(qū)動的示例

    電子發(fā)燒友網(wǎng)站提供《在mmWave SDK增加QSPI Flash驅(qū)動的示例.pdf》資料免費(fèi)下載
    發(fā)表于 09-11 14:20 ?0次下載
    在mmWave SDK增加<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>驅(qū)動的示例