嵌入式分享合集10

一、STM32嵌入式开发中的RTOS

1 FreeRTOS

    由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。

    相对于C/OS-II、 embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为6.0版。

    作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。

    FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。

    FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。

    FreeRTOS的不足:相对于常见的μC/OS—II操作系统,FreeRTOS操作系统既有优点也存在不足。其不足之处, 一方面体现在系统的服务功能上,如FreeRTOS只提供了消息队列和信号量的实现,无法以后进先出的顺序向消息队列发送消息;另一方 面,FreeRTOS只是一个操作系统内核,需外扩第三方的GUI(图形用户界面)、TCP/IP协议栈、FS(文件系统)等才能实现一个较复杂的系统, 不像μC/OS-II可以和μC/GUI、μC/FS、μC/TCP-IP等无缝结合。

    在STM32CubeIDE中直接可以配置FreeRTOS,如上图。STM32使用FreeRTOS的相关文章,请移步此处:使用STM32CubeMx工具,写FreeRTOS的demo程序。

    FreeRTOS资料多、生态活跃,在Cube中通过配置界面,三两下上手这款操作系统,推荐拿来入门。

    基于不同的需求,下文再介绍下其他RTOS。

2 μClinux

    μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。

    同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。

    μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占,实时性一般。

    综上可知,μClinux最大特点在于针对无MMU处理器设计,这对于没有MMU功能的STM32F103来说是合适的,但移植此系统需要至少512KB的RAM空间,1MB的ROM/FLASH空间,而STM32F103拥有256K的FLASH,需要外接存储器,这就增加了硬件设计的成本。

    μClinux结构复杂,移植相对困难,内核也较大,其实时性也差一些,若开发的嵌入式产品注重文件系统和与网络应用则μClinux是一个不错的选择。

3 μC/OS-II

    μC/OS-II是在μC/OS的基础上发展起来的,是用C语言编写的一个结构小巧、抢占式的多任务实时内核。μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和扩展性强等特点。

    在文件系统的支持方面,由于μ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,它是非常合适的。它需要很少的内核代码空间和数据存储空间,拥有良好的实时性,良好的可扩展性能,并且是开源的,网上拥有很多的资料和实例,所以很适合向STM32F103这款CPU上移植。

4 eCos

    eCos(embedded Configurable operating system),即嵌入式可配置操作系统。它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。

    最大特点是配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C语言库和底层运行包等。

    每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过不同的配置使得eCos能够满足不同的嵌入式应用要求。

    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适合用于一些商业级或工业级对成本敏感的嵌入式系统,例如消费电子领域中的一些应用。

5 mbed OS

    开源嵌入式操作系统,ARM公司将mbed OS免费提供给所有厂商使用,mbed提供了一个相对更加系统和更加全面的智能硬件开发环境。

    主要功能:

    提供用于开发物联网设备的通用操作系统基础,以解决嵌入式设计的碎片化问题。支持所有重要的连接性与设备管理开放标准,以实现面向未来的设计。使安全可升级的边缘设备支持新增处理能力与功能。通过自动电源管理解决复杂的能耗问题。

    主要特点:

    开发速度快,功能强大,安全性高,为了量产化而设计,可离线开发,也可以在网页上编辑。

6 RTX

    是ARM公司的一款嵌入式实时操作系统,使用标准的C结构编写,运用RealView编译器进行编译。不仅仅是一个实时内核,还具备丰富的中间层组件,不但免费,而且代码也是开放的。

    主要功能:

    开始和停止任务(进程),除此之外还支持进程通信,例如任务的同步、共享资源(外设或内存)的管理、任务之间消息的传递。开发者可以使用基本函数去开启实时运行器,去开始和终结任务,以及去传递任务间的控制(轮转调度)。开发者可以赋予任务优先级。

    主要特点:

    支持时间片,抢占式和合作式调度。不限制数量的任务,每个任务都具有254的优先级。不限制数量的信号量,互斥信号量,消息邮箱和软定时器。支持多线程和线程安全操作。使用MDK基于对话框的配置向导,可以很方便的完成MDK的配置。

