STM32系列32位微操控器,根据ARM Cortex-M3处理器。它能支撑32位广泛的运用,支撑包含高功用、实时功用、数字信号处理,和低功耗、低电压操作,一起具有一个完全集成和易用的开发。
根据STM渠道且满意实时操控要求的操作体系,有以下4种可供挑选。别离为μC/OS-II、μClinux、eCos、FreeRTOS和都江堰操作体系(djyos)。下面别离介绍这五种嵌入式操作体系的特色及缺少。
1、μC/OS-II
μC/OS-II 是一种根据优先级的抢占式多使命实时操作体系,包含了实时内核、使命办理、时刻办理、使命间通讯同步(信号量,邮箱,音讯 行列)和内存办理等功用。它可以使各个使命独立作业,互不干涉,很简略完结按时并且无误履行,使实时运用程序的规划和扩展变得简略,使运用程序的规划进程大为减化。
μC/OS-II是在μC/OS的基础上开展起来的,是用C言语编写的一个结构细巧、抢占式的多使命实时内核。μC/OS-II能办理64个使命,并供给使命调度与办理、内存办理、使命间同步与通讯、时刻办理和中止服务等功用,具有履行效率高、占用空间小、实时功用优异和扩展性强等特色。
关于实时性的满意上,由于μC/OS-II内核是针对实时体系的要求规划完结的,所以只支撑根据固定优先级抢占式调度;调度办法简略,可以满意较高的实时性要求。μC/OS-II 的鲜明特色便是源码揭露,便于移植和保护。
在内存办理上,μC/OS-II把接连的大块内存按分区来办理,每个分区中都包含整数个巨细相同的内存块,但不同分区之间内存的巨细可以不同。用户动态分配内存时,只须挑选一个恰当的分区,按块来分配内存,开释时将该块放回到曾经所属的分区,这样就消除了因屡次动态分配和开释内存所引起的碎片问题。
μC/OS-II中止处理比较简略。一个中止向量上只能挂一个中止服务子程序ISR,并且用户代码有必要都在ISR(中止服务程序)中完结。
ISR需求做的工作越多,中止延时也就越长。
内核所能支撑的最大嵌套深度为255。
在文件体系的支撑方面,由于μC/OS-II是面向中小型嵌入式体系的,即便包含悉数功用,编译后内核也不到10 KB,所以体系自身并没有供给对文件体系的支撑。可是μC/OS-II具有杰出的扩展功用,假如需求也可自行参加文件体系的内容。
在对硬件的支撑上,μC/OS-II可以支撑当时盛行的大部分CPU,μC/OS-II由于自身内核就很小,经过裁剪后的代码最小可以为2KB,所需的最小数据RAM空间为4 KB,μC/OS-II的移植相对比较简略,只需求修正与处理器相关的代码就可以。
综上可知,μC/OS-II是一个结构简略、功用齐备和实时性很强的嵌入式操作体系内核,针关于没有MMU功用的CPU,它是十分适宜的。它需求很少的内核代码空间和数据存储空间,具有杰出的实时性,杰出的可扩展功用,并且是开源的,网上具有许多的材料和实例,所以很适宜向STM32上移植。
2、μClinux
μClinux是一个完全符合GNU/GPL条约的操作体系,完全敞开源代码,现在由Line公司支撑保护。
μClinux是一种优异的嵌入式Linux版别,其全称为micro-control Linux,从字面意思看是指微操控Linux。同规范的Linux比较,μClinux的内核十分小,可是它依然承继了Linux操作体系的首要特性,包含杰出的稳定性和移植性、强壮的网络功用、超卓的文件体系支撑、规范丰厚的API,以及TCP/IP网络协议等。由于没有MMU内存办理单元,所以其多使命的完结需求必定技巧。
μClinux在结构上承继了规范Linux的多使命完结办法,分为实时进程和一般进程,别离选用先来先服务和时刻片轮转调度,仅针对中低档嵌入式CPU特色进行改进,且不支撑内核抢占,实时性一般。
在内存办理上由于μClinux是针对没有MMU的处理器规划的,不能运用处理器的虚拟内存办理技能,只能选用实存储器办理战略。体系运用分页内存分配办法,在发动时对实践存储器进行分页。体系对内存的拜访是直接的,操作体系对内存空间没有保护,多个进程可同享一个运转空间,所以,即便是一个无特权进程调用一个无效指针也会触发一个地址过错,并有或许引起程序溃散乃至体系溃散。
μClinux操作体系的中止办理是将中止处理分为两部分:顶半处理和底半处理。在顶半处理中,有必要关中止运转,且仅进行必要的、十分少、速度快的处理,其他处理交给底半处理;底半处理履行那些杂乱、耗时的处理,并且承受中止。由于体系中存在有许多中止的底半处理,所以会引起体系中止处理的延时。
μClinux对文件体系支撑杰出,由于μClinux承继了Linux完善的文件体系功用,它支撑ROMFS、NFS、ext2、MS-DOS、JFFS等文件体系。但一般选用ROMFS文件体系,这种文件体系相关于一般的文件体系(如ext2)占用更少的空间。可是ROMFS文件体系不支撑动态擦写保存,关于体系需求动态保存的数据须选用虚拟RAM盘/JFFS的办法进行处理。
在对硬件的支撑上,由于μClinux承继了Linux的大部分功用,所以至少需求512KB的RAM空间,lMB的ROM/Flash空间。
在μClinux的移植方面,μClinux是Linux针对嵌入式体系的一种改进,其结构比较杂乱。移植μClinux,方针处理器除了需求修正与处理器相关的代码外,还需求满意容量的外部ROM和RAM。
综上可知,μClinux最大特色在于针对无MMU处理器规划,这关于没有MMU功用的stm32f103来说是适宜的,但移植此体系需求至少512KB的RAM空间,1MB的ROM/FLASH空间,而stmf103具有256K的FLASH,需求外接存储器,这就添加了硬件规划的本钱。μClinux结构杂乱,移植相对困难,内核也较大,其实时性也差一些,若开发的嵌入式产品重视文件体系和与网络运用则μClinux是一个不错的挑选。
3、eCos
eCos(embedded Configurable operaTIng system),中文翻译为嵌入式可装备操作体系或嵌入式可装备实时操作体系。适宜于深度嵌入式运用,首要运用方针包含消费电子、电信、车载设备、手持设备以及其他一些低本钱和便携式运用。它是一个源代码敞开的可装备、可移植、面向深度嵌入式运用的实时操作体系。最大特色是装备灵敏,选用模块化规划,中心部分由小同的组件构成,包含内核、C言语库和底层运转包等。每个组件可供给很多的装备选项(实时内核也可作为可选装备),运用eCos供给的装备东西可以很方便地装备,并经过不同的装备使得eCos可以满意不同的嵌入式运用要求。
在实时性不和,由于eCos调度办法丰厚,供给了两种根据优先级的调度器(即位图调度器和多级行列调度器),答使用户在进行装备时挑选其间一个调度器,适应性好。因此在实时性方面体现杰出。
在内存办理上eCos对内存分配既不分段也不分页,而是选用一种根据内存池的动态内存分配机制。经过两种内存池来完结两种内存办理办法:一种是变长的内存池;另一种是定长的内存池,类似于VxWorks的办理方案。
在中止办理上eCos运用了分层式中止处理机制,把中止处理分为传统的ISR(中止服务程序)和滞后中止服务程序DSR(递延服务程序)。类似于μClinux的处理机制,这种机制可以在中止答应时运转DSR,因此在处理较低优先级中止时答应高优先级的中止和处理。为了极大地缩短中止延时,ISR应当可以快速运转。假如中止引起的服务量少,则ISR可以独自处理中止;假如中止服务杂乱,则ISR只屏蔽中止源,然后交由DSR(递延服务程序)处理。
eCos操作体系的可装备性十分强壮,用户可以自己参加所需的文件体系。eCos操作体系相同支撑当时盛行的大部分嵌入式CPU,eCos操作体系可以在16位、32位和64位等不同体系结构之间移植。eCos由于自身内核就很小,经过裁剪后的代码最小可以为10 KB,所需的最小数据RAM空间为10 KB。
在体系移植方面 eCos操作体系的可移植性很好,要比μC/OS-II和μClinux简略。
综上所述,eCos最大特色是装备灵敏,并且支撑无MMU的CPU的移植,开源且具有很好的移植性,也比较适宜于移植到STM32渠道的CPU上。但eCOS的运用还不是太广泛,还没有像μC/OS-II那样遍及,并且材料也没有μC/OS-II多。eCos适宜用于一些商业级或工业级对本钱灵敏的嵌入式体系,例如消费电子范畴中的一些运用。
4、都江堰操作体系(djyos)
都江堰操作体系,简称djyos,得名于一个巨大的水利工程:都江堰。
与传统操作体系不同,djyos不是以线程而是以事情为调度中心,这种调度算法使程序员脱节模拟核算机履行进程编写程序的思想办法,而是按人类认知国际的办法编写运用程序,就如同在嵌入式编程中引入了VC似的。djyos的调度算法使程序员可以脱节线程和进程的捆绑,djyos没有有关线程的api,一个完全不明白线程常识的程序员也可以顺畅地在djyos下编写运用程序。
djyos是一个全新的操作体系,它与现有的任何操作体系都没有亲缘联系,在构成操作体系的几个重要方面:调度器、中止办理、设备办理、资源办理等方面,都又十分杰出的立异,乃至是理论立异。经过这些立异,djyos能为运用程序规划者供给十分杰出的特色:
(1)在调度器方面,可以说是完全改造,它简直推翻了传统的软件规划形式。对嵌入式编程来说,简直是革命性的前进,它以事情为中心的调度办法,改变了曩昔操作体系要求程序员模拟核算机的思想办法的编程形式,使之可以按人类的思想办法编写运用程序;它使程序员可以脱节线程和进程的捆绑,djyos没有跟线程相关的API。特别是在嵌入式范畴的程序员,有许多是职业布景很深的专家,但往往缺少核算机操作体系方面的常识,他们在djyos下编程,则可以无需学习不流畅难明的线程常识。
(2)天然匹配多核和分布式核算,djyos的调度算法是以事情为中心的,运用程序只管为事情编制处理程序,而线程和CPU核则被作为处理事情有必要的资源,由操作体系分配给事情,这种算法天然生成使多核编程愈加简略,多核利用率更高。很多周知,现在CPU正往多核化开展,嵌入式CPU乃至DSP也是如此,比方ADI公司的blackfin561便是一颗只要几十KB内存的双核DSP,djyos有方案移植到blackfin561上,有望成为第一个在只要几十KB内存的CPU上完结对双核的完美支撑的RTOS。
(3)立异的加载办法和中止办理模块,可以完结比一切操作体系都快的中止呼应速度,并且在CPU发动后数十uS以内,运用程序的要害部分就可以完结对方针体系的操控,在操作体系加载进程中,就可以呼应运用程序的中止ISR。
(4)实时的内存办理,在操作体系组件中,一般以为malloc函数对错实时组件,由于即便有足够的内存,malloc函数的履行时刻也不行估计,不符合实时体系要求履行时刻和成果均可估计的准则。可是djyos的内存办理,只要在体系规划时装备足够的内存,malloc的履行时刻是快速并且可以估计的,而在只运转一个运用程序的实时体系中,内存不干涸是简略做到的。
(5)为项目经理和体系工程师量身定制的体系架构,为工程师量身定制的API设置,特别利于体系工程师区分项目模块,利于项目经理组建和办理团队,利于工程师编写利于保护的代码。
djysiV0.4.2发布,添加STM32版别的支撑,可以移植到cortex-m3 上(芯片为 stm32f103 )。该体系适宜于工业操控。体系源代码敞开,但并不是永久免费。