嵌入式Flash设备的文件系统:jffs/jfss2和yasffs/yasffs2
1 Flash闪存类型
任何flash器件的写入操作只能在空或者已擦除的单元进行,在进行写入操作之前需要执行擦除
2 Linux内核中选项配置
2.1 文件系统公共选项:fs/Kconfig
ACL控制:访问控制列表
文件锁:CONFIG_FILE_LOCKING
模块:
通知机制
配额管理:ext2、ext3、reiserfs
自动挂载:CONFIG_AUTOFS4_FS
用户态完整的文件系统:CONFIG_FUSE_FS
缓存:Cache
分区类型:Partition Types
2.2 具体文件系统特性选项
CONFIG_YAFFS2_XXX
YAFFS_YAFFS1:是否支持YAFFS1
YAFFS_DOES_ECC:ECC校验
YAFFS_YAFFS2:
YAFFS_AUTO_YAFFS2
YAFFS_ALWAYS_CHECK_CHUNK_ERASED
YAFFS_EMPTY_LOST_AND_FOUND
YAFFS_DISABLE_BLOCK_REFRESHING
YAFFS_DISABLE_BACKGROUND
YAFFS_XATTR
Network FS
CONFIG_NFS_XXX (client)
NFS_COMMON
NFS_ACL_SUPPORT
Version:V3 V4
ROOT_NFS:如果需要使用NFS作为根文件系统,内核必须要设置支持NFS根文件系统
NFS_FSCACHE
NFS_USE_LEGACY_DNS / NFS_USE_KERNEL_DNS
3 内核修剪:文件系统相关
make ARCH=arm menuconfig
内置构建:增加内核镜像文件大小(常用)
模块构建:提供动态加载移除的灵活性
4 yaffs2文件镜像制作
下载yaffs2源码
git clone git://www.aleph1.co.uk/yaffs2
仅需要在utils目录下编译就能得到yaffs2工具
4.1 部分报错
In file included from mkyaffsimage.c:30:0:
yaffs_guts.h:502:2: error: unknown type name ‘YTIME_T’YTIME_T yst_uid;^~~~~~~
yaffs_guts.h:503:2: error: unknown type name ‘YTIME_T’YTIME_T yst_gid;^~~~~~~
.......
,在../yaffs_guts.h中加上如下定义:
#ifndef YTIME_T
#define YTIME_T time_t
#endif
yaffs_endian.h:28:15: error: unknown type name ‘u64’static inline u64 swap_u64(u64 val)^~~
yaffs_endian.h:28:28: error: unknown type name ‘u64’static inline u64 swap_u64(u64 val)^~~
yaffs_endian.h: In function ‘swap_ytime_t’:
yaffs_endian.h:43:32: error: ‘u64’ undeclared (first use in this function); did you mean ‘a64l’?if (sizeof(YTIME_T) == sizeof(u64))^~~a64l
yaffs_endian.h:43:32: note: each undeclared identifier is reported only once for each function it appears in
yaffs_endian.h:44:10: error: implicit declaration of function ‘swap_u64’; did you mean ‘swap_u32’? [-Werror=implicit-function-declaration]return swap_u64(val);^~~~~~~~swap_u32
yaffs_endian.h:44:10: error: nested extern declaration of ‘swap_u64’ [-Werror=nested-externs]
在../yaffs_endian.h文件添加如下定义:typedef unsigned long long u64;
make之后获得的工具
4.2 制作镜像
./mkyaffs2image ../mini_Linux_system image/rootfs.img
会生成一个根文件系统的yaffs2影响文件。但是Flash上烧录系统需要涉及Flash的分区。
5 Flash分区和镜像烧录
5.1 Flash设备分区
1、嵌入式通用Flash布局
BootLoader + kernel ++ rootfs + appfs
2、内核启动参数bootargs:mtparts
这个参数可以控制内核对Flash分区的设置
mtdparts: mtdparts=mtd-id:< size1 >@< offset1 >(< name1 >),< size2 >@< offset2 >(< name2 >)
Flash设备的标志号 分区描述:大小 @ 偏移 分区的描述
示例:
mtdparts=s5pv210-nand:1M(boot),5M(kernel),80M(rootfs),426M(usrfs)
想要参数起作用,内核中mtd驱动必须要支持,即内核配置是需要选上Command line partition table parsing
嵌入式Flash设备的文件系统:jffs/jfss2和yasffs/yasffs2相关推荐
- 嵌入式基于Flash上的文件系统
在嵌入式领域,FLASH是一种常用的存储介质,由于其特殊的硬件结构,所以普通的文件系统如ext2,ext3等都不适合在其上使用,于是就出现了专门针对FLASH的文件系统,比较常用的有jffs2,yaf ...
- flash和linux文件系统,面向大容量Flash的高效Linux文件系统改进和实现
摘要: 文件系统是Linux操作系统的重要组成部分.而本文对于面向大容量Flash文件系统高效性的研究则主要侧重于对于嵌入式Linux操作系统文件系统的研究.由于嵌入式设备介质的特殊性,电源系统的不稳 ...
- 嵌入式存储设备学习笔记
更多内容可关注微信公众号 ##各种非易失性存储设备 ###ROM/PROM/EPROM/EEPROM 在NOR/NAND flash出现之前,主要的非易失性存储设备是EPROM和EEPROM. ROM ...
- 嵌入式Linux设备驱动程序:编写内核设备驱动程序
嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...
- linux java升级版本_为嵌入式Linux设备实现更新/升级系统
我有一个在嵌入式Linux设备上运行的应用程序,并且偶尔会对软件进行更改,有时也会对根文件系统甚至已安装的内核进行更改 . 在当前的更新系统中,只删除旧应用程序目录的内容,并在其上复制新文件 . 当对 ...
- 对nand flash设备进行升级
前言 这段时间在给板子开发一个升级的功能,板子的Flash使用的是nand flash,使用mtd去管理分区.在正式开始讲升级部分之前,我们先了解一下nand flash和mtd的基本知识,最后我还会 ...
- 【IoT开发工具箱 | 02】嵌入式Linux设备网速测试方法
这是机器未来的第48篇文章 原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126847220 <IoT开发工具箱系列> ...
- 嵌入式linux设备驱动开发,嵌入式Linux设备驱动开发简介.pdf
清远见--嵌入式培训专家 http :// "黑色经典"系列之<嵌入式Linux 应用程序开发详解> 11 章 嵌入式Linux 设备驱动开发 本章目标 本书从 6 章 ...
- 嵌入式系统中的文件系统以及MTD
节介绍File System和MTD技术 一 FS 熟知的FS有ext2,3,4.但是这些都是针对磁盘设备的.而ES中一般的存储设备为Flash,由于Flash的特殊性: Flash存储按照Block ...
- 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态
嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程 ...
最新文章
- android exchange服务,带有“ Service com.android.exchange.ExchangeService
- php is_dir 判断是否存在这目录
- git新建空白文件没有生效
- 通过配置hosts.allow和hosts.deny文件允许或禁止ssh或telnet操作
- eigen 编译_四足机器人优化方法:Webots下Eigen与qpOASES非线性优化库环境搭建
- 单向链表存储方式下插入、删除、搜索
- 音视频编解码常用知识点
- 解决python写入文件数据不全的问题
- win10图片浏览改回原来win7的模式
- 射影几何----二次曲线三角形调和定理的应用,圆锥曲线内接焦点三角形定理的证明【原创】
- 论文笔记(CPN):Cascaded Pyramid Network for Multi-Person Pose Estimation
- 爬取豆瓣电影分类排行榜
- [ZZ]通过修改键盘映射替代损坏按键
- SQL注入:sqli-labs lesson-8 lesson -9 基于布尔值和基于时间的盲注!
- 三、nginx服务的nginx.conf的参数配置解析
- 台式计算机报废如何进行处置,设备报废处置请示.doc
- Redis教程(上课笔记)
- “超越融合 异筑信创”,AntDB数据库携手超云等生态伙伴共建信创大生态
- Code VBA完整代码块,创建Visual Basic源代码
- 制作一个3D旋转相册
热门文章
- 衣带渐宽终不悔,为“指针”消得人憔悴(一)
- 【redis源码学习】rax,我愿称之为“升级版字典树”
- 第三方支付之支付宝支付
- vue对vue-giant-tree进行节点操作
- 论文到底怎么降重才有效
- python中的二维列表(实例)_python实现两个一维列表合并成一个二维列表
- 行业知识图谱调查报告(一):知识图谱概述
- asp.net汉字转拼音 可返回拼音首字母
- 谷歌抢注18个“.中国”域名:扫清障碍
- 计算机为什么选择二进制?