① stm32移植ecos #1,为什么要把ecos移植到stm32平台上 reille ...
作为eCos推广计划一部分,会将eCos移植到当前非常流行的stm32处理器上,在此基础上,展开一些应用开发设计,并提供工程模板。选择stm32作为eCos推广突破口,有以下几个因素:在对eCos有一点了解或有所耳闻的大多数工程师眼中,eCos可能被定位于像ucosII一样级别的嵌入式OS,换句话说,eCos的应用场合应该是类似ARM7、Cortex-M处理器之类的CPU中; 当前,STM32相比其它家的Cortex-M处理器更加流行,被广泛应用到许多低端嵌入式产品中,而且最重要的是,学者众多,开发板资源非常丰富; 目前市场上,stm32开发板一大堆,很容易利用当前资源展开eCos的学习; 像ARM7和Cortex-M处理器之类的CPU中,使用的OS大多数是ucosII,而这个OS是收费的,不能商用,相反,eCos是开源免费使用的,如果在这众多嵌入式应用中,可使用eCos在多数产品应用中替换掉ucosii,那么推广效果将更加理想; 对于ARM9以上的高端处理器,工程师更宁愿使用linux、VxWorks、Windows CE、uclinux等OS,而不愿意使用免费便资源匮乏的eCos; 这里有一个关键因素是,eCos必须展现它的应用价值和它的魅力,不然凭什么人家对这个OS产生兴趣并在产品中使用它。0您可能也喜欢:stm32移植ecos #3,我的stm32开发板配置stm32移植ecos #2,选购stm32开发板stm32移植ecos #7,移植ecos并成功运行helloworld程序,配置编译生成静态链接库文件stm32移植ecos #8,移植ecos并成功运行helloworld程序,编译链接生成helloworld程序stm32移植ecos #11,使用自己的模板(Template)stm32移植ecos #4,移植redboot(ROM启动方式)上篇stm32移植ecos #9,移植ecos并成功运行helloworld程序,使用redboot引导运行内存中的helloworld程序stm32移植ecos #6,redboot的疑问和问题,redboot是必需的吗?
② 关于路由器的参数与性能
路由的参数一般要看CPU,内存,flash,和系统架构,最主要是固件水平。一般Linux内核的路由对配置要求比较高,而ecos内核的路由要求比较低,所以单纯看硬件不实际。路由的好坏不怎么看硬件的,要看路由的固件功能的...功能越多就越贵...
③ 关于bootloader的一些问题。高手确定的回答。
简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。一个嵌入式Linux系统从软件的角度看通常可以分为四个层次: 1、 引导加载程序。包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。 2、 Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3、 文件系统。包括根文件系统和建立于Flash内存设备之上文件系统。通常用ramdisk来作为rootfs。 4、 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。 引导加载程序是系统加电后运行的第一段软件代码。PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS BootLoader(比如,LILO和GRUB等)一起组成。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统的RAM中,然后将控制权交给OS BootLoader。BootLoader的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。 通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,我们仍然可以对BootLoader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。
编辑本段常见bootloader
Redboot
Redboot是Redhat公司随eCos发布的一个BOOT方案,是一个开源项目。 当前Redboot的最新版本是Redboot-2.0.1,Redhat公司将会继续支持该项目。 Redboot支持的处理器构架有ARM,MIPS,MN10300,PowerPC, Renesas SHx,v850,x86等,是一个完善的嵌入式系统Boot Loader。 Redboot是在ECOS的基础上剥离出来的,继承了ECOS的简洁、轻巧、可灵活配置、稳定可靠等品质优点。它可以使用X-modem或Y-modem协议经由串口下载,也可以经由以太网口通过BOOTP/DHCP服务获得IP参数,使用TFTP方式下载程序映像文件,常用于调试支持和系统初始化(Flash下载更新和网络启动)。Redboot可以通过串口和以太网口与GDB进行通信,调试应用程序,甚至能中断被GDB运行的应用程序。Redboot为管理FLASH映像,映像下载,Redboot配置以及其他如串口、以太网口提供了一个交互式命令行接口,自动启动后,REDBOOT用来从TFTP服务器或者从Flash下载映像文件加载系统的引导脚本文件保存在Flash上。当前支持单板机的移植版特性有: - 支持ECOS,Linux操作系统引导 - 在线读写Flash - 支持串行口kermit,S-record下载代码 - 监控(minitor)命令集:读写I/O,内存,寄存器、 内存、外设测试功能等 Redboot是标准的嵌入式调试和引导解决方案,支持几乎所有的处理器构架以及大量的外围硬件接口,并且还在不断地完善过程中。
ARMboot
ARMboot是一个ARM平台的开源固件项目,它特别基于PPCBoot,一个为PowerPC平台上的系统提供类似功能的姊妹项目。鉴于对PPCBoot的严重依赖性,已经与PPCBoot项目合并,新的项目为U-Boot。 ARMboot发布的最后版本为ARMboot-1.1.0,2002年ARMboot终止了维护。 ARMboot支持的处理器构架有StrongARM ,ARM720T ,PXA250 等,是为基于ARM或者StrongARM CPU的嵌入式系统所设计的。 ARMboot的目标是成为通用的、容易使用和移植的引导程序,非常轻便地运用于新的平台上。ARMboot是GPL下的ARM固件项目中唯一支持Flash闪存,BOOTP、DHCP、TFTP网络下载,PCMCLA寻线机等多种类型来引导系统的。特性为: -支持多种类型的FLASH -允许映像文件经由BOOTP、DHCP、TFTP从网络传输; -支持串行口下载S-record或者binary文件 -允许内存的显示及修改 -支持jffs2文件系统等 Armboot对S3C44B0板的移植相对简单,在经过删减完整代码中的一部分后,仅仅需要完成初始化、串口收发数据、启动计数器和FLASH操作等步骤,就可以下载引导uClinux内核完成板上系统的加载。总得来说,ARMboot介于大、小型Boot Loader之间,相对轻便,基本功能完备,缺点是缺乏后续支持。
U-Boot
U-Boot是由开源项目PPCBoot发展起来的,ARMboot并入了PPCBoot,和其他一些arch的Loader合称U-Boot。2002年12月17日第一个版本U-Boot-0.2.0发布,同时PPCBoot和ARMboot停止维护。 U-Boot自发布以后已更新6次,最新版本为U-Boot-1.1.1,U-Boot的支持是持续性的。 U-Boot支持的处理器构架包括PowerPC (MPC5xx,MPC8xx,MPC82xx,MPC7xx,MPC74xx,4xx), ARM (ARM7,ARM9,StrongARM,Xscale),MIPS (4Kc,5Kc),x86等等, U-Boot(Universal Bootloader)从名字就可以看出,它是在GPL下资源代码最完整的一个通用Boot Loader。 U-Boot提供两种操作模式:启动加载(Boot loading)模式和下载(Downloading)模式,并具有大型Boot Loader的全部功能。主要特性为: -SCC/FEC以太网支持 -BOOTP/TFTP引导 -IP,MAC预置功能 -在线读写FLASH,DOC, IDE,IIC,EEROM,RTC -支持串行口kermit,S-record下载代码 -识别二进制、ELF32、pImage格式的Image,对Linux引导有特别的支持 -监控(minitor)命令集:读写I/O,内存,寄存器、内存、外设测试功能等 -脚本语言支持(类似BASH脚本) -支持WatchDog,LCD logo,状态指示功能等 U-Boot的功能是如此之强大,涵盖了绝大部分处理器构架,提供大量外设驱动,支持多个文件系统,附带调试、脚本、引导等工具,特别支持Linux,为板级移植做了大量的工作。U-Boot1.1.1版本特别包含了对SA1100和44B0芯片的移植,所以44B0移植主要是针对Board 的移植,包括FLASH、内存配置以及串口波特率等等。U-Boot的完整功能性和后续不断的支持,使系统的升级维护变得十分方便。
Blob
Blob(Boot Loader Object)是由Jan-Derk Bakker and Erik Mouw发布的,是专门为StrongARM 构架下的LART设计的Boot Loader。 Blob的最后版本是blob-2.0.5。 Blob支持SA1100的LART主板,但用户也可以自行修改移植。 Blob也提供两种工作模式,在启动时处于正常的启动加载模式,但是它会延时 10 秒等待终端用户按下任意键而将 Blob 切换到下载模式。如果在 10 秒内没有用户按键,则 Blob 继续启动 Linux 内核。其基本功能为: 初始化硬件(CPU速度,存储器,中断,RS232串口) -引导Linux内核并提供ramdisk - 给LART下载一个内核或者ramdisk -给FLASH片更新内核或者ramdisk -测定存储配置并通知内核 -给内核提供一个命令行 Blob功能比较齐全,代码较少,比较适合做修改移植,用来引导Liunx,目前大部分S3C44B0板都用Blob修改移植后来加载uClinux。
Bios-lt
Bios-lt是专门支持三星(Samsung)公司ARM构架处理器S3C4510B的Loader,可以设置CPU/ROM/SDRAM/EXTIO,管理并烧写FLASH,装载引导uClinux内核。这是国内工程师申请GNU通用公共许可发布的。 Bios-lt的最新版本是Bios-lt-0.74,另外还提供了S3C4510B的一些外围驱动。
Bootldr
Bootldr是康柏(Compaq)公司发布的,类似于compaq iPAQ Pocket PC,支持SA1100芯片。它被推荐用来引导Llinux,支持串口Y-modem协议以及jffs文件系统。 Bootldr的最后版本为Bootldr-2.19。
④ 适用于RAM、NOR FLASH和NAND FLASH的文件系统有那些适用于RAM、NOR FLASH和NAND FLASH的文件系统有那些
1、适用于RAM的一般是虚拟文件系统,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供统一的操作界面和应用编程接口,/proc/下就是这样的文件系统,掉电会丢失;
2、NOR FLASH:JFFS主要用于NOR型闪存,基于MTD驱动层,JFFS是可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等功能,但是缺点:当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢,不适合NAND FLASH上使用;
3、NAND FLASH: yaffs/yaffs2是专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。与jffs2相比,它减少了一些功能(例如不支持数据压缩),所以速度更快,挂载时间很短,对内存的占用较小。yaffs是跨平台的文件系统,除了Linux和eCos,还支持WinCE, pSOS和ThreadX等;yaffs与yaffs2的主要区别在于:前者仅支持小页(512 Bytes) NAND闪存,后者则可支持大页(2KB) NAND闪存。与JFFS相比,yaffs2在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。
希望这个答案能够使你满意!
⑤ ecos系统控制器电检版本的原因
ECOS在整车生产中具有十分重要的意义。
整车电子电器检测系统ECOS(Electrical Check Out System)在整车生产中具有十分重要的意义。以名爵MG7为例,其在生产终端配置、转毂与尾气测试及电器电流检测中尤为关键。
现代轿车的总线技术开发是整车开发系统的核心,指导着零部件的分别开发,与国内传统的零部件分别开发后组装完全不同;虽然汽车电子的总线技术目前有很多的研发机构,但大多停留在产品基本应用功能实现上,往往在控制器实现网络管理和诊断等方面存在不足,不能满足汽车的整个产业化需要,因此国内主机厂生产的车型基本上仅具备初步整车通信的总线结构能力,逐渐实现总线技术应用于整车电子电器生产配置、转毂检测、售后诊断及零部件追溯的全过程。
⑥ window中怎么打开hadoop网页解决方法
根据楼主的描述hadoop应该已经启来了。jps是java的工具,能够显示系统当前运行的java程序及其进程号。运行jps没有显示,应该是没有配置好系统的path、java_home和classpath。执行hadoopfs-ls等同于hadoopfs-ls.该命令查看的是hdfs的/user/hadoop目录。而且默认是没有这个目录的。需要自己创建。
⑦ cygin不会用啊!帮忙!
它是在Windows下的编译环境,在LINUX下没用过。
ARM编译环境建立说明
安装需要的文件
Ecos目录和ecos_tools目录.
其中ecos_tools目录中包括cygwin安装目录,ecosV1.3.1目录,arm-elf编译环境.
安装建议
1. 建议cygwin和ecos安装路径都单独安装在硬盘的盘符的根目录下,例如:d:\cygwin,d:\ecos
2. 安装cygwin和ecos需要大概800M左右空间.
安装cygwin
1. 进入ecos_tools目录下面的cygwin目录,运行setup.exe.
2. 点击下一步,在(图一)所示的选项中选择第三项(install from local directory)
(图一)
3. 点击下一步,在(图二)所示的窗口中填入安装路径,Default Text File Type选择DOS即可,然后点击下一步,安装的源路径默认即可.
4. 点击下一步,出现的窗口让用户选择安装哪些包,这些包主要是确定开发环境,编译工具等,如果不能确定具体需要哪些包的话,而硬盘空间足够的情况下,就选择全部安装。在出现的对话框的''All''的右边点击''Default'',直到变成''Install'',如(图三)所示,然后进行安装即可.
(图三)
安装cygwin下的ARM-elf编译环境
1. 在安装好的cygwin目录里建立tools目录,例如安装的路径为d:\cygwin,那么建立tools目录即为d:\cygwin\tools.
2. 进入ecos_tools目录下的toolchain目录,解压缩arm-elf-big-endian.zip文件压缩包,然后把解压缩的arm-elf整个目录拷贝到安装的cygwin目录下的tools目录中,形成比如d:\cygwin\tools\arm-elf.
3. 打开安装的cygwin目录ect目录下面的profile文件,找到export PATH="/usr/local/bin:/usr/bin:/bin:$PATH",然后修改为export PATH="/usr/local/bin:/usr/bin:/bin:/tools/arm-elf/bin:$PATH"即可.
安装ECOS环境
1. 运行ecos_tools目录下1.3.1目录中的eCos131.exe.根据安装提示安装ECOSV1.3.1
2. 安装完毕后,把ecos目录中所有内容拷贝到安装后的ecos目录中进行覆盖.
3. 拷贝ecos_tools目录中的tcl82.dll文件到安装的cygwin目录的bin目录中.
4. 拷贝ecos_tools目录中x文件和rpx文件到安装后的ecos目录中.
5. 运行windows程序菜单中的Red Hat eCos里面的Configuration Tool,出现如(图四)所示的配置窗口.
(图四)
6. 选择build菜单中的Repository,在如(图五)所示的弹出的窗口中配置目录,点击browse按钮,选择安装的ecos目录,然后点击ok按钮.
(图五)
7. 选择tools菜单中的paths菜单,选择paths菜单中的build tools子菜单,在如(图六)所示的弹出窗口中配置目录,点击browse按钮,选择安装的cygwin目录中的tools目录下面的arm-elf目录下的bin目录,然后点击Ok按钮.
(图六)
8. 选择tools菜单中的paths菜单,选择paths菜单中的user tools子菜单,在如(图七)所示的弹出窗口中配置目录,点击browse按钮,选择安装的cygwin目录中bin目录,然后点击Ok按钮.
(图七)
9. 选择tools菜单中的shell子菜单,如果能弹出类似dos窗口的窗口,那么说明第6,7,8步配置正确,否则请重新设置路径.
10. eCos使用“/c”、“/d”等表示硬盘“c:”和“d:”,因此必须在选择shell菜单弹出窗口中执行下述命令:$ mount –f c:/ /c
$ mount –f d:/ /d
可以使用下述命令进入相应得硬盘:
$ cd /c
$ cd /d
11. 另外1.3.1版本的ecos配置工具产生的Makefile中的目录路径总是带双斜杠,如//D/eCos之类,可以用rpx这个script来校正;重新编辑rpx文件,修改安装eCos的目录,save退出。
12. 在shell中进入eCos目录./x,然后回车; ./rpx回车。注意:每次修改eCos程序进行编译之前,都要运行./rpx,否则出现//D/eCos目录带双斜杠的错误。
13. 在eCos目录下,新建一个文件夹,把boot.ecc和download.ecc文件拷到此文件夹目录下。
14. 运行Red Hat eCos,调用boot.ecc,如果此时./rpx,然后编译boot.ecc,就会出现错误,如找不到hal.h等文件,因此要先改动boot.ecc的一个选项,然后再改回,就是说让它有一个存盘的操作,eCos配置工具就会自动在boot.ecc的同一个目录下生成boot_build、boot_install、boot_mlt文件夹。然后编译就不会出错误了。
15. boot_build文件夹里存放着用于对eCos进行编译时所生成的文件,包括makefile文件、目标文件和其他一些文件;boot_install存放用于编译eCos应用程序的所有文件,包括库文件libtrget.a和头文件;boot_mlt存放内存布局文件。
16. 更改应用程序的makefile文件,把PKG_INSTALL_DIR指到boot_install目录,然后在shell中make,把生成的bin文件烧到片子里就可以了。到此ok。
注意:1、应用程序有两种运行方式,写片子方式和下载方式。(1)应用程序和操作系统捆绑运行,也就是把应用程序文件夹中的makefile文件修改,makefile文件中的PKG_INSTALL_DIR指到boot.ecc生成的boot_install文件夹,存盘;在shell中,进入应用程序目录,make后回车,编译生成的bin文件烧到片子里运行即可。(2)用/ecos/boot目录下的makefile文件,更改此文件中的PKG_INSTALL_DIR指到boot.ecc生成的boot_install文件夹;用make编译生成的bin文件烧到片子里运行,此时片子里没有应用程序;然后更改应用程序所在目录的makefile文件,修改此文件使PKG_INSTALL_DIR指到download_install文件夹,存盘,在shell下进入应用程序文件夹,make后回车,把生成的bin文件拷到ecos目录下,通过fftp.exe工具下载应用程序到板子上。
2、用make成功编译一次后,就会生成.o等过程文件,当下次再make时,就会出错,因此需要make clean,清除编译过程文件。
3、用fftp.exe工具下载时,一定去掉防火墙。
⑧ 如何移植redboot支持nand flash
Redboot被设计用于嵌入式调试和启动环境,它是一个基于eCos的应用程序,使用eCos的硬件抽象层(HAL)作为它的基础。它一个基本的功能是作为bootloader,但可用于任何嵌入式系统或任何嵌入式实时操作系统中。也可用于产品开发周期中的调试支持或在发布的产品中提供flash或网络启动。特性有:
启动脚本支持;
管理和控制的命令行支持;
通过串口或以太网口的访问;
GDB支持;
flash映像系统支持;
X/Y调制解调器的支持;
支持使用BOOTP或静态IP地址配置的网络启动;
移植redboot到stm32开发板
1.,搭建好ecos开发环境
2,打开ecos图形配置工具configtool,如下图所示。
下图中,左边窗口为ecos的配置项窗口,右边窗口从上到下分别为:冲突提示窗口、配置项属性窗口、配置项说明窗口。
⑨ ecos和shopex是什么关系啊我只知道shopex是b2c系统,但ecos是干嘛的呢可以用
如你说所说,shopex一般都是用来做B2C,至于ECOS这个系统,他针对的领域有所不同,这是一种嵌入式可配置实时操作系统,适合于深度嵌入式应用,主要应用对象包括消费电子、电信、车载设备、手持设备以及其他一些低成本和便携式应用。要了解的更加具体你可以到国内的这个eCos”技术网“这个社区去瞅瞅
⑩ 嵌入式实时操作系统的特点
嵌入式实时操作系统应用十分广泛,包括数据通信、信息家电、航空航天、工业控制、生物医学电子、船舶工程、计算机外设、电信设备、交通运输、国防武器控制等领域,已经形成IT产业争夺的重点领域,它所带来的工业年产值已超过1万亿美元。在嵌入式系统开发中使用嵌入式实时操作系统已成为一种不可逆转的潮流与时尚。
1 背景
随着计算机技术的迅速发展和芯片制造工艺的不断进步,嵌入式系统的应用日益广泛:从民用的电视、手机等电路设备到军用的飞机、坦克等武器系统,到处都有嵌入式系统的身影。在嵌入式系统的应用开发中,采和嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。这已逐渐成为嵌入式系统开发的一个发展方向。
2 嵌入式操作系统概述
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件。它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、标准设备驱动程序以及工具集等。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
嵌入式系统的出现至今已经有30多年的历史。纵观嵌入式技术的发展过程,大致经历了四个阶段。
(1)无操作系统的嵌入式算法阶段
这一阶段的嵌入式系统是以单芯片为核心的系统,具有与一些监测、伺服、指示设备相配合的功能。一般没有明显的操作系统支持,而是通过汇编语言编程对系统进行直接控制。主要特点是系统结构和功能都相对单一,针对性强,无操作系统支持,几乎没有用户接口。
(2)简单监控式的实时操作系统阶段
这一阶段的嵌入式系统主要以嵌入式式器为基础、以简单监控式操作系统为核心。系统的特点是:处理器种类繁多,通用性比较弱;开销小,效率高;一般配备系统仿真器,具有一定的兼容性和扩展性;用户界面不够友好,主要用来控制系统负载以及监控应用程序运行。
(3)通用的嵌入式实时操作系统阶段
以通用型嵌入式实时操作系统为标志的嵌入式系统,如VxWorks、pSos、Windows CE就是这一阶段的典型代表。这一阶段嵌入式系统的特点是:能运行在各种不同的微处理器上;具有强大的能用型操作系统的功能,如具备了文件和目录管理、多任务、设备驱动支持、网络支持、图形窗口以及用户界面等功能;具有丰富的API和嵌入式应用软件。
(4)以Internet为标志的嵌入式系统
伴随着通用型嵌入式实时操作系统的发展,面向Internet网络和特定应用的嵌入式操作系统正日益引起人们的重视,成为重要的发展方向。嵌入式系统与Internet的真正结合、嵌入式操作系统与应用设备的无缝结合代表着嵌入式操作系统发展的未来。
3 两种源码开放的RTOS
嵌入式实时操作系统有很多,如VxWorks、PalmOS、WindowsCE等。这些操作系统均属于商品化产品,价格昂贵且由于源泉代码不公开导致了诸如对设备的支持、应用软件的移植等一系列的问题;而开放源码的RTOS在成本和技术上有其特有的优势,在RTOS领域占有越来越重要的地位,本文将介绍μC/OS-II和eCos两种优秀的源码公开的实时操作系统,通过对它们各自的特点和性能进行分析和比较,给出相关的数据,为选择一种合适的RTOS提供参考。
3.1 μC/OS-II
μC/OS-II的前射是μC/OS,最早出自于1992年美国嵌入式系统专家Jean J.Labrosse在《嵌入式系统编程》杂志的5月和6月刊上刊登的文章连载,并把μC/OS的源码发布在该杂志的BBS上。当时就有500多人下载了这份源码。世界上数以千计的工程技术人员将μC/OS应用到了各个领域,如照相机业、发动机控制、网络接入设备、高速公路电话系统、ATM机和工业机器人等。许多大学用μC/OS作教材,用于实时系统教学。1998年,作者决定出版μC/OS的第二本书《μC/OS-II The Real Time Kernel》,并设立了正式的网站:www. ΜC/OS-II.com,给μC/OS-II增加了一些新的功能,并且增加了约200页的解释。
μC/OS和μC/OS-II是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU上。许多移植的范例可以从网站上得到。用户只要有标准的ANSI的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS嵌入到开发的产品中。
μC/OS具有执行效率高、占用空间小、实时性能优良和可扩展性能等特点,最小内核可编译至2KB。μC/OS-II已经移植到了几乎所有知名的CPU上。
3.2 eCos
eCos(embedded Configurable operating system),即嵌入式可配置操作系统,最初起源于美国的Cygnus Solutions公司。Cygnus公司于1998年11月发布了第一个eCos版本eCos1.1,当时只支持有限的几种处理器结构。1999年11月,RedHat公司以6.74亿美元收购了Cygnus公司。在此后的几年里,eCos成为其嵌入式领域的关键产品,得到了迅速的发展。2002年,RedHat公司由于财务方面的原因,裁剪了eCos开发队伍,但并没有停止eCos的发展。RedHat公司随后宣称将继续支持eCos的发展,而由原eCos主要开发人员组建了eCos Centric公司,并于2003年5月正式发布了eCos2.0。
虽然eCos是RedHat的产品,但是eCos并不是Linux或Linux的派生,eCos弥补了Linux在嵌入式应用领域的不足。目前,一个最小配置的Linux内核大概有500KB,需要占用1.5MB的内存空间,这还不包括应用程序和其它所需的服务;eCos可以提供实时嵌入式应用所需的基本运行基件,而只占用几十KB或几百KB的内存空间。eCOS是一个源码开放的可配置、可移植、无版税、面向深嵌入式应用的实时操作系统。从eCOS的名称可以看出,它最大的特点在于它是一个配置灵活的系统。ECOS的核心部分是由不同的组件组成的,包括内核、C语言库和底层运行包等。每个组件以能提供大量的可配置选项,利用eCOS提供的配置工具可以很方便地进行配置。通过不同的配置使得eCOS能够满足不同的嵌入式应用。
4 μC/OS-II与eCOS的比较
对于以上两种源泉码公开的实时操作系统,我们主要从以下几个方面进行比较。通过比较,能够为大家选择适合自己系统的RTOS提供参考。
4.1 内核调度机制
RTOS内核的核心是调度器。当系统包含多个任务或多个线程时,必须使用调度器来决定当前执行哪一个任务或线程。调度器对线程的运行进行控制,并为线程提供一种同步机制。表1列出了这两种RTOS调度器(调度机制)的比较。
表1 调度器比较
调度方法 同优先级调度 优先级数/个 任务数量/个
uC/OS-II
固定
优先级
抢占式
无
64
(8个保留)
56
eCos: 位图
优先级
抢占式
无
32
32
eCos:多级队列
优先级
抢占式
有
32
无限
eCos:奖券
测试中
测试中
测试中
测试中
μC/OS只支持固定优先级抢占式,不支持时间片轮转调度,调度方法简单、实时性好,用法也简单;eCOS调度方法丰富,适应性好。当然,目前的eCOS只允许在其目标系统中使用一个单独的调度器,未来的版本将可以允许多个调度器协同工作。
4.2 任务间同步、通信机制
RTOS的功能一般要通过若干任务和中断服务程序共同完成,任务与任务之间、任务与中断服务程序之间必须协调动作,互相配合,这就牵涉到任务间的同步与通信问题。表2为这两种操作系统同步与通信机制的比较。
表2 同步与通信机制的比较
uC/OS-II
eCos
同步与通信机制
信号量、邮箱、消息队列
互斥、条件变量、计数型信号量、邮箱和事件标志
4.3 任务切换时间和中断延迟时间
任务切换时间和中断延迟时间是评估RTOS性能的两个重要指标。任务切换时间可以反映出RTOS执行任务的速度,而中断延迟时间可以反映出RTOS对外界变化的反应速度。表3为这两种操作系统任务切换时间和中断延迟时间的比较。
表3 任务切换时间和中断延迟时间的比较
任务切换时间/us
中断延迟时间/μs
测试环境
μC/OS-II
29.7~34.2
78.8
Intel80186(33MHz)
eCos
15.84
19.2
MPC860A3(33MHz)
4.4 对硬件的支持
μC/OS-II和eCOS支持当前流行的大部分嵌入式CPU,都具有很好的可移植特性。μ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最大的特点是配置灵活,适合于用在一些商业级或工业级的嵌入式系统,如一些消费电子、汽车领域等等。总之,选用什么样的操作系统,要根据目标系统的硬件条件和用户应用程序的复杂度来确定。