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

相关推荐

  • 如何理解MySQL 5.5 InnoDB表锁

    技术如何理解MySQL 5.5 InnoDB表锁本篇文章为大家展示了如何理解MySQL 5.5 InnoDB表锁,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

    攻略 2021年11月16日
  • 闯红灯12123多久能显示,闯红灯多久能查到具体车辆

    技术闯红灯12123多久能显示,闯红灯多久能查到具体车辆随着互联网飞速发展,车辆在违章之后,既可到车管所进行违章处理,也可在网上进行处理闯红灯12123多久能显示。那么2018年闯红灯后几天后才能知晓呢?怎么查询呢?接下

    生活 2021年10月31日
  • MySQL密码该怎么备忘

    技术MySQL密码该怎么备忘这篇文章将为大家详细讲解有关MySQL密码该怎么备忘,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在windows下: 打开命令行窗口,停止m

    攻略 2021年11月20日
  • 抖音刷粉互粉,抖音怎么上热门?

    技术抖音刷粉互粉,抖音怎么上热门?抖音怎么上热门?
    抖音是头条系的产品,后背依托的头条强大的推荐机制。根据算法,机器任何+人工双重审核:上传视频初期,平台会给你一个初始流量,如果初始流量之后,根据点赞率,评论率,转发率,

    测评 2021年10月19日
  • 水浒传题目及答案100道,水浒传37回问题及答案

    技术水浒传题目及答案100道,水浒传37回问题及答案题目:宋江在船上准备跳下之时,被何人所救水浒传题目及答案100道?答:李俊李立。题目:镇上三霸有哪些?
    答:李俊和李立,张横和张顺,穆弘和穆春。
    题目:分析穆太公的形象

    生活 2021年10月25日
  • java的基础知识总结(java基础都涉及到哪些知识)

    技术Java中的基础知识点有哪些这篇文章主要讲解了“Java中的基础知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的基础知识点有哪些”吧!"Hell

    攻略 2021年12月21日