当前位置:首页 > 技术学院 > 技术解析
[导读]在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。

一、什么是FreeRTOS ?

在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。

在嵌入式领域,FreeRTOS是不多的同时具有实时性,开源性,可靠性,易用性,多平台支持等特点的嵌入式操作系统。目前,FreeRTOS已经发展到支持包含X86,Xilinx,Altera等多达30种的硬件平台,其广阔的应用前景已经越来越受到业内人士的瞩目。

FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为10.3.1版。

作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。FreeRTOS内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。

FreeRTOS的内核可根据用户需要设置为可剥夺型内核或不可剥夺型内核。当FreeRTOS被设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的CPU使用权,这样可保证系统满足实时性的要求;当FreeRTOS被设置为不可剥夺型内核时,处于就绪态的高优先级任务只有等当前运行任务主动释放CPU的使用权后才能获得运行,这样可提高CPU的运行效率。

二、为什么要学习RTOS?

作为基于ARM7、Cortex-M3硬件开发的嵌入式工程师,我一直反对使用RTOS。不仅因为不恰当的使用RTOS会给项目带来额外的稳定性风险,更重要的是我认为绝大多数基于ARM7、Cortex-M3硬件的项目,还没复杂到使用RTOS的地步,使用状态机就足够了。

对于现代的微处理器,特别是资源相对丰富ARM7、Cortex-M3硬件来说,RTOS占用的硬件资源已经越来越可以忽略。所以在当今环境下,我们无需担心RTOS会拖累性能。相反,RTOS提供的事件驱动型设计方式,使得RTOS只是在处理实际任务时才会运行,这能够更合理的利用CPU。在实际项目中,如果程序等待一个超时事件,传统的无RTOS情况下,要么在原地一直等待而不能执行其它任务,要么使用复杂(相对RTOS提供的任务机制而言)的状态机机制。如果使用RTOS,则可以很方便的将当前任务阻塞在该事件下,然后自动去执行别的任务,这显然更方便,并且可以高效的利用CPU。

三、安全地连接、编程、部署和管理低功耗设备

FreeRTOS 支持传输层安全性 (TLS v1.2),可以帮助您的设备安全连接到 AWS。您还可以轻松将常用的 IoT 功能编程到设备中,其中包括使用 Wi-Fi 或以太网等常见连接选项来帮助将设备配置到本地网络的软件库,或者使用低功耗蓝牙技术连接到移动设备。FreeRTOS 还提供了一个无线 (OTA) 更新库,通过增强功能或安全补丁来远程更新设备。它还具备代码签名功能,可以确保您的设备代码在部署和 OTA 更新过程中不会泄露。

四、几点初学者建议

第一点:初学者学习操作系统,那必须是先学习内核,学习内核处理的思想,跳出裸机处理的思想,那么选择的内核必然是由简单到深入。

第二点:学习内核的话,文档说明必须要丰富,目前有很多书是写ucos跟FreeRTOS的,很多人都觉得这两个rtos非常好,那人家做了那么多年,确实也是非常好的啦,ucos上过火星;FreeRTOS开源免费,是全球最多人使用的rtos,我肯定不否认这些不好啦。但是我还是推荐国内的。ucos实现太臃肿,安全做的非常好,很多情况都考虑了,但是作为初学者,你会有那么多情况产生吗,肯定不会的,没必要学。FreeRTOS实现几乎都是通过宏定义提供给开发者,实现过程也是很直观明了,但是内核代码行数还是太多了,我不推荐(即使我的第一个rtos也是学习FreeRTOS)。

第三点:目前rt-thread的书籍与例程非常丰富了,比如野火的《rt-thread内核实现与应用开发实战指南》,比如rt-thread官方出版的《RT-Thread编程指南》,都是很不错的资料。而TencentOS tiny资料较少,说不定我能给它整一个全网首发TencentOS tiny内核实现的系列文章

第四点:关于rtos内核,真的是一通百通的!!!各种ICP通信的同步、互斥、阻塞机制,真的是一样的处理思想,大同小异的实现过程,相信我。

五、工业应用程序

工业客户利用基于微控制器的设备,这些设备会生成关于业务关键型工作负载的数据。工业传感器、致动器、泵和自动化组件均使用微控制器,因为它们成本低、功耗低,并且可以执行实时操作。例如,石油钻塔上的单个泵由微控制器控制,如果出现故障,则可能会完全关闭。借助 FreeRTOS,这些客户可以通过直接连接到云来收集系统性能和压力方面的数据,并通过 AWS IoT Greengrass 在本地实时采取关键措施来防止出现此类破坏性中断。

FreeRTOS 可以帮助电器、可穿戴技术或智能照明制造商等消费产品公司针对各种产品和型号,将基于微控制器的设备开发、交付和维护过程标准化。FreeRTOS 提供单个微控制器操作系统,它可以支持具有不同功率和容量的各种微控制器硬件。这样,这些公司便可以专注于产品创新,无需面对跨多个产品线开发软件的复杂性。此外,通过 OTA 更新功能,FreeRTOS 还能安全更新使用中的现有消费产品的功能。

【更多关于FreeRTOS相关阅读】

超详细的FreeRTOS移植全教程——基于STM32

FreeRTOS的相关问题及处理1

FreeRTOS在Cortex-M3上的移植

FreeRTOS入门指南

FreeRtos——移植到 STM32 MCU 上面

(转)FreeRTOS移植到STM32F103步骤与注意事项

FreeRTOS 消息队列

推荐给学习rtos的朋友一本好书freertos说明书(入门推荐)

嵌入式操作系统 FreeRTOS 的原理与实现

freertos和ucos哪个更适合于学习???

AC781x移植Freertos系统

FreeRTOS调度器启动过程分析

FreeRTOS任务创建分析

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