UCOS和uClinux的比较
ARM介绍

一首先说说ARM的发展可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。
广义的嵌入式无非几种:传统的什么51、A VR、PIC称做嵌入式微控制器;ARM 是嵌入式微处理器;DSP;FPGA。
客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。
DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。
FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。
而ARM 单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。
这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!!值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。
写的多的是什么?“嵌入式LINUX”到这相信大家看出来了吧,需要的是硬件中的软件。
二ARM是硬件还是软件很难说,ARM是硬件,LINUX是软件。
ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。
实际中的LINUX的开发工作更多,更耗时。
从这方面说ARM应该算是软件了。
在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。
而其他很多公司把嵌入式产品开发归为硬件。
所以,不要讨论这个,好好玩转自己的板子才是关键。
实在不爽你就把自己叫“嵌入式开发工程师”三要不要买开发板买哪家我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。
1 买买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。
另外,买板子更省钱和时间,我自己做的板子,原理图PCB 花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然我把接口都外引了,还做了个20X18的LCD背板,板子比较大。
QNX_ucLinux

嵌入式 Linux作为一个 整体, 占 有的 市场 份额 是不 可忽 视 的。甚至有人预言嵌入式 Linux在不久的 将来可能成 为市场 的 最大份额。 uCL inux是一种从标准 Linux简化去除了 MMU以 适 应嵌入式微控器的品 种, 因 为公开 和免费, 所以 在嵌 入式 L inux 中占有一席之地 [5] 。
较丰富, 自带文件系 统 支 持, 比如 FAT, IM FS等
tapeFS等
统等
NFS, JFFS, YAFFS等
参 考文 献
[ 1 ] RTOS m arket survey, CMP inc 2005. [ 2 ] A Selection M ethodo logy for the RTOS m arket, Ph ilips M elan son, Sia2
第 24卷第 8期 2007年 8月
计算机应用与软件 Computer Applications and Software
Vol124 No. 8 Aug. 2007
四种流行的嵌入式实时操作系统的比较研究 ) VxW ork s, QNX, ucL inux, RTEM S
孙鲁毅
(上海交通大学软件学院 上海 200030 )
将生成元和障碍输 入障碍 Voronoi图的程 序来得到 该地 区 的最优划分 (图 14、图 15)。
图 14
图 15
图 14、图 15分 别 是 城 区距 离、棋盘 距 离 下 的 Voronoi图。
位于每个 Voronoi区域内的学 生以该区 域的生 成元作 为入学 地
VxWorks,uCOS II、RT-Linux、QNX大比拼

VxWorks,uC/OS II、RT-Linux、QNX大比拼20世纪70年代以来嵌入式系统的硬件和软件技术的飞速进步,使得嵌入式应用得到了蓬勃发展,在这些应用中实时操作系统起着决定性的作用。
在复杂测控应用中,必须使用对实时性要求非常高的实时操作系统。
例如在工业控制、交通管理、机器人、航空航天、武器装备等领域,系统事件的响应如果不能准时或超时,就可能导致巨大的损失和灾难。
因而,选择操作系统时,对实时性的仔细考虑至关重要。
本文从实时性的角度细致的分析对比了适用于此类有苛刻实时性要求的 4 种操作系统——VxWorks、uC/OS II、RT-Linux、QNX,为系统选型提供一定参考。
实时性能主要实现技术实时操作系统的实时性是第一要求,需要调度一切可利用的资源完成实时任务。
根据响应时间在微秒、毫秒和秒级的不同,可分为强实时、准实时和弱实时三种。
强实时系统必须是对即时的事件作出反应,绝对不能错过事件处理时限。
例如测控领域就是要求强或接近强实时系统。
在机顶盒、PDA、信息家电等应用领域,系统负荷较重的时候,允许发生错过时限的情况而且不会造成太大的危害,准和弱实时系统就可满足应用。
一个强实时的操作系统通常使用以下技术:∙占先式内核当系统时间响应很重要时,要使用占先式内核。
当前最高优先级的任务一旦就绪,总能立即得到CPU 的控制权,而CPU 的控制权是可知的。
使用占先式内核使得任务级响应时间得以最优化。
∙调度策略分析任务调度策略是直接影响实时性能的因素。
强实时系统和准实时系统的实现区别主要在选择调度算法上。
选择基于优先级调度的算法足以满足准实时系统的要求,而且可以提供高速的响应和大的系统吞吐率。
当两个或两个以上任务有同样优先级,通常用时间片轮转法进行调度。
对硬实时系统而言,需要使用的算法就应该是调度方式简单,反应速度快的实时调度算法了。
尽管调度算法多种多样,但大多由单一比率调度算法(RMS)和最早期限优先算法(EDF)变化而来。
嵌入式学习心得体会(精选8篇)

