详解stm32能跑什么系统

发布者:悠然自在最新更新时间:2024-08-12 来源: elecfans关键字:stm32  系统  处理器 手机看文章 扫描二维码
随时随地手机看文章

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设置,特别利于系统工程师划分项目模块,利于项目经理组建和管理团队,利于工程师编写利于维护的代码。

关键字:stm32  系统  处理器 引用地址:详解stm32能跑什么系统

上一篇:为什么STM32F0系列芯片里面没有VTOR
下一篇:STM32之旅3——时钟树

推荐阅读最新更新时间:2024-11-13 17:25

stm32HAL库学习——UART学习笔记
这里只是简单的记录自己使用过程中的经验,并非详细阐述原理。 一、串口输出打印重定向printf,代码如下: int fputc(int ch,FILE *f) { uint8_t temp ={ch}; HAL_UART_Transmit(&huart1,temp,1,1000); return (ch); } int fgetc(FILE *f) { uint8_t ch; HAL_UART_Receive(&huart1,(uint8_t *)&ch, 1, 1000); return ch; } 用作程序调试输出时,可以使用一组宏定义,方便开发完成后关闭printf; /* 调试日志串口
[单片机]
STM32_IIC
1:IIC简介 IIC:(Inter_integrated circuit),两线式串行总线,它是由数据线SDA和时钟SCL构成的串行总线,可发送和接受数据,在CPU与被控IC之间,IC与IC之间进行双向传送,高速IIC总线一般可达400kbps. 一般在51中,没有硬件的IIC,只能用软件加引脚去模拟IIC的通信时序,STM32则一般都有硬件IIC IIC是半双工 通信方式 2:IIC协议 空闲状态 开始信号 停止信号 应答信号 数据的有效性 数据传输 通信过程简述 空闲状态 IIC总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截至状态,即释放总线,由
[单片机]
STM32_IIC
STM32 Cotex-M3处理器系列编程】定时器灯亮
//定时一秒LED亮 #include stm32f10x.h unsigned int TimingDelay; void Delay(unsigned int x) { TimingDelay=x; while(TimingDelay--); } void TIM3_IRQHandler(void) { if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET)//检查中断溢出标志位 { TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清中断溢出标志位 GPIO_SetBits(GPIOC, GPIO_Pin_7
[单片机]
仿真系统中基于PCI1721的信号测试设计
在电子设备模拟仿真系统中需要产生关键点的波形,供训练者测试使用,以提高模拟系统的仿真度。通常情况下模拟仿真系统由计算机和仿真机柜组成,如果在仿真机柜内部单独设计信号产生器,无疑会增加仿真系统研制难度与成本。本文介绍一种采用VB编程结合PCI1721总线扩展实现波形测试的方法,实现的思路是对虚拟模型设置传感器节点,与VB进行交互,通过虚拟模型的传感器节点,进行波形虚拟测试,通过VB编程控制控制PCI1721输出.配以整形电路,实现真正的波形测试。 1 PCI1721简介 PCI1721是一款高性能的PCI模拟量输出卡,每个模拟量输出通道都带有一个12位的双缓冲器DAC,具有许多强大的独特功能,比如最大更新速率为10 MHz的波
[测试测量]
仿真<font color='red'>系统</font>中基于PCI1721的信号测试设计
汽车语音技术在汽车电子系统中的应用
在汽车智能化时代,语音操作逐渐成为标准配置。但通常在使用空调或打开车窗的时候,受到周围噪声的影响,语音操作实现起来并不顺利。近日,NEC宣布研发出了一种噪声去除技术可大幅提高车载系统语音操作的精确度。 据了解,该技术是利用两个麦克风吸收声源,再经过两个步骤做杂音处理,启用声音模型使设备更容易识别。通过这项技术,即使处在比原来嘈杂5倍的杂音环境中也可以完成正确的语音操作。 这项技术的具体处理步骤为,首先,通过对空调等车内特有噪声源的位置以及声音向车内麦克风传播的方式进行分析,将两个麦克风按小间距的方式,前后配置在车内的最佳位置。这样就能够准确识别来自汽车前方的噪声和说话者的语音,从而提高去除噪声的效率。 其次,对检测到的
[汽车电子]
汽车语音技术在汽车电子<font color='red'>系统</font>中的应用
Ceva和炬芯科技共建里程碑 Ceva 助力无线音频和 AIoT 处理器出货量突破 1 亿
两家企业在无线、音频和语音技术领域长期紧密合作,共同见证全球领先的OEM厂商在扬声器、音箱、耳塞和智能手表等消费类设备采用炬芯科技的高品质、 低延迟无线音频 SoC 帮助智能边缘设备更可靠、更高效地连接、感知和推断数据的全球领先硅产品和软件IP授权许可厂商Ceva公司(纳斯达克股票代码:CEVA) 和先进的人工智能物联网(AIoT) SoC无晶圆厂半导体企业炬芯科技股份有限公司(以下简称 炬芯科技 )(Actions Technology Co, Ltd. (“Actions”))共同达成具有里程碑意义的卓越成就:采用Ceva音频、语音、AI传感和无线通信IP的炬芯科技无线音频和AIoT芯片销量突破1亿。 总部位于
[手机便携]
自适应巡航系统的组成及原理
全自动驾驶汽车在未来几年中一定会普及到我们身边来,谷歌已经计划在2020年时全球在路上跑的自动驾驶汽车达到1千万辆。其实,自动驾驶汽车的一些基本科技配置在我们现在的许多车型上已经有配备了。比如自适应巡航系统,几乎成了豪华车的标配。但什么是自适应?雷达有什么用?巡航控制控制啥? 其实巡航控制很早就有了,18世纪时诞生了最早版本的巡航控制,它的作用是为了阻止蒸汽机的运转过快。后来,巡航控制系统被连接到速度表以及驱动轴上,用来计算行车速度,然后利用电脑控制油门来维持司机预先设定的速度。如今,这一切动作都被整合到一个小黑盒中——ECU。在减少驾驶员体力消耗的同时,巡航控制还能够稍稍提高燃油经济性。 定速巡航最初流行起来是在美国,因
[嵌入式]
自适应巡航<font color='red'>系统</font>的组成及原理
智能家居系统 “立体防御”异军突起
    如今,随着百姓物质条件改善,越发注重生命和财产安全,安防需求日益得到重视。目前国内民用安防市场虽然起步较晚,但发展速度很快,产品竞争激烈,山寨现象普遍,同质化严重。而应用物联网技术的智能家居凭借立体防御理念迅速在市场异军突起,表现优异,成为家居安防市场的一支生力军。   同质化严重影响安防效果   据悉,上世纪80年代,国内安防产业开始慢慢兴起,直到90年代人们生活水平有了明显提高,安防市场才开始快速发展,进入到21世纪,百姓生活有了质变,人们不仅追求家居生活的方便快捷,舒适节能,而且愿意花费重金在家庭安防上。   然而,令人意想不到的是,安防市场发展迅速,吸引了来自多个领域的觅食者,行业生产规模扩大,企业急功
[安防电子]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved