嵌入式Linux系统flash分区设计及文件系统格式选择的示例分析

技术嵌入式Linux系统flash分区设计及文件系统格式选择的示例分析本篇文章给大家分享的是有关嵌入式Linux系统flash分区设计及文件系统格式选择的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇

本文是关于嵌入式Linux系统的闪存分区设计和文件系统格式选择的实例分析。边肖觉得很实用,所以想分享给大家学习。希望大家看完这篇文章能有所收获。话不多说,让我们和边肖一起看看。

嵌入式系统应用频繁升级,合理划分闪存很有必要。通常,闪存的基本分区包括以下几个部分:

1.uboot分区。

2 .内核分区。

3.rootfs分区

这三部分是最基本的,也是普遍存在的。

如果只是这样分区,然后把应用和文件系统放在一起,在升级应用的时候会造成麻烦,因为应用和文件系统放在一起,每次都要把文件系统擦除再写,既浪费时间,风险又很大。如果正在擦除flash或写入镜像文件,会突然断电,导致设备无法启动(文件系统损坏)!这样,文件系统必须从uboot重新下载,给升级带来了很多麻烦。

在嵌入式系统的设计中,文件系统通常与频繁更新的应用程序分开,放在不同的闪存分区中。这样在升级时只需要擦除应用分区并重新更新即可,这样即使升级时断电也不会损坏文件系统,系统仍然可以启动。您可以将升级程序与文件系统放在一起,以便在设备重新启动后对其进行升级。

另一种方式是在Uboot中升级,无法避免断电带来的问题。事实上,最重要的是应用程序不能与文件系统放在一起。

有人在flash中做了“安全模式”分区。如果系统损坏,设备无法正常启动,可以从安全模式启动。安全模式只提供最基本的功能,比如升级和网络。这些基本功能可以帮助您重建系统。

这也类似于windows的win PE。

总之,升级整个文件系统来更新应用程序是最不可取的方法。

以下是一些常见的嵌入式系统文件系统格式:

其实大家都知道嵌入式根文件系统的格式,常用的有jffs2、cramfs、ramdisk、yaffs等。

他们各自的特点就不详细介绍了,但是百度和谷歌已经谈得很详细了。

下面是我在学习的时候遇到的一些问题和疑惑。

1 .闪存分区格式。

一开始我一直以为flash的分区应该对应一种格式,但是我很困惑很不解。有人问我你的根文件系统是什么格式。

我不知道怎么回答。后来发现这个闪存分区没有具体的格式。你下载的什么格式的文件系统就是什么格式。它在windows下没有类似c盘和D盘那样的FAT32格式和NTFS格式。windows下的这些格式也是格式化格式。这个格式化过程相当于在这个磁盘上安装一个基本文件系统。

2.文件系统格式。

这里的文件系统格式指的是jffs2、cramfs等。如上所述。这些文件系统格式需要内核支持,这通常是通过配置内核并在内核中选择相关选项来实现的。

简要介绍生产和使用的搭配。

当文件系统稳定并准备发布产品时,当系统和应用程序正式下载时,通常会将文件系统做成ramdisk形式,以防止嵌入式设备在运行过程中因不利的外部条件导致文件系统损坏而无法启动。Ramdisk从闪存中读取文件系统映像,并在系统启动后将其解压缩到内存中,因此在设备运行期间对文件系统所做的更改将在设备重新启动后恢复。Cramfs是一个只读文件系统。为什么这里没有选择cramfs作为设备的根文件系统格式?与ramdisk相比,cramfs文件系统确实有其优势,即它不会将所有文件解压缩到内存中,而是根据需要对大部分文件进行解压缩,这为嵌入式设备节省了内存,但也会导致设备运行速度比ramdisk更快;缺点是cramfs下无法创建文件,在程序正常运行过程中难免会重建一些临时文件(比如在Unix domain socket的指定目录下会创建一个文件),所以我觉得还是用ramdisk比较好。

Cramfs格式不是全盘否定。将应用程序做成cramfs格式是一个不错的选择。一般来说,我们不希望在应用程序运行过程中被改变。如果应用程序被做成cramfs,它将是只读的,所以它不会被损坏。

另外,我们的系统中会有一个参数分区,就是这个分区用来存储一些基本参数(配置文件)。该分区要求可读和可写。这时我们可以考虑jffs2文件系统,这是一个专为嵌入式系统设计的可读可写的文件系统。

一个完善的嵌入式系统至少应该分区文件系统、应用程序和参数,格式如上。这对于未来的升级和维护非常方便。

以上是嵌入式Linux系统中闪存分区设计和文件系统格式选择的实例分析。边肖认为,一些知识点可能会在我们的日常工作中看到或使用。我希望你能通过这篇文章学到更多的知识。更多详情请关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/40179.html

(0)

相关推荐

  • 如何解决Python3.6中PyKeyboard插件无法输入中文字符的问题

    技术如何解决Python3.6中PyKeyboard插件无法输入中文字符的问题本篇文章为大家展示了如何解决Python3.6中PyKeyboard插件无法输入中文字符的问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,

    攻略 2021年12月4日
  • 重用预训练的嵌入

    技术重用预训练的嵌入 重用预训练的嵌入重用预训练的嵌入
    TensorFlow Hub项目可以轻松地在自己的模型中重用经过预训练的模型组件。这些模型组件称为模块。只需要浏览TF Hub储存库,就能找到需要

    礼包 2021年12月20日
  • 扶桑花的寓意,盆栽扶桑花一年能开几次花

    技术扶桑花的寓意,盆栽扶桑花一年能开几次花大家好扶桑花的寓意,我是紫金。朱瑾就是扶桑花,盆栽朱瑾花一年开无数次花,只要大肥大水大太阳,它就会不停冒花苞,此起彼伏,简直就是开花机器。我在北方,冬天有暖气,冬天我的朱瑾也不停

    生活 2021年10月19日
  • 怎样分析图数据库

    技术怎样分析图数据库怎样分析图数据库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。下面主要讨论图数据库背后的设计思路、原理还有一些适用的场景,以及在生产环境

    攻略 2021年12月2日
  • jvm内存结构及原理(jvm内存结构讲解)

    技术JVM内存的结构是怎样的这篇文章主要介绍“JVM内存的结构是怎样的”,在日常操作中,相信很多人在JVM内存的结构是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JVM内存的结构是

    攻略 2021年12月21日
  • javascript条件式访问属性和箭头函数的示例分析

    技术javascript条件式访问属性和箭头函数的示例分析这篇文章主要介绍了javascript条件式访问属性和箭头函数的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编

    攻略 2021年11月14日