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