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 )。该系统适合于工业控制。系统源代码开放,但并不是永久免费。
信盈达靠技术打天下
想学习的你和我联系预约就可以免费听课了。
免费试听C语言、电子、PCB、STM32、Linux、FPGA、Python安卓等,预约咨询宋工Q/Q/3/5/2/4/6/5/9/0/8/8 Tel/1/7/3/1/7/9/5/1/9/0/8
详解stm32能跑什么系统
相关推荐
STM32 IAP在线升级详解
背景知识一、stm32的内存映射参考博文:STM32 IAP 在线升级详解操作前我们先来说一下内存映射:下图在stm32f100芯片手册的29页,我们只截取关键部分注意: 根据启动方式不同,地址空间
2022-02-21 06:10:13
STM32WB产品详解及FUS无线协议栈升级
STM32WB产品详解及FUS无线协议栈升级2.4GHz无线双核STM32WB, 采用SoC单芯片设计,支持多协议射频。
2023-09-06 06:35:56
STM32—— AHB、APB详解 精选资料分享
STM32—— AHB、APB详解2016-07-14 20:35 590人阅读 评论(0) 收藏 举报本文章已收录于:版权声明:本文为博主原创文章,未经博主允许不得转载。一、概括首先,说点不靠谱
2021-08-23 07:56:19
STM32与S3C2440的区别在哪
在学习嵌入式的路上,我们可能会接触到这两个比较典型的MCU。其中最大的区别就是S3C2440能跑linux操作系统,常常作为学习嵌入式linux的硬件平台。可能大家会问既然S3C2440能跑
2021-08-06 09:10:01
STM32主板接上Jlink信真器MCU才能跑的怪异问题
我的STM32F103主板,出现个很奇怪的现象,真接供电,不接Jlink仿真器,MCU跑不起来;只有接了Jlink才能跑起来!太奇怪了,不知什么原因? 请高人指点。
2019-03-27 20:06:58
STM32固件库详解emouse
STM32固件库详解emouse原创文章,转载请注明出处应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板,个人录制,欢迎指正。下载地址:补充在线视频教程最近考试较多,教...
2021-08-03 06:36:25
STM32定时器详解
定时器详解时钟源计数器定时器周期计算定时器初始化结构体详解程序设置定时器(Timer)最基本的功能就是定时了,比如定时发送 USART 数据、定时采集 AD数据等等。如果把定时器与 GPIO
2021-08-18 06:17:04
STM32小系统实现wifi无线通讯程序怎么才能跑得起来
等大神帮助,做了个STM32小系统,主要实现wifi无线通讯,使用的是锂电池供电,但目前问题是设备端必须要有一根线与jlink共地(jlink与电脑相连 )程序才能跑得起来,不然就无法执行进去,网上说的要拔排线试过了(不起作用),求大家帮助
2019-05-08 06:35:44
STM32时钟树案例详解
STM32时钟树案例详解时钟树直接使用HSI作为时钟源使用配置相应的结构体,最后调用HAL_RCC_OscConfig(), 和HAL_RCC_ClockConfig()初始化
2021-08-20 06:11:55
STM32最小系统有何功能
STM32最小系统详解1.电源电路2.晶振电路3.复位电路4.下载电路(串口下载)本文章将以普中的STM32F103系列的开发板为载体,任何一款STM32开发板都是在其最小系统基础上添加多个功能模块
2021-08-04 08:57:17
STM32的FSMC详解
FSMC详解1、FSMC简介:FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,STM32 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR
2021-12-06 06:25:11
STM32的cubeMX和HAL库详解
课程简介:《朱有鹏老师单片机完全学习系列课程》总共5季,其中第1、2季是51单片机学习,第3、4、5季是STM32单片机与RTOS学习。整个课程时长约250小时,是一套零基础、全面系统、易学易懂
2022-03-01 06:24:13
STM32的时钟树详解
原文地址:STM32的时钟树深入详解作者:蔡志威在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理:1)对于100脚或
2021-08-23 07:38:32
STM32程序的移植详解步骤
:1.观察待移植程序调用了哪些文件,将这些文件放入移植的工程当中。2.最好是新建一个文件夹专门存储这些文件。3.不建议移植STM32系统文件,可以将系统的头文件改成移植工程当中的系统文件。...
2021-08-23 07:27:08
STM32芯片用KEIL4下载程序后要按下复位键才能跑起来
STM32芯片用KEIL4下载程序后要按下复位键才能跑起来?大神可否详细截图解说下怎么设置一下可以解决此问题。。
2018-12-14 08:45:06
STM32设计USB资料详解
`协议简介协议特性系统和架构设备类和供电传输类型USB OTG协议STM32互联型产品 OTG_FS 控制器控制器特性控制器不同模式的连接图STM32设计USB资料详解[hide][/hide]`
2011-11-30 14:21:09
stm32H743 stm32cubemx SPI_FLASH FATFS详解,绝对实用
stm32H743 stm32cubemx SPI_FLASHFATFS详解,绝对实用
2022-02-17 06:40:13
stm32g0b1配置usbhost不能跑通怎么解决?
用cubemx配的不能跑通,g0b1的例程也没有,跑c1的USBdevice可以跑,host不行,难搞难搞,有大佬可以帮忙一下么,谢谢了
2024-03-14 07:55:13
系统时钟RCC详解
【STM32】系统时钟RCC详解(超详细,超全面)1什么是时钟时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了
2021-08-12 06:40:46
详解STM32的时钟树时钟信号
详解STM32的时钟系统STM32的时钟树时钟信号推动单片机内各个部分执行相应的指令,时钟就像人的心跳一样。 STM32本身十分复杂,外设非常多,任何外设都需要时钟才能启动,但并不是所有的外设都需要
2021-08-19 06:33:34
详解stm32能跑什么系统
的资料和实例,所以很适合向STM32上移植。2、μClinuxμClinux是一个完全符合GNU/GPL公约的操作系统,完全开放源代码,现在由Line公司支持维护。μClinux是一种优秀的嵌入式
2018-08-20 09:33:22
详解stm32能跑什么系统
,所以很适合向STM32上移植。2、μClinuxμClinux是一个完全符合GNU/GPL公约的操作系统,完全开放源代码,现在由Line公司支持维护。μClinux是一种优秀的嵌入式Linux版本,其
2018-02-06 10:19:56
详解stm32能跑什么系统
,所以很适合向STM32上移植。2、μClinuxμClinux是一个完全符合GNU/GPL公约的操作系统,完全开放源代码,现在由Line公司支持维护。μClinux是一种优秀的嵌入式Linux版本,其
2018-03-28 09:27:40
详解stm32能跑什么系统
,所以很适合向STM32上移植。2、μClinuxμClinux是一个完全符合GNU/GPL公约的操作系统,完全开放源代码,现在由Line公司支持维护。μClinux是一种优秀的嵌入式Linux版本,其
2018-09-11 09:47:09
C6747能不能跑sys/bios系统
之前使用DSP的C6747一直跑裸机程序,现在想将程序移植到Ti的操作系统上,想问一下,C6747能不能跑sys/bios系统??
2020-05-25 07:25:50
omap-L137这款处理器是否能跑vxworks操作系统
omap-L137这款处理器是否能跑vxworks操作系统?如果能跑的话,是指在arm核里运行还是两核协调工作?
2018-06-21 00:54:17
基于仓储环境监控系统——详解stm32开发板应用
尚观科技腾讯课堂嵌入式课程报名链接:STM32开发板应用详解——基于仓储环境监控系统_腾讯课堂 6月20日晚上8:00正式开讲,嵌入式开发白金级讲师主讲,拥有5年嵌入式课程授课经验。希望加我们的学习群
2016-06-14 15:06:02
求《FreeRTOS源码详解与应用开发——基于STM32》书本配套的ppt分享?
如题,求与《FreeRTOS源码详解与应用开发——基于STM32》书本配套的ppt。 万分感谢!
2020-07-14 23:29:23
请问stm32可以嵌入linux系统吗?
stm32可以嵌入linux系统吗?具体说一下在嵌入式方面的应用,感谢。树莓派是不是嵌入式的一部分,做什么项目开发???还能跑windows,感觉挺牛逼的。嵌入式软硬件都要学,好像知识挺多的,不知道在工作的大神们有什么看法。
2019-10-14 00:45:58
请问EK-TM4C1294XL能不能跑ucosii系统?为什么?
本帖最后由 一只耳朵怪 于 2018-6-8 09:06 编辑
EK-TM4C1294XL能不能跑ucosii系统
2018-06-07 09:05:53
STM32开发板硬件详解及STM32软件仿真详解
STM32手册: 本章将分为如下几个部分: 1,ALIENTEK MiniSTM32 开发板简介; 2,ALIENTEK MiniSTM32 开发板硬件详解; 3,ALIENTEK
2017-09-12 15:30:190
stm32能跑什么系统
STM32系列32位微控制器,基于ARM Cortex-M3处理器。它能支持32位广泛的应用,支持包括高性能、实时功能、数字信号处理,和低功耗、低电压操作,同时拥有一个完全集成和易用的开发
2017-10-11 10:16:1610657
STM32 F1系列 DAC的示例详解
STM32 F1系列 DAC的示例详解(直流电源技术要求)-基于学习的目的,详细讲解关于Cube库中的DAC的功能。本次介绍DAC。
2021-08-04 17:55:2712
STM32单片机最小系统详解
是FLASH,RAM容量是48K,封装LQFP64。STM32单片机命名规则:STM32单片机最小系统:所谓单片机最小系统,就是让单片机能够正常运行,最少且必须的器件所组成的系统。单片机最小系统上电之后,单片机可以正常复位,下载程序,除此之外没...
2021-11-17 11:21:0730
STM32最小系统详解
STM32最小系统详解1. 电源电路2. 晶振电路3. 复位电路4. 下载电路(串口下载)本文章将以普中的STM32F103系列的开发板为载体,任何一款STM32开发板都是在其最小系统基础上添加
2021-11-17 14:21:0263
STM32最小系统和时钟详解
最小系统1,、供电电路2、复位电路3、时钟:外部晶振(2个)4、Boot启动模式选择5、下载电路(JTAG)6、后背电池时钟详解:在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE
2021-11-17 15:36:0212
【STM32】STM32F4 GPIO八种模式及工作原理详解
【STM32】STM32F4 GPIO八种模式及工作原理详解1. GPIO简介GPIO,即通用I/O(输入/输出)端口,是STM32可控制的引脚。STM32芯片的GPIO引脚与外部设备连接起来
2021-11-26 17:06:1311
【STM32】STM32F4 GPIO八种模式及工作原理详解
【STM32】STM32F4 GPIO八种模式及工作原理详解1. GPIO简介GPIO,即通用I/O(输入/输出)端口,是STM32可控制的引脚。STM32芯片的GPIO引脚与外部设备连接起来
2021-12-04 14:51:098
STM32应用IAP进行程序更新详解及实例
STM32应用IAP进行程序更新详解及实例,硬件平台:STM32F103RCT6软件平台:GCC + STM32CubeMX + STM32CubeProgramBin文件传输工具:Tera Term
2021-12-04 20:36:0920
STM32 之 标准外设版USB驱动库详解(架构+文件+函数+使用说明+示例程序)
STM32 之 标准外设版USB驱动库详解(架构+文件+函数+使用说明+示例程序)
2021-12-08 20:36:090
2.STM32的存储器、电源和时钟体系
第一部分、章节目录3.2.1.STM32的存储器映像13.2.2.STM32的存储器映像23.2.3.STM32的位带操作详解3.2.4.STM32的启动模式3.2.5.STM32的电源管理系统
2022-01-07 15:32:311
STM32_IO口详解——思维导图版
STM32_IO详解今天我来总结一下STM32_IO口的配置模式废话不多说,直接上图STM32_IO思维导图详解一共有八种模式: 1. 输入浮空 0x4 2. 输入上拉 0x8 3. 输入下拉
2022-01-13 15:58:340
STM32G4 Advanced Timer Break功能详解
电子发烧友网站提供《STM32G4 Advanced Timer Break功能详解.pdf》资料免费下载
2023-09-19 15:09:041
stm32启动过程详解
STM32启动过程详解 近年来,STM32微控制器在嵌入式系统中的应用越来越广泛。STM32微控制器具有高性能、低功耗、易扩展和丰富的外设接口等优势。而要让STM32微控制器正常工作,首先要
2023-12-08 15:47:03544
评论
查看更多