第2章第4节 Wanlix的文件组织结构

来源:互联网 发布:top域名有什么用 编辑:程序博客网 时间:2024/06/04 18:15


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

第4节 Wanlix的文件组织结构

说起写软件,还是比较容易入门的,现在电脑这么普及,随便找本软件的书籍就可以在电脑上编程了,实现一些功能,但这仅仅是编写软件的最初级阶段,一部分人可能一辈子只会停留在这个阶段,全局变量满天飞,函数没有层次结构,文件关系混乱。能够发展下去,能够编出满足功能需求,可维护性、可测试性好,效率高,用户易用的软件才可称之为软件人员。编码只是软件中很小的一个环节,随着产品不断的扩大,这一点越来越明显,编码固然重要,但编码之外的设计也非常重要。

我写的代码虽有一些条理,但也比较凌乱,还请各位多多包涵,就算是一个反面教材,同时,也希望大家能写出好的软件!

 

现在虽然是在写操作系统,但操作系统最终是要给用户使用的,为了方便用户使用,我们需要设计一下文件结构。如图10所示,RTOS_Wanlix是整个项目的根目录,下面包含了wanlixsrccodeothersoutfileproject5个目录。与操作系统相关的文件被放在wanlix目录下。用户文件用来实现产品功能,放在srccode目录下。编译后的输出文件放在outfile目录下。我使用的是Keil开发工具,与Keil相关的工程文件放在project目录下。其它文件放在others目录下。

 

RTOS_Wanlix

[wanlix]

│  [wanlix.h]

│  [wlx_core_a.asm]

│  [wlx_core_a.h]

│  [wlx_core_c.c]

│  [wlx_core_c.h]

[srccode]

│ [global.h]

│ [device.c]

│ [device.h]

│ [test.c]

│ [test.h]

│ [wlx_userboot.c]

│ [wlx_userboot.h]

│ [unoptimize.c]

[others]

│ [ADuC702X.ld]

│ [startup.s]

[outfile]

[project]

图 10  Wanlix文件结构

下面详细介绍各个目录和文件。

wanlix目录中存放的是操作系统的源文件,所有的操作系统文件均是以“wlx_”为前缀,操作系统头文件wanlix.h除外。

ü wanlix.h文件是操作系统的总头文件,定义了操作系统共用的宏、结构体,供操作系统全部文件使用,也是操作系统对外的接口文件。用户代码只需要包含且仅需要包含这个头文件,就可以使用Wanlix操作系统的所有功能了。

ü wlx_core_a.asm文件是使用汇编语言编写的操作系统内核调度文件,所有与汇编相关的代码都放在这个文件里。

ü wlx_core_a.h文件是wlx_core_a.asm文件的头文件,被wlx_core_a.asm文件包含,定义了wlx_core_a.asm文件使用的宏、声明了wlx_core_a.asm文件使用的全局变量和函数等。

ü wlx_core_c.c文件是使用C程序编写的操作系统内核调度文件,这个文件是操作系统的核心文件,与操作系统调度相关的功能都是在这个文件实现的。

ü wlx_core_c.h文件是wlx_core_c.c文件的头文件,被wlx_core_c.c文件包含,定义了wlx_core_c.c文件使用的宏、声明了wlx_core_c.c文件使用的全局变量和函数等。

srccode是用户代码目录,该目录中保存的是用户源代码文件。srccode目录下的文件是与项目直接相关的,用户可根据自身需要增减、修改文件,可以自行安排。在本手册中使用这些用户文件编写一些例子,用来演示操作系统的功能。

ü global.h文件是用户文件的总头文件,用户文件共同使用的信息被存放到该头文件里,该文件被各个用户c文件的h头文件包含,以便每个用户文件都可以使用共有的接口功能。该头文件包含了wanlix.h文件,以便所有用户文件可以使用Wanlix的功能。

ü device.c文件是驱动文件,设备所有的驱动程序均放在此文件。

ü test.c文件包含了演示操作系统功能所使用的代码。

ü wlx_userboot.c文件是操作系统与用户代码的接口文件,用户代码从该文件启动。C语言的入口函数是main函数,在Wanlix操作系统里main函数将被封装到操作系统内部,用户不可见,用户代码将从该文件里的WLX_RootTask函数启动。用户需要根据自身需要向该文件添加代码,这也是这个文件放在srccode目录的原因。

ü unoptimize.c文件里包含的是不能被优化的代码,因此单独提出对该文件采用不优化的编译选项,其它文件均采用O2的优化选项。

ü xxx.h文件是xxx.c文件的头文件,仅包含xxx.c文件所使用的信息。

others目录里保存的是与开发工具相关的文件,本手册使用的是Keil开发工具,这个目录里保存的是Keil中所使用的与芯片相关的文件,包括芯片启动文件startup.s和链接文件ADuC702X.ld

ü startup.s文件中包括了芯片的中断向量表以及芯片启动程序,由汇编语言编写。

ü ADuC702X.ld文件是整个工程的链接文件,决定了芯片存储空间的分配。

project目录是开发工具的文件所在目录,我们使用的是Keil,所有与Keil工程相关的文件均保存在此目录。这个目录里的文件我们不用关心,由Keil自动生成。

outfile目录是输出文件目录,代码编译后输出的所有文件就存放在这个目录里。

 

为方便理解这些文件之间的调用关系,我们通过图11来做一个说明:

第2章第4节 <wbr>Wanlix的文件组织结构

图 11  Wanlix文件调用关系

顺着箭头的方向代表“包含”的意思,A>B表示A文件包含B文件。

11中最上面一行文件是需要用户自己编写的文件,需要用户自行修改。中间一行是操作系统的文件,用户不能修改。最下面一行是芯片定义的头文件,由芯片厂商提供,用户不能修改。左边一列是操作系统文件,中间一列是操作系统与用户的接口文件,右边一列是用户文件。

其中mds_core_a. asm文件有点特殊,因为它是汇编文件,无法使用C文件中的定义,因此它与C文件没有关系,它里面的函数是放在mds_core_c.h文件中声明的。

 

经过对文件结构的设计,每个c文件只需要包含它对应的h文件,每个c文件的h文件都需要包含总头文件,用户文件需要包含wanlix.h文件,形成一个树状结构。

原创粉丝点击