嵌入式可配置实时操作系统eCos分析及其在ARM7上的移植学生:曹丽莉导师:纪震一、eCos简介eCos最初起源于Cygnus公司。1999年11月,RedHat收购了Cygnus公司。此后几年,eCos得到了迅速发展。2003年5月,正式发布eCos2.0。eCos起源与发展eCos特点可配置性(可显著缩短嵌入式产品开发周期)可裁剪性可移植性实时性兼容性eCos特性eCos能够满足嵌入式Linux难以满足的对嵌入空间的需求。Linux目前内核最小约500KB,占用1.5MB内存,而eCos只占用几十到几百KB。eCos使用多任务抢占机制,具有最小的中断延迟,支持嵌入式系统所需的所有同步原语,并拥有灵活的调度策略和中断处理机制。eCos特性提供了普通嵌入式应用中所需的功能。包括设备驱动程序、内存管理、例外处理、标准C、数学库等等。提供了开发嵌入式应用所需的工具。开放源码μC/OS-II与eCos的比较1.调度器比较调度方法同优先级调度优先级数任务数量μC/OS-II固定优先级抢占式无64(8个保留)56eCos位图优先级抢占式无3232多级队列优先级抢占式有32无限奖券奖券法目前在测试中系统同步、通信机制的比较RTOS的功能一般要通过若干任务和中断服务程序共同完成,任务与任务之间、任务与中断服务程序之间必须协调动作,这就牵涉到任务间的同步与通信问题。μC/OS-IIeCos同步与通信机制信号量、邮箱、消息队列互斥、条件变量、计数型信号量、邮箱和事件标志任务切换时间和中断延迟时间的比较任务切换时间反映RTOS执行任务的速度。中断延迟时间反映RTOS对外界变化的反应速度。任务切换时间/us中断延迟时间/us测试环境μC/OS-II29.7~34.278.8Intel80186(33MHz)eCos15.8419.2MPC860A3(33MHz)系统对硬件支持的比较μC/OS-II与eCos都具有很好的可移植特性。μC/OS-II支持从8位到32位的CPU,而eCos可以在16位、32位和64位等不同体系结构之间移植。μC/OS-II与eCos由于本身内核很小,经过裁剪后代码最小分别为2KB和10KB,所需最小RAM空间为4KB和10KB,因此它们对硬件要求很低,具有极高经济性。总结通过比较可以看到,μC/OS-II相对eCos来说,源代码最小很多,特别适合学习和研究。最大特点是小巧。适合应用在RAM和ROM有限的小型嵌入式系统中,如单片机系统。eCos最大特点是配置灵活,适合用在一些商业级或工业级的嵌入式系统,如一些消费电子、汽车领域等等。开发环境eCos具有两种可选择的开发环境:建立在Windows下的开发环境基于Linux或UNIX的开发环境开发工具Windows环境下,建立eCos开发环境的工具:UNIX/Linux模拟环境Cygwin提供了自由软件GNUGCC编译器和GDB调试工具;为Windows提供一个包括API和命令SHELL在内的标准UNIX/Linux开发环境。开发工具GNU交叉编译工具包括GNU编译器GCC、GNU调试工具GDB和包括GNU汇编器和链接器在内的GNU二进制工具(binutils2.10.1以上版本)。这里,我们使用ecoscentric提供已经编译好的Cygwin环境下的交叉工具。eCos配置工具包括图形配置工具和命令行配置工具。eCos图形配置工具窗口eCos层次结构目标硬件系统平台RedBootROMMonitor硬件抽象层设备驱动中断例外虚向量网络串口Flash内核网络栈文件系统网络服务器标准库兼容性MathCUTRONPOSIX嵌入式应用eCos应用应用对象:消费电子、电讯、车载设备、手持设备以及其他一些低成本和便携式的应用。二、eCos内核主要内容内核的作用及特点内核调度机制内存分配中断处理例外处理SMP支持计数器与时钟内核作用及特点内核作用:为多线程应用程序的开发提供核心支持。对系统中各种线程进行控制和操作。内核特点:采用一个单独的包来支持对内存的分配,对每一个设备驱动程序也提供一个单独的包来支持。内核调度机制eCos具有两个调度器位图调度器设置若干个不同的线程优先级。线程个数有严格的限制。多级队列调度器具有优先级的FIFO调度策略,采用时间片轮转策略进行调度,时间片大小可通过配置工具设置。内存分配eCos提供两种内存模板:Cyg_Mempoolt和Cyg_Mempoolt2。每种内存模板又提供两种内存池:变长内存池和定长内存池。可以使用eCos图形配置工具对内存分配机制进行配置。中断处理内核将中断处理分成两个层次:与中断向量直接相连的是中断服务程序ISR,它对中断进行尽可能的快速处理。ISR只能使用少量的内核调用,不能使用唤醒线程的调用。执行ISR时中断被禁止。当ISR检测到I/O操作已经完成因而要唤醒线程的时候,它引起滞后服务程序DSR运行。DSR可以进行更多的内核调用。执行DSR时中断处于使能状态。例外处理对每一个例外都分配一个与其对应的向量。默认情况下,系统提供一组全局例外处理程序。SMP支持eCos支持多处理器(SMP)系统,但只支持某些体系结构和平台,即对SMP目标系统硬件有一定的限制条件。计数器和时钟eCos提供定时机制包括计数器、时钟、告警器和定时器。三、eCos的移植eCos硬件抽象层eCos的层次结构使得移植过程变得相对比较容易。移植硬件抽象层是将eCos移植到新硬件平台上首先要进行的工作。eCos硬件抽象层硬件抽象层由三方面组成:体系结构抽象层变体抽象层平台抽象层平台抽象层移植平台抽象层移植的主要工作包括早期的初始化工作、内存的布局,以及驱动程序的开发工作。RedBoot移植eCos移植最好从RedBoot开始。RedBoot是eCos自带的启动代码,它比eCos简单,没有使用中断和线程机制,但包含了大部分最基本的功能。RedBoot是RedHat公司发布的一个功能强大的bootloader。可用来引导程序,调试嵌入式程序,烧写flash。RedBoot结构图RedBoot介绍RedBoot作为eCos的最小版本,建立在eCos的硬件抽象层和设备驱动程序的基础上。在这个基础上,RedBoot集成了GDBSTUB协议、网络通讯协议TCP/IP、下载协议HTTP/TFTP、文件传输协议xyzModem,以及一个简单的flashimage管理系统。最终RedBoot向用户提供了两种工作方式:命令行方式,GDB调试方式。eCos移植实例要求将eCos移植到民德公司的ES-TAD7100开发平台上。ES-TAD7100开发平台是深圳民德电子科技有限公司推出的面向教学和研发的ARM嵌入式系统开发平台。采用了一款基于32位的ARM7TDMI内核的三星S3C44B0X微处理器,系统时钟的最高频率为66MHz。参考平台选择原则:构建一个新的平台系统,利用eCos源码提供的具有相同体系结构和CPU型号的参考平台硬件抽象层,将其作为模板,复制并修改所有与新平台相关的文件。这里,选择三星公司ARMCPUS3C4510b为核心的平台SNDS作为参考平台。eCos移植的流程复制结构相似的HAL作为移植的基础根据目标板的硬件修改硬件抽象层的包在eCos数据库中添加新的平台根据目标板的实际情况修改代码为目标板编译生成RedBoot映像为RedBoot添加额外的功能选择所需模板修改代码1.修改内存布局(MLT)文件主要是修改ROM、RAM的起始地址和大小。2.修改平台的io宏定义包括CPU的系统配置寄存器、内存配置寄存器、串口配置寄存器、LCD配置寄存器等等的I/O地址。修改代码3.修改平台的Cache代码4.实现简单的串口驱动程序主要是进行串口的初始化、接收和发送。修改代码5.修改或增加平台初始化程序主要是完成系统的中断宏定义、系统硬件的初步配置以及目标板的中断处理、延时例程和操作系统时钟设置。RedBoot进行编译RedBoot映像三种格式的映像文件:Install/bin/redboot.elfInstall/bin/redboot.srec(MotorolaSREC)Install/bin/redboot.bin二进制映像,可直接写入ROM/FlashROM。添加eCos应用程序1.对eCos进行配置并完成了编译。2.加载程序之前,目标系统首先要运行RedBoot。3.在Cygwin环境下,使用命令对应用程序进行编译和链接。4.使用GDB将执行文件a.out加载到目标平台上,并启动其在目标系统上的执行。GDB图形界面结束