7 都江堰

    都江堰操作系统,简称djyos,得名于一个伟大的水利工程:都江堰。

    与传统操作系统不同,djyos不是以线程而是以事件为调度核心,这种调度算法使程序员摆脱模拟计算机执行过程编写程序的思维方式,而是按人类认知世界的方式编写应用程序,就如同在嵌入式编程中引入了VC似的。

    djyos的调度算法使程序员可以摆脱线程和进程的束缚,djyos没有有关线程的api,一个完全不懂线程知识的程序员也可以顺利地在djyos下编写应用程序。

    djyos 操作系统是以事件为核心进行调度的,这种调度策略使程序员可以按人类认知事物的习惯而不是计算机的习惯来编程。

8 RT-Thread

    嵌入式操作系统RTOS介绍,RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。

    RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。经过11年的累积发展,RT-Thread已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过两千万台,成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。

    国内最有可能成为Top 1,优势在于丰富的组件,中立立场!赶上了时机,得到诸多芯片厂商的支持,也挺受开发者喜欢的。缺点在于本身的教程文档和freertos等之类的比还是很弱。

二、共模干扰与差模干扰及抑制方法

什么是共模与差模

    电器设备的电源线,电话等的通信线, 与其它设备或外围设备相互交换的通讯线路,至少有两根导线,这两根导线作为往返线路输送电力或信号,在这两根导线之外通常还有第三导体,这就是"地线"。电压和电流的变化通过导线传输时有两种形态, 一种是两根导线分别做为往返线路传输, 我们称之为"差模";另一种是两根导线做去路,地线做返回传输, 我们称之为"共模"。

    如上图, 蓝色信号是在两根导线内部作往返传输的,我们称之为"差模";而黄信号是在信号与地线之间传输的,我们称之为"共模"。

共模干扰与差模干扰

    任何两根电源线或通信线上所存在的干扰,均可用共模干扰和差模干扰来表示:共模干扰在导线与地(机壳)之间传输,属于非对称性干扰,它定义为任何载流导体与参考地之间的不希望有的电位差;差模干扰在两导线之间传输,属于对称性干扰,它定义为任何两个载流导体之间的不希望有的电位差。在一般情况下,共模干扰幅度大、频率高,还可以通过导线产生辐射,所造成的干扰较大。差模干扰幅度小、频率低、所造成的干扰较小。

共模干扰信号

    共模干扰的电流大小不一定相等,但是方向(相位)相同的。电气设备对外的干扰多以共模干扰为主,外来的干扰也多以共模干扰为主,共模干扰本身一般不会对设备产生危害,但是如果共模干扰转变为差模干扰,干扰就严重了,因为有用信号都是差模信号。

差模干扰信号

    差模干扰的电流大小相等,方向(相位)相反。由于走线的分布电容、电感、信号走线阻抗不连续,以及信号回流路径流过了意料之外的通路等,差模电流会转换成共模电流。

延庆川北小区45孙老师 收卖废品破烂垃圾炒股 废品孙 延庆废品王

共模干扰产生原因

  • 电网串入共模干扰电压。

  • 辐射干扰(如雷电,设备电弧,附近电台,大功率辐射源)在信号线上感应出共模干扰,原因是交变的磁场产生交变   的电流,地线-零线回路面积与地线-火线回路面积不相同,两个回路阻抗不同等原因造成电流大小不同。

  • 接地电压不一样,简单的说就电位差而造就了共模干扰。

  • 设备内部的线路对电源线造成的共模干扰。

共模干扰电流

    共模干扰一般是以共模干扰电流存在的形式出现的,一般情况下共模干扰电流产生的原因有三个方面:

  • 外界电磁场在电路走线中的所有导线上感应出来电压(这个电压相对于大地是等幅和同相的),由这个电压产生的电流。

  • 由于电路走线两端的器件所接的地电位不同,在这个地电位差的驱动下产生的电流。

  • 器件上的电路走线与大地之间有电位差,这样电路走线上会产生共模干扰电流。

    器件如果在其电路走线上产生共模干扰电流,则电路走线会产生强烈的电磁辐射,对电子、电气产品元器件产生电磁干扰,影响产品的性能指标;另外,当电路不平衡时,共模干扰电流会转变为差模干扰电流,差模干扰电流对电路直接产生干扰影响。对于电子、电气产品电路中的信号线及其回路而言:差模干扰电流流过电路中的导线环路时,将引起差模干扰辐射,这种环路相当于小环天线,能向空间辐射磁场,或接收磁场。

