linux内核配置成qspi挂载,【分享】在Linux/U-Boot里为QSPI Flash使用UBIFS
测试工具版本: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相关推荐
- linux内核配置成qspi挂载,Zynq-Linux移植学习笔记之十-qspi驱动配置
1. devicetree配置 devicetree中涉及到QSPI FLASH的部分如下: spi@e000d000 { clock-names= "ref_clk", &qu ...
- Linux内核配置(转)
2.5 Linux内核配置选项 下面以最新的Linux 2.6.20内核为例,介绍比较常用的一些Linux内核配置选项,其他选项读者可以参考系统提供的帮助信息. 需要说明的是,在内核配置中,某项选择 ...
- Linux内核配置和编译
一.引言: 本文档的内容大部份内容都是从网上收集而来,然后配合一些新的截 图(内核版本:V2.4.19).在每一配置项后会有一个选择指南的部份,用来指导大家怎么样 根据自己的情况来做相应的选择:还有 ...
- linux文件系统启动流程,linux 内核启动过程以及挂载android 根文件系统的过程
转载 作者:汕头大学-黄珠唐 时间:2009 年10 月29 日 主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源 ...
- linux内核配置大全
linux内核配置选项大全 Posted by isnull on December 20, 2010 in SHELL | 0 Comment Code maturity level optio ...
- linux内核配置系统浅析(转)
随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中.面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后, ...
- linux内核启动配置,启动linux内核配置
启动linux内核配置 发布时间:2005-09-22 20:04:48来源:红联作者:ccs LILO 入门 现在是最后来重新配置 LILO 的时候了,它将负责载入新的内核.LILO 是最流行的 L ...
- Linux内核配置系统浅析
随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中.面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后, ...
- arm linux 内核配置,Linux + ARM驱动开发环境配置(内核配置与编译)
要想编写驱动,首先是建立内核目录树. ** 1.查看ARM开发板的内核版本 ** uname -a 我的arm开发板的版本是3.4.39 ** 2.安装必要的软件包 ** sudo apt-get i ...
- Linux 内核配置选项
Linux 内核配置选项 第一部分 01.Code maturity level options ---> 代码成熟等级选项 01.01. [ ] Prompt for development ...
最新文章
- [恩难到了]陨石的秘密
- java gpio_Java控制树莓派GPIO口-Pi4J
- GitHub 宣布正式收购 npm | 云原生生态周报 Vol. 42
- zzuliOJ 2536: 绿绿学姐与AI 1
- mysql 视图 查询速度慢_mysql 视图查询速度慢
- 下载丨9月数据库技术通讯:Redo日志丢失,重建遭遇ORA-16433处理
- Eclipse安装SVN插件图文详解
- vue.js学习02之vue-cli脚手架创建项目环境搭建
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_18_注解_案例_简单的测试框架...
- 安卓手机上最好用的3个azw3阅读器
- 删除右键新建多余菜单
- 空间后方交会编程c语言,单像空间后方交会(python实现)
- 大陆居民可以在香港汇丰银行开私人账户
- facebook获取好友头像
- 迪杰斯特拉--链式向前星
- Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
- linux 删除所有a字符串,linux文本处理三剑客(grep、sed、akw)命令选项整理
- Windows下Bonobo.Git.Server服务器的搭建
- navicat premium连接数据库出现2059错误
- 微电网数字孪生 | 智能时代,部署源网荷储一体化管控平台