嵌入式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)

相关推荐

  • Redis的java客户端Jedis的代码怎么写

    技术Redis的java客户端Jedis的代码怎么写这篇文章将为大家详细讲解有关Redis的java客户端Jedis的代码怎么写,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了

    攻略 2021年10月20日
  • python中如何倒序遍历列表(python数组中序遍历)

    技术怎样返回的python中序遍历这期内容当中小编将会给大家带来有关怎样返回的python中序遍历,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。【题目】给定一个二叉树,返回它的中序 遍

    攻略 2021年12月13日
  • selenium的异常:ElementClickInterceptedException

    技术selenium的异常:ElementClickInterceptedException selenium的异常:ElementClickInterceptedException报错信息如下:大致意

    礼包 2021年11月30日
  • java中如何实现生成器和迭代器

    技术java中如何实现生成器和迭代器小编给大家分享一下java中如何实现生成器和迭代器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!print

    攻略 2021年11月23日
  • 苹果手机使用技巧大全,iPhone有哪些超实用技巧

    技术苹果手机使用技巧大全,iPhone有哪些超实用技巧1、保持镜头清洁每次拍摄前先清洁一下,可以令影像更清晰苹果手机使用技巧大全。iPhone 镜头很小,如果镜头上有指纹的话,会非常影响效果。这时有抹镜布就最好,没有的话

    生活 2021年10月21日
  • Hibernate三种状态的转换示例

    技术Hibernate三种状态的转换示例小编给大家分享一下Hibernate三种状态的转换示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、遇到的神奇的事情使用jpa操作数据库,当我使用findAl

    攻略 2021年12月8日