whaosoft aiot http://143ai.com

如何识别共模干扰

从干扰源判断

    雷电、附近发生的电弧、附近的电台或其它大功率辐射装置在电缆上产生的干扰为共模干扰。

从频率上判断

    共模干扰主要集中在1MHz以上。这是由于共模干扰是通过空间感应到电缆上的,这种感应只有在较高频率时才容易发生。但有一种例外,当电缆从很强的磁场辐射源(例如,开关电源)旁边通过时,也会感应到频率较低的共模干扰。

用仪器测量

    只要有一台频谱分析仪和一只电流卡钳就可以进行测量、判断了。

    判断的步骤如下:

  • 将电流卡钳分别卡在信号线或地线(火线或零线)上,记录下某个感应频率(f1)的干扰强度。

  • 将电流卡钳同时卡住信号线和地线, 若能观察到(f1)处的干扰,则(f1)干扰中包含共模干扰成份,要判断是否仅含共模 干扰成份,进行步骤c的判别。

  • 将卡钳分别卡住信号线和地线,若两根线上测得的(f1)干扰的幅度相同,则(f1)干扰中仅含共模干扰成份;若不相同,则(f1)干扰中还包含差模干扰成份。

如何抑制共模干扰

    共模干扰作为EMC干扰中最为常见且危害较大的干扰,我们抑制它最直接的方法就是滤波,这是抑制和防止共模干扰的一项重要措施。滤波器的功能就是允许某一特定频率的信号顺利通过,而其它频率的信号则要受到较大的抑制,它实质上是一个选频电路,它切断了电磁干扰沿信号线或电源线传播的路径,另外它还是压缩干扰频谱的一种有效方法,当干扰频谱不同于有用信号的频带时,可以用滤波器将无用的干扰信号滤除。因此,恰当地选择和正确地使用滤波器对抑制共模干扰是十分重要的。

    如果有用信号是差模信号而干扰信号是共模信号,可使用共模电感来抑制干扰信号:

共模电感的原理和抑制干扰

    在电路中串入共模电感,当有共模干扰电流流经线圈时,由于共模干扰电流的同向性,会在线圈内产生同向的磁场而增大线圈的感抗,使线圈表现为高阻抗,产生较强的阻尼效果,以此衰减共模干扰电流,达到滤波的目的;当电路中的正常差模电流流经共模电感时,电流在同相绕制的共模电感线圈中产生反向的磁场而相互抵消,因而对正常的差模电流基本没有衰减作用。

案例  USB 信号上的共模干扰抑制方法

    上图,USB 端口的滤波处理-使用共模电感。

    USB 传输线上的信号是差分信号而干扰源是共模干扰信号,在传输线上串上共模电感能较好的抑制共模干扰,而对有用的差分信号没有任何衰减。

    上图,USB 高速运行会在DM/DP信号线上产生很强的共模干扰。

    上图,电路中加入滤波器-共模电感后共模干扰信号得到有效抑制。

    如果共模干扰源是在电源回路,可使用共模电容来抑制干扰信号。

    在电路中引入共模电容,则共模电容提供最短的路径使共模干扰信号被旁路,从而抑制共模干扰的产生 。

    如果电源回路同时还存在差模干扰,使用差模电容来抑制干扰

    在电路中引入差模电容,则差模电容提供最短的路径使差模干扰信号被旁路,从而抑制差模干扰的产生 。

总结

    共模干扰作为EMC干扰中最为常见且危害很大的干扰,抑制它的方法除了滤波外,还可以通过对信号线路进行屏蔽,在PCB 板上大面积铺地降低地线阻抗来减少共模信号强度等方法。

猜你喜欢

转载自blog.csdn.net/qq_29788741/article/details/125725595