基于AT91SAM9260的智能保密柜设计方案
![嵌入式操作系统的三层结构](http://m.amcfsurvey.com/uphotos/fetch/20130729/150231_2_0.jpg)
该系统由内向外可分操作系统层、任务层和硬件电路层三层,如图3所示。嵌入式操作系统是嵌入式系统软硬件资源的控制中心,它组织多个任务共享嵌入式系统的资源。常见的嵌入式实时操作系统有Window CE,VxWorks,μC/OS-Ⅱ,Linux等,后两种操作系统免费公开源代码。
2.1 嵌入式操作系统方案选择
为了选择合适的嵌入式操作系统,本文对开源的μC/OS-Ⅱ与Linux操作系统的进程调度、文件系统支持和系统移植等因素进行了分析比较,因为这是设计、应用、移植嵌入式操作系统中的关键。
(1)进程调度
进程调度是操作系统协调调度系统中多任务对计算机系统内部资源的争夺使用。作为实时操作系统,μC/OS-Ⅱ采用可剥夺型实时多任务内核,它在任何时候都运行已就绪的最高优先级任务。μC/OS-Ⅱ最多可以支持64个任务,它通过就绪任务表寻找最高优先级任务,并进行任务切换。
Linux操作系统则每隔一定时间挂起进程,同时系统产生快速和周期性的时钟计时中断,通过调度函数决定调用的进程。Linux操作系统每个进程的task_struct结构中有调度策略、静态优先级、动态优先级、时间片、实时优先级等5个参数,Linux根据调度策略区分实时进程和普通进程,实时进程优先于普通进程运行。Linux操作系统对于同一类型的不同进程,采用不同的标准来选择进程:
①普通进程调度。当调度策略的值为SCHED_OTHER时,为普通用户进程,Linux采用动态优先调度标准,选择进程的依据是进程time_sli-ce的值。
②实时进程调度。对手实时进程,Linux采用了两种调度策略,即先来先服务调度和时间片轮转调度。当调度策略的值为SCHED_FIFO时,选用先来先服务调度规则。当调度策略的值为SCHED_RR时,选用时间片轮转调度规则,即时间片用完则释放CPU,进程排到等待队列末尾。
(2)文件系统
文件系统负责存取和管理文件信息。在嵌入式系统里,常见的文件系统有YAFFS,JFFS2,CramFS,RamFS,Ramdisk等。
μC/OS-Ⅱ操作系统本身没有对文件系统的支持,虽然μC/OS-Ⅱ具有良好的扩展性能,如果需要也可自行扩展对文件系统的支持,但毕竟会增加开发工作量。
Linux操作系统则具有完善的文件系统,并且具有网络优势,可以方便地支持网络文件系统且内嵌TCP/IP协议,这为Linux开发网络接入设备提供了便利。
(3)操作系统的移植
嵌入式操作系统必须经过移植才能够在不同的微处理器上运行。μC/OS-Ⅱ和Linux都提供了开源代码,其结构化设计也便于裁剪,所以它们都能够移植到新的处理器平台。
①μC/OS-Ⅱ的移植。移植μC/OS-Ⅱ操作系统,目标处理器必须满足以下要求:处理器的C编译器能产生可重入代码,且用C语言就可以打开和关闭中断;处理器有足够的存储容量作为多任务环境下的任务堆栈;处理器具备将堆栈指针和寄存器读出和存储到堆栈或内存中的指令。所以μC/OS-Ⅱ的移植只需根据以上要求修改不同处理器之间的相关代码。
②Linux的移植。
首先进行系统初始化:关闭Watchdog,改变系统时钟,初始化存储控制器,将操作系统内核复制到内存中。这一系列操作称作BootLoa-der,通常移植U-boot来实现BootLoader的功能;其次进行Linux内核移植:下载内核源代码,对内核进行裁剪配置,编译内核生成镜像文件,下载到目标板;最后进行文件系统的移植:生成根文件系统目录,移植Busybox,生成镜像文件,下载到目标板。综上所述,μC/OS-Ⅱ和Linux二者都具有开源码和满足较高的实时性要求。μC/OS-Ⅱ是一种结构小巧的实时操作系统,其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能,最小内核可编译至2 kB,全部功能编译后内核也仅占6~10 KB。虽然μC/OS-Ⅱ执行效率高,占用空间小,实时性能优良,可扩展性能强,但μC/OS-Ⅱ系统缺少对文件系统的支持,所以μC/OS-Ⅱ适用于存储资源比较有限的应用场合和小的控制系统。然而Linux具有多任务、可定制内核、完善的网络通信、图形及文件管理机制,可支持大量的外围硬件设备等功能,其性能高效稳定,开发及移植环境良好。鉴于该系统需完成多种任务控制和文件管理,且存储资源充裕,也考虑到以后的网络扩展,所以选用了Linux作为嵌入式操作系统。
评论