FreeRTOS操作系统 如何学习FreeRTOS操作系统?
扫描二维码
随时随地手机看文章
一、什么是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移植到STM32F103步骤与注意事项