嵌入式学习心得体会(精选8篇)嵌入式学习心得体会篇1(4622字)从实习到现在搞嵌入式开发快一年了,蓦然回首好像一年过得挺快,挺顺利的。
细细品味,发现这一年还是有很多值得回忆和总结的东西。
至少这一年看书挺多,大概二十几本,当然和那些一年看一百多本书的人没法比,但是我已经超越了自己。
这是我大学毕业的第一年,初次走上社会,很想一展身手,可是.....其实也不用可是了,和很多朋友一样碰了很多钉子,现在我和老板的关系就挺一般的,只是我性格还不错。
呵呵~~,做优秀员工看来还得慢慢学。
今年最大的收获就是做了一个半项目,是在uClinux下面跑的。
半个是SNMP-Agent的实现,因为我去的时候snmpd已经跑起来了,我只是实现部分管理功能;一个是基于Web的管理系统,使公司的主打产品微波通信设备上网。
这个项目是我一手策划,一手实现(界面设计是一位女同事,很优秀的程序员),从中学到的东西也最多,感情不可谓不深。
SNMP即简单网络管理协议,其实一点都不简单。
在我所知的网络协议里面,它仅仅比OSI的CMIP简单一点,而CMIP直到现在还没得到广泛应用。
我们能够实现SNMP-Agent不能不感谢CarnegieMellon大学免费发布的ucd-snmp软件包。
它使得开发人员专注于实现对特定设备的管理功能。
我在项目中的工作主要是扩展MIB,实现相应的管理功能以及网络功能的扩展。
我们公司的MIB库比较庞大,但是程序运行还是挺快的。
因为ucd-snmp软件包中大量使用回调函数,而且它将MIB树以二叉树形式表示,但是每个结点不是单个的MIB结点,而是一个表,包括了多个结点。
回调函数和两层表示法的使用是操作快速的主要因素。
基于Web的管理系统我原本是打算在设备外实现SNMP-Manager 的功能,因为设备中已经嵌入了Agent。
这样管理人员可以在世界各地通过WWW登录公司的管理平台,实现对所有设备的管理。
但是老板想在设备中嵌入一个管理系统,可以通过www管理单个设备就行。
uclinux

uclinuxuclinux表示micro-control linux.即“微控制器领域中的Linux系统”,是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。
uCLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit)的嵌入式系统而设计的。
它已经被成功地移植到了很多平台上。
由于没有MMU,其多任务的实现需要一定技巧。
uCLinux是一种优秀的嵌入式Linux版本,是micro-Conrol-Linux的缩写。
它秉承了标准Linux的优良特性,经过各方面的小型化改造,形成了一个高度优化的、代码紧凑的嵌入式Linux。
虽然它的体积很小,却仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持和标准丰富的A PI。
它专为嵌入式系统做了许多小型化的工作,目前已支持多款CPU。
其编译后目标文件可控制在几百KB数量级,并已经被成功地移植到很多平台上。
uClinux从Linux 2.0/2.4内核派生而来,沿袭了Linux的绝大部分特性。
它是专门针对没有MMU(内存管理单元)的CPU,并且为嵌入式系统做了许多小型化的工作。
它通常用于具有很少内存或Flash的嵌入式操作系统。
在GNU通用许可证的保证下,运行uClinux操作系统的用户可以使用几乎所有的Linux API函数。
由于经过了裁剪和优化,它形成了一个高度优化,代码紧凑的嵌入式Linux。
它具有体积小、稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持,以及丰富的API函数等优点。
uClinux与Linux在兼容性方面表现出色,uClinux除了不能实现fork()外,其余uClinux的API函数与标准Linux完全相同。
针对没有MMU的CPU全球每年生产的CPU的数量大概在二十亿颗左右,其中大部分是应用于专用性很强的各类嵌入式系统。
uClinux简介

