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

源码请在https://github.com/ifreecoding/MbedRtos.git下载

第1节 Mindows的文件组织结构

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

Mindows的目录结构仍与Wanlix类似,有mindows、srccode、others、project、outfile这几个目录,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文件有2个h头文件,比如说mds_core_c.c文件,它有mds_core_c_inner.h头文件和mds_core_c.h头文件。带“inner”的头文件是操作系统内部头文件,其中仅包含可在操作系统内部使用的信息,不提供给用户文件使用。不带“inner”的头文件是操作系统外部头文件,其中包含了可供操作系统和用户使用的信息,提供给用户文件使用。

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

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

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

图 28  Mindows文件调用关系

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

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

新鲜出炉,提供源码!wanlix和mindows嵌入式操作系统 好不好,看过文档再说,我觉得,里面的很多东西是你在别的书上看不到的,包括一些ARM和CORTEX芯片的知识。 从现在开始,本网站将陆续发布Wanlix和Mindows操作系统内核。 Wanlix是一个内核非常小的嵌入式操作系统,只有几百个字,但功能少,只提供任务切换功能,非常适合资源特别少但又需要任务切换的小项目。 Mindows可提供多种操作系统功能,是实时抢占式操作系统,任务支持多种优先级抢占调度,将实时性高的任务设置为高优先级就可以保证软件系统的实时性,用户也可根据自身需求选取需要的部分,也可在此基础上编写代码增加自己需要的功能,具有可裁剪性。 我将Wanlix和Mindows的开发过程记录下来,就形成了这本“底层工作者手册之嵌入式操作系统内核”一书,本手册不仅仅是从应用的角度介绍操作系统如何使用,更重要的是从原理的角度对操作系统的功能做了分析、设计,从无到有循序渐进一点点的增加操作系统的功能,并且每增加一个功能便配以一个例子加以演示,让读者能立刻看到代码运行的结果。 本手册记录了我从对操作系统内核不了解到写出操作系统内核的过程,这样的一个过程对你来说应该也是一个最好的学习过程。 如果你有一定的C语言基础,并且对硬件也有稍微的了解,那么我相信你一定会看明白本手册!也一定可以随心所欲的修改、扩展你需要的操作系统功能! 请登陆www.ifreecoding.com获取更多资料
新鲜出炉,提供源码!wanlix和mindows嵌入式操作系统 好不好,看过文档再说,我觉得,里面的很多东西是你在别的书上看不到的,包括一些ARM和CORTEX芯片的知识。 从现在开始,本网站将陆续发布Wanlix和Mindows操作系统内核。 Wanlix是一个内核非常小的嵌入式操作系统,只有几百个字,但功能少,只提供任务切换功能,非常适合资源特别少但又需要任务切换的小项目。 Mindows可提供多种操作系统功能,是实时抢占式操作系统,任务支持多种优先级抢占调度,将实时性高的任务设置为高优先级就可以保证软件系统的实时性,用户也可根据自身需求选取需要的部分,也可在此基础上编写代码增加自己需要的功能,具有可裁剪性。 我将Wanlix和Mindows的开发过程记录下来,就形成了这本“底层工作者手册之嵌入式操作系统内核”一书,本手册不仅仅是从应用的角度介绍操作系统如何使用,更重要的是从原理的角度对操作系统的功能做了分析、设计,从无到有循序渐进一点点的增加操作系统的功能,并且每增加一个功能便配以一个例子加以演示,让读者能立刻看到代码运行的结果。 本手册记录了我从对操作系统内核不了解到写出操作系统内核的过程,这样的一个过程对你来说应该也是一个最好的学习过程。 如果你有一定的C语言基础,并且对硬件也有稍微的了解,那么我相信你一定会看明白本手册!也一定可以随心所欲的修改、扩展你需要的操作系统功能! 请登陆www.ifreecoding.com获取更多资料
Mindows操作系统更新5.1~5.3,将wanlix从ARM7内核移植到cortex内核,更多资料请登陆www.ifreecoding.com下载。 前面基础知识介绍完毕,本开始真刀真枪的移植代码了。本将Wanlix3.3的代码从ARM7内核移植到TI和ST的cortex内核的芯片上,移植完成后通过串口打印可以看到移植的效果。 如果你有STM32的板子,现在就可以跑! /***************************************************************************/ Wanlix是一个内核非常小的嵌入式操作系统,只有几百个字,但功能少,只提供任务切换功能,非常适合资源特别少但又需要任务切换的小项目。 Mindows可提供多种操作系统功能,是实时抢占式操作系统,任务支持多种优先级抢占调度,将实时性高的任务设置为高优先级就可以保证软件系统的实时性,用户也可根据自身需求选取需要的部分,也可在此基础上编写代码增加自己需要的功能,具有可裁剪性。 我将Wanlix和Mindows的开发过程记录下来,就形成了这本“底层工作者手册之嵌入式操作系统内核”一书,本手册不仅仅是从应用的角度介绍操作系统如何使用,更重要的是从原理的角度对操作系统的功能做了分析、设计,从无到有循序渐进一点点的增加操作系统的功能,并且每增加一个功能便配以一个例子加以演示,让读者能立刻看到代码运行的结果。 本手册记录了我从对操作系统内核不了解到写出操作系统内核的过程,这样的一个过程对你来说应该也是一个最好的学习过程。 如果你有一定的C语言基础,并且对硬件也有稍微的了解,那么我相信你一定会看明白本手册!也一定可以随心所欲的修改、扩展你需要的操作系统功能! 请登陆www.ifreecoding.com获取更多资料 /***************************************************************************/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值