论文部分内容阅读
嵌入式操作系统是操作系统领域里的一个重要分支,其应用遍及工业控制、通信系统、无线系统等各个领域。随着微处理器的发展,限制嵌入式系统发展的瓶颈主要体现在软件方面。本文在Linux的基础上,深入研究了内核原理及嵌入式操作系统的基本功能,设计实现了一个小型的嵌入式实时操作系统内核Migix-Kernel。具体工作包括:内存管理:一般Linux都会用虚拟存储器技术来提供更多的内存空间,在计算机系统中提供的内存空间要比实际使用的物理内存大很多。可以在写程序时能够使工作人员不需要考虑计算机物理内存的实际容量大小。但这需要磁盘I/O操作,导致耗费大量cpu时间。为了减少cpu时间占用,设计Migix时,我们使用了flat模型。也就是说Migix的cpu没有虚拟内存机制、内存地址转换机制和内存保护机制,Migix中所使用的都是直接物理地址。中断系统:在不同的硬件结构中,通常有不同的中断源和不同的中断装置,但它们有一个共性:即当中断事件发生后,中断处理装置能改变处理器内操作执行的顺序,可见中断是现代操作系统实现并发性的基础之一。ARM处理器每个异常中断对应一条跳转指令或者向PC寄存器赋值的数据访问指令。理论上可以通过这两种指令直接使得程序跳转到对应的中断处理程序中去。但实际上由于函数地址值为未知和其它一些问题,这么做并不恰当。在具体实现时,设置一个中断向量表并将其地址固定化,即所有的程序地址是固定的,这样在中断发生后,解析程序能够自动找到向量表。中断向量表的内容是可以修改的,程序员可以向中断向量表中添入正确的目标地址,就可以将上层中断处理程序和底层硬件联系起来。进程调度:对于实现硬实时的进程调度策略,现行的Linux操作系统存在进程转换时间长、不能中断代码的关键部分等不足。为了克服以上所述的不足,进程调度策略采用如下设计方法:将内核分为两个部分,一部分用来完成与实时相关的工作,称为RTLKerne(lReal Time Linux Kernel),另一部分是普通的Linux内核。实时内核RTLKernel和普通内核NLKernel相互结合、缺一不可。实时内核可以设计得很简单,大部分的应用由普通Linux内核来完成。设备驱动:Linux设备驱动程序是内核的一部分,由于设备种类繁多、设备驱动程序也有许多种,为了能协调设备驱动程序和内核的开发,Linux的设备驱动定义了严格的外界接口。按照接口定义,Migix系统分别实现了驱动程序的注册与注销、设备的打开与释放、读写和控制设备、中断和轮询处理。TCP/IP协议栈:随着嵌入式系统的发展,近年来网络化的嵌入式系统逐渐成为嵌入式领域的研究热点。实现嵌入式系统网络化最基本条件或者前提是将TCP/IP协议栈加入到嵌入式系统中。TCP/IP协议栈是由多个协议组合而成的,根据协议栈的功能,在Migix系统中分别设计了ARP模块(实现IP地址与物理地址的关联)、IP模块(实现数据包的正确发送与接收)、ICMP模块(实现差错报告和纠正功能)和TCP模块(用有限状态机来实现TCP协议)来实现协议栈各个部分的功能。本文实现的Migix只是一个具有基本功能的、实验性的嵌入式系统,它还有很多不足和不完善的地方,如文件系统未实现、进程调度不稳定、没有图形界面等。这些不足也是我们今后工作的方向和重点。