uClinux的实时解决方案
• 这种方法已经应用于很多的操作系统以增强操作 系统的实时性,包括一些商用版UNIX系统, Windows NT 等等。 • 这种方法优点:
(1)实现简单,且实时性能容易检验。 (2)由于非实时进程运行于标准Linux系统,同其它 Linux商用版本之间保持了很大的 兼容性。 (3)可以支持硬实时时钟的应用。
• 这是因为uClinux的进程没有独立的地址转换表 • 这实际上是很多嵌入式系统的特点。
2、uClinux对NOMMU的特殊处 理
一个进程在执行前,系统必须为进程分配足 够的连续地址空间,然后全部载入主存储器 的连续空间中。 此外,程序加载地址与预期(ld文件中指出 的)通常都不相同,这样relocation过程就是 必须的。 另外,磁盘交换空间也是无法使用的, 系统 执行时如果缺少内存将无法通过磁盘交换来 得到改善。
程序运行时如果它所要访问的页(段)已存在,则 程序继续运行,如果发现不存在的页(段),操作 系统将产生一个页错误(page fault),这个错误导 致操作系统把需要运行的部分加载到内存中。
1、标准Linux的虚拟存储器技术
(3)使用交换技术在必要时把不需要的内存页 (段)交换到磁盘上。
利用上述的方式管理存储器,便可把一个进 程所需要用到的存储器以化整为零的方式, 视需求分批载入,而核心程序则凭借属于每 个页面的页码来完成寻址各个存储器区段的 工作。
uClinux的内存管理
uClinux同标准Linux的最大区别就在于 内存管理 下面将把uClinux内存管理同标准Linux的那内 存管理部分进行比较分析:
1、标准Linux使用的虚拟存储器技术 2、uClinux针对NOMMU的特殊处理
分享自己平时在网上收集的一些STM32源码,大家顶起哈!

分享⾃⼰平时在⽹上收集的⼀些STM32源码,⼤家顶起哈!本帖部分附件需要少量⾦币,此⽬的是为了⿎励⼤家积极发帖,请⼤家见谅!3.2⼨真彩TFT液晶触摸屏,320*240像素,26万⾊,i8080 16位并⾏接⼝,带转接板及触控芯⽚,可以直接⽤AVR、51、PIC、dsPIC、ARM7、STM32等单⽚机驱动。
3.2TFT.rar (6.69 MB, 下载次数: 180, 售价: 2 ⾦币)⾮常不错的⼀款STM32开发板资料。
含原理图、⽤户⼿册、各类例程:USB虚拟串⼝、TFT显⽰例程、U盘例程、TCP通信、uCOS例程、MP3解码、步进电机例程等。
有KEIL和IAR两套例程。
Armfly-STM32-SCH-SoftDemo.rar (16.05 MB, 下载次数: 431, 售价: 2 ⾦币)uC/OS-II官⽅的stm32的移植,基于arm的Cortex M3-uC/OS-II。
Micrium-ST-uCOS-II-LCD-STM32.rar (2.43 MB, 下载次数: 379)花了近3个⽉的毕业设计的时间,直到前⼏天完成的基本运营。
论⽂繁忙过去⼏天中,第⼀次在地图上从现在使⽤的软件代码的⽅式。
STM32 RVMDK 。
某些功能,这个MP3播放: MP3播放功能,⽀持MP3/WAV/WMA/MIDI播放,⽀持快进,快退,歌词显⽰⽀持[第⼆⼗条:第⼆⼗条:⼆⼗] / [第XX : XX.XX ] / [第XX号:第XX号] ,以⽀持多话歌词共享标记收⾳机功能,并⽀持⾃动发现服务台, FM76 ? 1.08 ,⾃动存⼊台湾图⽚播放功能,⽀持16位, 24位, 32位,任何⼤⼩的BMP图⽚浏览,以及符合JPEG / JPG格式图⽚浏览(只要它是正确的格式,⼤⼩限制)。
1,温度计功能。
,传感器DS18B20的。
2,彩⾊灯功能。
3,功率放⼤器功能。
4,职能亿多年来在⽀持太阳,⽉球和节⽓周查看。
ARMFLY STM32F103ZE-EK 开发板 说明书

