1.4 Hello China概述
Hello China是作者开发的一个嵌入式操作系统,目前版本是V1.5版。该操作系统具备一个嵌入式操作系统应该具备的全部核心功能,比如多任务(线程)、线程同步机制、定时机制、中断调度机制、线程睡眠、内存管理、虚拟内存管理等,而且还构架了一个驱动程序支持框架,并提供了一组输入输出(IO)接口,设备驱动程序的开发只要遵循Hello China提供的构架,将会非常容易,而且对应用程序,是透明的。
Hello China V1.5的开发是在个人计算机(PC)硬件平台上完成的。个人计算机就是一个复杂的嵌入式硬件平台,在PC上开发嵌入式操作系统,不仅可以降低成本,节省购买标准开发板的费用,还可以接触到更多的硬件,硬件的扩展也更方便。在PC上完成操作系统的开发后,可以通过少量修改,很容易地把操作系统移植到特定的嵌入式硬件平台上。
在本节中,我们对Hello China的功能特点、开发环境以及在PC上的使用方式做一个初步介绍,详细的功能特点及其实现、开发环境的详细信息,请参考本书后边章节以及附录。
1.4.1 Hello China的功能特点
当前版本的Hello China(Version 1.5)具备下列功能:
(1)多线程,Hello China基于多线程模型可以同时运行多个线索。在嵌入式开发中,可以通过创建多个线程的方式来实现多任务处理。
(2)可抢占调度,线程的调度方式采用了可抢占的方式,这样可使得系统的响应时间非常短暂,对于关键的任务(优先级高的线程)能够尽快地得以运行。当前版本中,Hello China总共支持16个不同的线程优先级。
(3)任务同步,Hello China实现了完善的任务同步机制,包括事件对象、定时器、线程延迟(睡眠)、核心线程对象等功能,可以很容易地完成多个线程之间的同步运行。
(4)共享资源互斥访问,通过互斥体(Mutex)、信号量(Semaphore)等核心对象可以实现多个线程之间的共享资源互斥访问。
(5)内存管理,Hello China实现了完善的内存管理机制,包括物理内存的申请、释放,基于页面的物理内存管理,基于IA32构架MMU的虚拟内存管理,以及应用程序本地堆(Heap)等功能,还实现了标准C运行期库的malloc、free等函数来供应用程序直接调用来分配内存。另外,对于基于PCI总线的硬件设备,Hello China还提供了一组内存管理接口,使得设备驱动程序很容易地把设备本地缓冲内存映射到CPU的内存空间中,从而完成设备的直接访问。
(6)定时机制,Hello China实现了毫秒级的定时器机制,一个线程可以通过系统调用SetTimer来设定一个定时器,在定时器时间到达后,操作系统会向该线程发送一个消息或调用一个回调函数。
(7)完善的消息机制,每个线程具备一个本地消息队列,其他线程(或操作系统)可以通过系统调用向某个特定的线程发送消息,从而完成线程之间的通信。
(8)中断调度机制,Hello China V1.5在实现的时候充分考虑了不同CPU的中断机制,采用了一种中断向量加中断链表的中断调度机制,可以适应Intel等基于中断向量组机制的CPU,也可以适应Power PC等基于单中断向量的CPU。
(9)PCI总线支持,Hello China当前版本的实现中,可以对系统中的单条PCI总线进行列举,从而发现PCI总线上的所有物理设备,并为发现的每个物理设备创建一个管理结构与之对应,这样设备驱动程序就无需自行检测总线,只需要向操作系统提出申请,操作系统就可根据设备ID,把设备配置信息传递给驱动程序。这样的体系结构使得设备得以集中管理,资源得以集中分配。
(10)完善的驱动程序支持框架,定义了一个通用的设备驱动程序接口规范以及一组应用程序访问驱动程序的接口函数和一个IO管理器对象,使得不论是驱动程序的开发,还是驱动程序的访问,都十分方便。
(11)基于PC的一些辅助功能,比如键盘驱动程序、屏幕驱动程序、一个简单的命令行界面等,另外,还提供了一组针对PC的输入/输出编程接口,可以直接基于Hello China开发PC上的应用程序。
(12)一组附加的应用程序,比如硬件端口读写程序、系统信息诊断程序等,可供程序开发者作为调试使用。
除此之外,Hello China还提供了其他操作系统相关的服务,并初步定义了网络协议栈框架(尚未实现)。随着本书介绍的深入,这些特点和服务将会被一一介绍。