μC/OS的文件系统
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了μC/OS的文件系统相关的知识,希望对你有一定的参考价值。
参考技术AuCLinux的文件系统与Linux的基本相同,文件以树型目录组织。由于篇幅所限,关于文件系统的细节,读者可参考Linux和Unix的相关资料,本例中将RAM中高端的1M分配给文件系统,建立了容量为1M的RAM盘。UCLinux的文件系统由逻辑块组成,如果是磁盘文件系统,对应为磁盘块;RAM盘则对应为内存块,每个块为512字节。一个标准的逻辑盘划分成几个部分:引导块、超级块、索引节点区和数据区。
引导块 超级块 索引节点区 数据区
引导块在文件系统的开头,通常为一个逻辑块、存放引导程序,用于启动和引导操作系统。在我们的RAM文件系统中由于不需要RAM盘引导,所以不分配引导块。超级块记录文件系统当前状态,盘有多大,能存放多少文件,何处可以找到空闲空间和用于文件系统管理的信息。索引节点区紧接在超级块后面,存放文件系统的索引节点表。在文件系统中每一个文件(包含目录)占据一个索引节点表项。索引节点是一个记录文件信息的数据结构:
struct dinode
short di-mode;
/*文件模式:是文件还是目录,是可读、可写还是可执行*/
short di-nlink;
/*和文件相关的链接数*/
short di-uid;
/*文件所有者的标示*/
short di-gid;
/*文件所有者的组标示*/
long di-size; /*文件大小*/
char di-addr[ ];
/*文件数据所在的逻辑块编号*/
time-t di-atime;
/*文件最后一次访问的时间*/
time-t di-mtime;
/*文件最后一次修改的时间*/
time-t di-ctime;
/*文件建立的时间*/
其中的数组di-addr[ ]记录文件数据所在的逻辑块号。本例中RAM盘为1M,每个逻辑块512字节,共2048个逻辑块,所以每个逻辑块的编号要用两个字节表示。为了记录足够长的文件,di-addr[ ]中逻辑块可分为直接块和间接块。关于直接块和间接块的概念,请读者参考Linux的相关文档。分析索引节点可知,通过索引节点就可以完全确定一个文件。索引节点表中的第一项就是根目录。索引节点区的大小决定了文件系统中最多能有多少个文件(包括目录)。在本例中,笔者设定为128项。在索引节点区后就是数据区,数据区以逻辑块为单位按次序编号。如果要访问某个文件,只要找到该文件对应的索引节点表项,从di-addr[ ]项中就可以查出文件数据所在的逻辑块。文件的访问需要通过fread()或fwrite()函数,其细节不再复述。
添加了文件系统后,任务的运行将和文件相关,所以TCB(任务控制块)要做相应的修改。需要添加任务所在目录项和任务打开文件项。当一个任务调用OSTaskCreate创立新的任务的时候,子任务应该继承先前任务的目录项和任务打开文件项。
嵌入式实时操作系统μC/OS II
嵌入式实时操作系统μC/OS II
为什么要学习μC/OS-II
㈠.凡从事嵌入式系统开发工作的人,必须对嵌入式操作系统有足够的了解。
㈡.对于初学者,从μC/OS-II开始是个明智的选择。
1.μC/OS-II麻雀虽小,却五脏俱全(它是个微内核)。
2.可以学习实时系统的一些编程技巧。
3.可以把在课堂上学到的操作系统抽象概念具体化。
4.具有很强的实用性。
5.学习数据结构应用的好例子。
一、μC/OS II概述
㈠ μC/OS II的特点
⑴μC/OS II的体系结构如图所示,μC/OS II是一个微内核,它只对计算机的处理器和硬件时钟进行了抽象和封装,而没有提供其他硬件抽象层。移植μC/OS II时,主要工作就是根据具体硬件换一个或者添加一个硬件抽象层。
⑵μC/OS II具有较强的可移植性,μC/OS II是基于优先级的可剥夺型内核,系统中的所有任务都有一个唯一的优先级别,它适合应用在实时性要求较强的场合。μC/OS II不区分用户空间和系统空间,适用于比较简单的处理器。μC/OS-II总是近似地每时每刻让优先级最高的就绪任务处于运行状态,所以调度算法被频繁执行。
⑶μC/OS-II总是近似地每时每刻让优先级最高的就绪任务处于运行状态,所以调度算法被频繁执行。
㈡μC/OS II的文件结构
⑴与应用程序相关的文件
文件内容:把工程项目中应包含的头文件都集中放到这里。 使项目开发者无须再去考虑项目中的每一个文件究竟应该需要或者不需要哪些头文件了。
⑵与处理器相关的文件
⑶与处理器硬件无关的文件(系统内核的各种服务文件)
二、预备知识
㈠操作系统的作用
⑴它在计算机应用程序与计算机硬件系统之间,屏蔽了计算机硬件工作的一些细节,并对系统中的资源进行有效的管理。
⑵通过提供函数(应用程序接口(API)),从而使应用程序的设计人员得以在一个友好的平台上进行应用程序的设计和开发,大大地提高了应用程序的开发效率。
从用户的角度来看,它就是一大堆函数(API和系统函数),用户可以调用(普通调用或系统调用)它们来对系统资源进行操作
㈡操作系统中常用的数据结构
⑴数组
⒈数组:
①同一数据类型数据的集合;
②占用连续内存空间;
③其中的所有元素名称都相同,但每个元素都有一个编号;
④元素名去掉编号(下标),得到的是数组名,数组名是个指针。
⒉使用上的特点:
①分类存放;
②检索速度快且恒定;
③缺点:占用连续空间大。
⒊应用:记录同类事物的表。
⑵位图
⒈位图是数组的一种特殊应用。
⒉应用:登记表。
⑶结构
⒈结构:
①不同数据类型数据的集合;
②占用连续内存空间。
⒉使用上的特点:
①不分类存放,但用来描述同一事物;
②检索速度快且恒定。
⒊应用:通讯录中的一条记录、工具箱、厨房等等。
⑷链表
⒈链表:
①同数据类型数据的集合;
②不占用连续内存空间。
⒉使用上的特点:
①分类存放,但空间上不连续(不需要大量的连续存储空间;
②检索速度慢,且耗费的时间不固定。
⒊应用:存放大量的较大的表,类似档案柜。
⑸队列
⒈队列:
①队列是一种特殊的线性表。在队列中,仅允许一端进行插入,在另一端进行删除。
②允许插入的一端叫做队尾(rear);允许删除的另一端叫做队头(front)。
③队列又称先进先出(First in First Out,简写为FIFO)表。
⑹堆栈
⒈堆栈:
①限定只能在表的一端进行插入和删除的线性表。
②在表中允许插入和删除的一端叫做栈顶(top),表的另一端叫做栈底(bottom)。
③栈又称后进先出(Last In First Out,简写为LIFO)表。
以上是关于μC/OS的文件系统的主要内容,如果未能解决你的问题,请参考以下文章