S T M32F103Z E-E K开发板用户手册版本:V1.0安富莱电子开发网W W W.A R M F L Y.C O M1.产品规格简介STM32F103ZE-EK开发板以STM32F103ZET6(LQFP144)为核心。
STM32F103ZE 是ST(意法半导体)公司推出的ARM Crotex-M3产品线中功能最强大的一款CPU。
片内集成512kB Flash、64kB RAM、1个USB、1个CAN、 8个定时器、5个USART、3个ADC、2个DAC、3个SPI、2个I2C、2个I2S、1个SDIO、112个GPIO、FSMC总线(支持NOR,NAND,SRAM)。
CPU主频72MHz,广泛适用于各种应用场合。
本开发板具备丰富的硬件资源,配套的试验例程均提供源代码,文档齐备,非常适合于学习和项目评估。
硬件资源■ 8M晶振作为MCU的时钟,32768晶振用于RTC ■ 1M字节SRAM,16M字节NOR Flash,128M字节NADN Flash■ 2M字节串行Flash,256字节串行EEPROM■ 1个SD/MMC卡座■ 1个CAN2.0A/B接口■ 2个RS232串口■ 1个RS485接口■ 1个USB2.0全速DEVICE接口■ 1个USB2.0全速HOST接口■ 1个100M/10M以太网接口■ I2S音频DAC(24bit,96kHz),1个立体声耳机插座,1个扬声器■ 3.0寸TFT真彩触摸LCD(WQVGA,400x240)■ 1个5向摇杆,1个Reset按钮、1个wakeup按钮、1个自定义按钮 ■ 4个自定义LED,1个电源LED,1个音频LED ■ 1个CR1220电池座■ 1个精密可调电阻连接到ADC输入■ 所有的GPIO引到2.54mm间距焊盘■ 1个DAC引出端子,1个PWM引出端子■ 标准2.54mm间距JTAG插座■ 2个BNC输入端子,集成双通道示波器电路,具备AC/DC切换、输入增益切换开关■ 3种供电方式:USB电缆、外接5V电源、JTAG 调试接口(J-LINK仿真器)■ 1个电源开关,上下电时无需拔插电缆■ 3种启动方式:用户Flash、系统存储器、SRAM ■ 用拨码开关取代跳线帽,避免跳线帽丢失■ 板子规格:14cm x 12cm软件资源■ 提供100多个试验例程■ 提供uCOS_II+ucGUI例程和文档■ 即将展开USB虚拟示波器项目源码■ 即将移植ucLinux (硬件资源已满足要求) ■ 更多的软件资源将在发布标配清单■STM32F103ZE-EK开发板1块■ 3.0寸TFT触摸显示模块1块■1根串口线、1根网线、1根USB电缆■资料光盘1张可选的配件:■60M示波器探头1对■USB转串口线1根2.快速入门2.1.注意事项(1)外接电源必须是5.0V 的直流电源,插头有极性,内正外负。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UC/OS和uClinux的比较出处:单片机商城发布日期:2005-9-1011:14:28 浏览次数:356UC/OS和uClinux的比较摘要:嵌入式操作系统是嵌入式系统应用的核心软件。
本文通过对两种典型的开源嵌入式操作系统的对比,分析和总结嵌入式操作系统应用中的若干问题,归纳嵌入式操作系统的选型依据。
关键词:嵌入式系统操作系统uC/OS uClinux引言随着现代计算机技术的飞速发展和互联网技术的广泛应用,从PC时代过渡到了以个人数字助理、手持个人电脑和信息家电为代表的3C(计算机、通信、消费电子)一体的后PC时代。
后PC时代里,嵌入式系统扮演了越来越重要的角色,被广泛应用于信息电器、移动设备、网络设备和工控仿真等领域。
嵌入式系统是以嵌入式计算机为核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、体积、成本、功耗等综合性能有严格要求的计算机系统。
随着嵌入式系统的广泛应用,传统的前/后台程序开发机制已经不能满足日益复杂和荷记得的实现要求,因而现场常常采用嵌入式产时操作系统PROS(Real TimeOperation System)开发实时多任务系统。
嵌入式实时操作系统一般可以提供多任务的任务调度、时间管理、任务间通信和同步以及内存管理MMU(Memory ManagerUnit)等重要服务,使得嵌入式应用程序易于设计和扩展。
采用RTOS可以使嵌入式产品更可靠、开发周期更短。
在嵌入式应用中使用RTOS已经成为当前嵌入式应用的一个热点。
完成简单功能的嵌入式系统一般不需要操作系统。
如,以前许多MCS51系列单片机组成的小系统就只是利用软件实现简单的控制环路;但是随着所谓后PC时代的来临,嵌入式系统设计日趋复杂,嵌入式操作系统就必不可少了。
嵌入式RTOS在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专业性等方面具有较为突出的优势。
一般而言,嵌入式操作系统不同于一般意义的计算机操作系统,它有占用空间小、执行效率高、方便进行个性化定制和软件要求固化存储等特点。
从20世纪80年代起,国际上就有一些IT组织、公司,开始进行商用嵌入式操作系统和专用操作系统的研发。
这其中涌现了一些著名的嵌入式操作系统,如Microsoft公司的WinCE和WindRiver System公司的VxWo rks就分别是非实时和实时嵌入式操作系统的代表。
但是商用产品的造价都十分昂贵,用于一般用途会提高产品成本从而失去竞争力。
UC/OS和uClinux操作系统是用两种性能优良、源码公开且被广泛应用的免费嵌入式操作系统,可以作为研究实时操作系统和非实时操作系统的典范。
本文通过uC/OS和uClinux的对比,分析和总结嵌入式操作系统应用中的若干重要问题,归纳嵌入式系统开发中操作系统的选型依据。
1两种开源嵌入式操作系统介绍uC/OS和uClinux操作系统,是当前得到广泛应用的两种免费且公开源码的嵌入式操作系统。
UC/OS适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB。
UClinux则是继承标准Linux的优良特性,针对嵌入式处理器的特点设计的一种操作系统,具有内嵌网络协议、支持多种文件系统,开发者可利用标准Linux先验知识等优势。
其编译后目标文件可控制在几百KB量级。
UC/OS是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。
其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。
UClinux是一种优秀的嵌入式Linux版本。
uClinux是Micro-Conrol-Linux的缩写。
同标准Linux相比,它集成了标准Linux操作系统的稳定性、强大网络功能和出色的文件系统等主要优点。
但是由于没有MMU (内存管理单元),其多任务的实现需要一定技巧。
2两种嵌入式操作系统主要性能比较嵌入式操作系统是嵌入式系统软硬件资源的控制中心,它以尽量合理的有效方法组织多个用户共享嵌入式系统的各种资源。
其中用户指的是系统程序之上的所有软件。
所谓合理有效的方法,指的就是操作系统如何协调并充分利用硬件资源来实现多任务。
复杂的操作系统都支持文件系统,方便组织文件并易于对其规范化操作。
嵌入式操作系统还有一个特点是,针对不同的平台,系统不是直接可用的,一般需要经过针对专门平台的移植操作系统才能正常工作。
进程调度、文件系统支持和系统移植是在嵌入式操作系统实际应用中最常见的问题。
下文就从这几个角度入手对uC/OS和uClinux进行分析比较。
2.1 进程调度任务调度主要是协调任务对计算机系统资源(如内存、I/O设备、CPU)的争夺使用。
进程调度又称为CPU调度,其根本任务是按照某种原理为处于就绪状态的进程分析CPU。
由于嵌入式系统中内存和I/O设备一般都和CPU 同时归属于某进程,所以任务调度和进程调度概念相近,很多场合不加区分。
进程调度可分为“剥夺型调度”和“非剥夺型调度”两种基本方式。
所谓“非剥夺型调度”是指:一旦某个进程被调度执行,则该进程一直执行下去直至该进程结束,或由于某种原理自行放弃CPU进入等待状态,才将CPU重新分配给其它进程。
所谓“剥夺型调度”是指:一旦就绪状态中出现优先权更高的进程,或者运行的进程已用满了规定的时间片时,便立即剥夺当前进程的运行(将其放回就绪状态),把CPU分配给其它进程。
作为实时操作系统,uC/OS采用的是可剥夺型实时多任务内核。
可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。
uC/OS中最多可以支持64个任务,分别对应优先级0~63,其中0为最高优先级。
调度工作的内容可以分为两部分:最高优先级任务的寻找和任务切换。
其最高优先级任务表来实现的。
UC/OS中的每一个任务都有独立的堆栈空间,并有一个称为任务控制块TCB(Task Control Block)的数据结构,其中第一个成员变量就是保存的任务堆栈指针。
任务调度模块首先用变量OSTCBHighRdy记录当前最高级就绪任务的TCB地址,然后调用OS_TASK_SW()函数来进行任务切换。
UClinux的进程调度沿用了Linux的传统。
系统每隔一定时间挂起进程,同时产生快速和周期性的时钟性时中断,并通过调度函数(定时器处理函数)决定进程什么时候拥有它的时间片,然后进行相关进程切换。
这是通过父进程调用fork函数生成子进程来实现的。
UClinux系统fork调用完成后,要么子进程代替父进程执行(此时父进程已经休眠),直到子进程调用exit退出;要么调用exec执行一个新的进程,这时产生可执行文件的加载,即使这个进程只是父进程的拷贝,这个过程也不可避免。
当子进程执行exit或exec后,子进程使用wakeup把父进程唤醒,使父进程继续往下执行。
uClinux由于没有MMU管理存储器,其对内存的访问是直接的,所有程序中访问的地址都是实际的物理地址。
操作系统对内存空间没有保护,各个进程实际上共享一个运行空间。
这就需要实现多进程时进行数据保护,也导致了用户程序使用的空间可能占用到系统内核空间。
这些问题在编程时都需要多加注意,否则容易导致系统崩溃。
由上述分析可以得知,uC/OS内核是针对实时系统的要求设计实现的,相对简单,可以满足较高的实时性要求;而uClinux则在结构上继承了标准Linux的多任务实现方式,仅针对嵌入式处理器特点进行改良。
其要实现实时性效果则需要使系统在实时内核的控制下运行。
RT-Linux就是可以实现这一功能的一种实时内核。
2.2文件系统所谓文件系统是反映负责存取和管理文件信息的机构,也可以说是负责文件的建立、撤销、组织、读写、修改、复制及对文件管理所需要的资源(如目录表、存储介质等)实施管理的软件部分。
uC/OS是面向中小型嵌入式系统的。
如果包含全部功能(信号量、消息邮箱、消息队列及相关函数),编译后的uC/OS内核仅有6~10KB,所以系统本身并没有对文件系统的支持。
但是uC/OS具有良好的扩展性能,如果需要的话也可自行加入文件系统的内容。
uClinux则是继承了Linux完善的文件系统性能。
其采用的是romfs文件系统。
这种文件系统相对于一般的ext2文件系统要求更少的空间。
空间的节约来自于两个方面:首先,内核支持romfs文件系统比支持ext2文件系统需要更少的代码;其次,romfs文件系统相对简单,在建立文件系统超级块(superblock)需要更少的存储空间。
Romfs文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟ram盘的方法进行处理(ram盘将采用ext2文件系统)。
uClinux还继承了Linux网络操作系统的优势,可以很方便地支持网络文件系统且内嵌TCP/IP协议。
这为uClinux开发网络接入设备提供了便利。
由两种操作系统对文件系统的支持可知:在复杂的需要较多文件处理的嵌入式系统中,uClinux是一个不错的选择;而uC/OS则主要适合一些控制系统。
2.3操作系统的移植嵌入式操作系统移植的目的是指使操作系统能在某个微处理器或微控制器上运行。
UC/OS和uClinux都是源码公开的操作系统,且其结构化设计便于把与处理器相关的部分分离出来,所以被移植到新的处理器上是可能的。
以下对两种系统的移植分别予以说明。
(1)uC/OS的移植要移植uC/OS,目标处理器必须满足以下要求:*处理器的C编译器能产生可重入代码,且用C语言就可以打开和关闭中断;*处理器支持中断,并能产生定时中断;*处理器支持足够的RAM(几KB),作为多任务环境下的任务堆栈;*处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令。
在理解了处理器和C编译器的技术细节后,uC/OS的移植只需要修改与处理器相关的代码就可以了。
具体有如下内容:*OS_CPU.H中需要设置一个常量来标识堆栈增长方向;*OS_CPU.H中需要声明几个用于开关中断和任务切换的宏;*OS_CPU.H中需要针对具体处理器的字长重新定义一系列数据类型;*OS_CPU_A.ASM需要改写4个汇编语言的函数;*OS_CPU_C.C需要用C语言编写6个简单函数;*修改主头文件INCLUDE.H,将上面的三个文件和其它的头文件加入。
(2)uClinux的移植其实,uClinux是Linux针对嵌入式系统的一种改良,其结构比较复杂;相对uC/OS,uClinux的移植也复杂得多。
一般而言,要移植uClinux,目标处理器除了应满足上述uC/OS应满足的条件外,还需要具有足够容量(几百KB以上)外部ROM和RAM。
uClinux的移植大致可以分为3个层次。
*结构层次的移植。
如果待移植处理器的结构不同于任何已经支持的处理器结构,则需要修改linux/arch目录下相关处理器结构的文件。