第4章第1节 Mindows的文件组织结构

来源:互联网 发布:中国程序员联合开发网 编辑:程序博客网 时间:2024/06/04 19:39


目前更新到5.3节,请在
http://dl.dbank.com/c02ackpwp6下载5.3节的全部文档

 

第1节 Mindows的文件组织结构

在第3章,我们依据任务切换的原理编写了Wanlix操作系统,Wanlix很简单,只实现了任务切换功能,从本章开始,我们将编写Mindows操作系统,Mindows将会实现更多的功能,相对Wanlix来说要复杂一些,文件也更多一些,因此,Mindows在文件组织结构上做了一下调整,我们先来看一下Mindows的文件组织结构。

Mindows的目录结构仍与Wanlix类似,有mindowssrccodeothersprojectoutfile这几个目录,mindows目录下存放的是Mindows操作系统的文件,其余目录与Wanlix一致。

Mindows操作系统的文件分为2类,一类是核心文件,操作系统需要依靠此类文件才可运行,例如mds_core_c.c文件,包含了操作系统的调度功能。另一类是非核心文件,操作系统脱离此类文件也可以运行,此类文件主要是提供操作系统的功能给用户使用。

核心文件包括:

mds_core_a.asm:操作系统的汇编文件,使用汇编语言编写的代码存放在此文件。

mds_core_c.c:使用C语言编写的操作系统核心调度代码存放在此文件。

mds_task.c:与任务相关的代码存放在此文件。

mds_sem.c:与信号量相关的代码存放在此文件。

mds_chip.c:与芯片强相关的代码存放在此文件,如果移植到不同芯片,需要修改较大的C函数代码存放在此文件完成。

mds_userboot.c:用户接口文件。

非核心文件包括:

mds_queue.c:与队列相关的代码存放在此文件。

mds_debug.c:与调试功能相关的代码存放在此文件。

以及以后可能会增加的文件。

 

操作系统的每个c文件有2h头文件,比如说mds_core_c.c文件,它有mds_core_c_inner.h头文件和mds_core_c.h头文件。带“inner”的头文件是操作系统内部头文件,其中仅包含可在操作系统内部使用的信息,不提供给用户文件使用。不带“inner”的头文件是操作系统外部头文件,其中包含了可供操作系统和用户使用的信息,提供给用户文件使用。

除此之外,Mindows还提供了mds_mdsdef.hmds_userdef.h头文件,mds_mdsdef.h里面包含了操作系统共用的一些信息,mds_userdef.h里面的信息则是需要用户修改的,由用户根据项目的需要自己修改。

Wanlix相似,Mindows也提供一个对用户的接口头文件mindows.hmindows.h是操作系统的总头文件,它包含了所有核心c文件的外部头文件以及mds_mdsdef.hmds_userdef.h头文件,用户需要包含mindows.h才可使用Mindows操作系统的功能。另外,Mindows还提供了一个对内的总头文件mindows_inner.h,它包含了所有核心C文件的内部头文件和mindows.h文件,并且它也被所有的操作系统c文件(mds_userboot.c除外)所包含。

看了上面的说明会比较乱,我们来看看下面这个Mindows文件调用关系:

第4章第1节 <wbr>Mindows的文件组织结构

图 28  Mindows文件调用关系

这么设计的初衷是为了将操作系统对内与对外使用的信息分开,将核心文件与非核心文件分开。将操作系统外部的信息都封装到mindows.h文件中,需要使用外部信息的文件只需要包含mindows.h文件即可。将操作系统内部和外部的信息都封装到mindows_inner.h文件中,操作系统文件只要包含mindows_inner.h文件即可。将核心文件都包含到mindows.hmindows_inner.h文件中,需要使用核心文件时只需要包含mindows.hmindows_inner.h文件即可,需要使用非核心文件时则需要单独包含非核心文件的头文件,这是因为,核心文件就那么几个,封装到mindows.hmindows_inner.h文件中方便使用,而非核心文件则会随着操作系统功能的增加不断的扩充,而其中的信息可能也是与其它功能模块不相关的,因此,灵活的包含非核心模块则会更适合些。

 

本章的Mindows仍在Aduc7024芯片上使用Keil开发环境开发,使用GNU工具链,采用O2编译选项。

原创粉丝点击