此系统用 GNU C++ 编写,由于大量使用了虚函数和模板(泛型),所以不能提供 C 语言接口,也就是说,基于此操作系统的应用程序也必须使用 C++ 编写。
此系统为抢占式。调度器是位图调度器,8个优先级,每个优先级只能有一个任务,所以只支持 8 个用户任务。在 avr 上,如果不扩 RAM,8 个任务已经是相当大的规模了。
每个任务具有独立的任务栈(由用户划分)。通过继承,任务支持“per-thread data”。
任务同步对象有:semaphore,mailbox,message queue,event flag。与 uC/OS 相同,但没有 mutex。
中断系统借鉴了 eCos 系统的中断机制,将中断处理分为两步:isr 和 dsr (deferred service routine)。这样做的好处是大大提高了中断响应速度。
定时器是与任务关联的,每个任务最多可以设立 7 个系统节拍(tick)定时器。定时器超时后,将调用一个预设的回调函数,以通知任务定时器到。
此系统仅仅是个任务管理内核,没有内存管理,没有设备管理,没有文件系统。
下步工作: 1、增加设备管理系统,毕竟单片机系统要操作外设才有实际用处啊。 2、做一个 avr studio 的扩展插件,这个插件实际上是一个应用程序框架生成器,以向导的方式,根据用户的输入和选择(如:晶振频率,起始任务信息,需要使用的设备,等等),自动生成基于此操作系统的应用程序框架。就像 Visual C++ 的 Application Wizard 一样。
完成后,定当奉上,与大家分享。由于需要做的工作还相当的多,所以也希望有兴趣的兄弟,一同参与开发。
|