工作中分析了一下现状,项目繁多,需求不一,团队成员单片机开发经验缺乏,编程风格各异,几乎没有可以重复利用的模块,无现成提高开发效率与测试的工具。
为使开发更迅速,流程更标准,同时也让系统模块化更强,拥有更好的复用性,需要有一个单片机操作系统。现有的操作系统琳琅满目,开源的无技术支持,商用的价格高,最重要的是我们的系统虽然繁杂,但更倾向于控制型,使用这些操作系统对团队开发要求较高,而且占用资源多,所以使用这种类型的操作系统就显的大才 小用了。但我们更不希望裸奔,为此,我们需要开发适合自己团队的系统。
我们的目标是:1、传统的开发模式;2、标准化的开发流程;3、高效的开发效率;4、丰富的接口(或工具)
有了这个大体目标,根据我们现有或规划的项目需求,设计了我们的操作系统AEOS。
AEOS工作简介与原理:
AEOS是一种非调度式操作系统,结构小巧,极易移植,占用空间小,可根据需要裁减。由于其非调度的特性,符合我们传统的开发模式,但对于多任务开发则较为麻烦。它提供了任务管理、时间管理、事件管理等基本功能。
AEOS以定时的方式执行任务,为了每个任务都可以获得CPU资源,要求任务执行时间尽可能的短,如果时间较长则需要通过状态机来实现,等待资源或者延迟处理的时候通过跳转状态来释放CPU资源。
任务管理:
AEOS最多支持32个普通任务和32个紧急任务,没有优先级之分,每个任务都需要规定执行周期。普通任务的实时性较差,其性能取决于每个任务构建合理性,每个任务执行时间都需要尽可能的短,如果任务执行的时间比较长则使用状态机API来实现,这样才能保证每个任务都能够较快的获取CPU资源。紧急任务 的实时性很高,但也要求任务的执行时间更为严格,必须属于微秒级别才能使用。
AEOS有一个统计任务,该任务用户可根据需要选择是否打开,打开则会通过可调的执行周期打印出各个任务的执行时间与当前CPU占用率。这个对于系统调试阶段非常重要,这个有助于我们分析任务设计的合理性。
时间管理:
AEOS的时基由1ms的定时中断产生,任务的执行都是由这个时基为基础。AEOS提供了程序断点计时的功能,可方便计算出程序段的执行时间,这些功能有助于验证开发的合理性,也有助于状态机设计中的超时处理。
事件管理:
AEOS的事件与传统OS的事件定义不同,这里的事件一般都用于中断处理。在中断服务程序中只做简单的数据保存,保存后产生相应事件,系统就会自动调用事件处理函数,而且这种事件处理的优先级高于普通任务。
AEOS还提供了子事件处理,可用于中断处理较复杂,且多个应用程序都需要获取这个中断资源的时候,等同于一个中断虚拟出多个中断源,每个应用程序可根据自己需要是否要调用该中断源。