收稿日期:!""# $ "# $ !"
作者简介:王命延(%&’& $ ),男,教授 (
) ) 文章编号:%""* $ "#*#(!""’)"! $ "%&+ $ ",
一种加载在 -./0 $ 11 内核上的嵌入式文件系统
王命延,余爱军
(南昌大学 计算机科学工程系,江西 南昌) ,,""!&)
摘) 要:分析了文件系统在嵌入式应用中的重要作用,在剖析了 -./0 $ 11 内核工作原理的基础上,借鉴 234%* 文
件系统,构建了一个适合嵌入式应用的文件系统 2345,并详细介绍了如何在 -./0 $ 11 内核上实现。
关键词:
-./0 $ 11;嵌入式实时操作系统;嵌入式文件系统
中图分类号:46,%*( !) ) ) ) 文献标识码:3
) ) 随着嵌入式系统应用要求的不断提高,系统资
源的进一步丰富,系统的复杂程度也不断提高。为
了充分发挥 ,! 7 *# 位处理器的功能和性能优势,提
高系统的可靠性,缩短开发周期,越来越多的工程
师在他们的项目开发中选择嵌入式实时操作系统
(简称
84/0)。商业 84/0 虽然功能齐全、调试手
段丰富,但是价格也是异常昂贵。因此,对于一些
小公司、小企业以及科研单位,使用免费的、开放的
84/0 是一种不错的选择。
-./0 $ 11 是一个源码公开的嵌入式实时操作
系统内核,经过十几年的发展,已经在众多领域的
应用中取得了成功,证明了 -./0 $ 11 内核的性能
是优越的。-./0 $ 11 是一个可裁减的实时多任务
内核,在把它应用到一个具体的项目时,可以根据
实际需求量身定做地加载一些模块,如 4.6 7 16、文
件系统、图形界面等等,使 -./0 $ 11 成为一个面向
问题的实用的嵌入式操作系统。
文件系统在嵌入式操作系统中占据着重要的
位置,不仅因为像数据采集、多媒体应用这样一类
系统应用涉及大量数据的存储、加工、转换等,需要
文件系统的支持。而且在所有的高端嵌入式应用
中,嵌入式操作系统为了屏蔽外围硬件的操作细
节,为应用开发者提供统一标准的
361 调用也必须
要文件系统的支持。
本文首先介绍 -. /0 $ 11 内核的工作原理,然
后介绍如何修改 -./0 $ 11 内核并加载一个嵌入式
文件系统 2345。
!" -./0 $ 11 内核工作原理
-./0 $ 11 多任务操作系统工作原理
[%]
:首先初
始化处理器,再初始化操作系统,主要完成任务控
制块(4.9)初始化,4.9 优先级表初始化,4.9 链
表初始化,事件控制块(:.9)链表初始化,空任务
的创建等等;然后创建新任务,并且新任务的创建
可以嵌套进行;最后调用 /004384( )函数启动多
任务调度。
系统任务调度有两种触发方式:中断级的和任
务级的。
中断级的调度是系统多任务调度开始后,启动
时钟节拍源开始计时,给系统提供周期性的时钟中
断信号,实现延时和超时确认。当时钟中断来临
时,系统把当前正在执行的任务挂起,进行中断处
理,判断有无任务延时到期,若有则使该任务进入
就绪态,并把所有进入就绪态的任务的优先级进行
比较,通过任务切换去执行最高优先级的任务,若
没有别的任务进入就绪态,则恢复现场继续执行原
任务。
任务级的调度是通过任务发软中断命令或依
靠处理器在任务执行中调度函 /00.;:<=>:( ),
如任务要等待信号量或一个正在执行的任务被悬
挂起来时,就需要在此任务中调度,找出目前处于
就绪态的优先级最高的任务去执行。当没有任何
任务进入就绪态时,就去执行空任务
/01<>:()。
#" 建立嵌入式文件系统
#$ !" 嵌入式文件系统的构成
许多 嵌入 式系 统需 要 文 件 系 统 的 支 持,而
-./0 $ 11 不提供文件系统,需要开发人员根据实际
的需求情况自己建立文件系统。嵌入式系统一般
都用大容量电子盘(2?@AB)做永久存储介质的,这
种设备的特性就是数据只能被整块(9?CDE)地改写
(擦除),所以数据需要按照整块存储
[!]
,不同的电
子盘每块的大小也不同,如 #F9、%*F9 等。
本文仿照
234%*(2G?H 3??CD@IGCJ 4@K?H)文件系
统
[,]
建立 2345 文件系统。在此系统中,把文件作
为一种无结构的字节序列,用户任务可以在文件中
加入任何内容,并且以任何方式来处理它们。为了
便于管理和提高访问速度,不设置子目录管理。文
第 !& 卷第 ! 期
!""’ 年 # 月
) ) ) ) ) )
南昌大学学报(理科版)
LC-MJ@? CN O@JDB@JP =JGQHMAGIR(O@I-M@? 0DGHJDH)
SC?T !& OCT !
3UMT !""’
)