开源rtos_使用此开源RTOS对硬件进行编码

本文介绍了RTOS在嵌入式系统中的重要性,包括并发处理、模块化、实时能力、可重用性的提升。特别提到了RT-Thread操作系统,它改善了开发效率并拥有丰富的软件生态系统,使得嵌入式软件的开发更加高效和模块化。通过实例展示了如何利用RT-Thread解决裸机编程中的挑战。
摘要由CSDN通过智能技术生成

开源rtos

在一般的计算中,操作系统是指提供计算机基本功能的软件。 它确保计算机检测到外围设备(例如键盘,屏幕,移动设备,打印机等)并对其做出响应,并管理内存和驱动器空间。

即使现代操作系统似乎可以同时运行多个程序,但CPU内核一次只能运行一个线程。 每个任务执行得如此Swift且如此Swift,以至于结果似乎是大量的多任务处理。 这由称为调度程序的子例程管理。

操作系统通常用于计算机。 该操作系统已安装到硬盘驱动器上,并管理计算机的任务。

为什么RTOS对于嵌入式系统至关重要

我是在2008年,当时我还是一个学生,学习有关MCS-51芯片编程的知识,因此我发现了嵌入式软件。 因为我主修计算机科学,所以我在其他课程中正在做的所有程序都在PC上执行。 但是在芯片上编程是完全不同的体验。 第一次,我看到我的程序在裸机板上运行,当我第一个自行车灯程序成功运行时,我仍然记得激动。

不过,这种兴奋是相对短暂的。 我编写的裸机程序越多,遇到的问题就越多。 在这个挫折中我并不孤单。 直接对芯片进行编程非常困难,并且有充分的理由说明PC使用操作系统。 不幸的是,计算机芯片(嵌入式系统)通常没有操作系统。 它们使用没有操作系统的代码进行“硬编码”,以帮助管理代码的执行方式。

硬编码计算机芯片时,可能会遇到以下问题:

并发

您没有在芯片上的守护程序来管理执行。 对于裸机程序,不可避免地会有一个巨大的while (1)循环,其中包含了整个项目的几乎所有事务逻辑。 每个事务调用一个或多个延迟函数。 当CPU运行延迟功能时,将顺序执行这些命令。 没有什么可以避免不必要的延迟,因此事务重置必须等待。 结果,很多CPU时间浪费在空循环上,这不利于并发。

模块化

while (1)循环,很难分为模块。 设计耦合度低的软件只是不方便,这使得在裸机板上开发大型项目变得困难。

另外,当涉及看门狗定时器时,开发人员必须小心使用延迟功能。 如果延迟时间太长,则主功能将没有机会重置看门狗,因此在执行过程中会触发看门狗。 对于裸机开发,即使调用延迟功能,也要考虑很多事情。 项目越复杂,您需要采取的措施就越多。 想象一下,试图将这一系列微妙的定时交互分离成模块。

生态系统

许多高级软件组件取决于底层操作系统的实现。 例如,我开发了一个基于FreeModbus的开源项目,我计划将其移植到各种平台上,甚至移植到裸机上。 但是,与将其适应于不同操作系统的便利相比,某些功能太复杂而无法在所有裸机板上实现。 更糟糕的是,由于缺乏通用性,必须在不同的硬件平台上从头开始设计许多实现。

目前,我对Modbus堆栈的实现仍无法在裸机板上运行。

由Realtek,TI和MediaTek等大公司提供的许多WiFi软件开发套件只能在操作系统上运行。 他们不会发布固件的源代码供用户修改,因此您不能在裸机环境中使用它们。

实时能力

对于某些应用领域,实时功能是必需的。 对于某些用例,必须在特定时间触发关键软件步骤。 例如,对于工业控制而言,机械设备必须以预定的顺序和时间完成动作。 如果不确保实时能力,就会出现可能危及工人生命的故障。 在裸机平台上,当所有功能都塞进一个大while (1)循环中时,就不可能维护实时功能。

可重用性

可重用性取决于模块化。 没有人愿意一遍又一遍地做同样的工作,尤其是当该工作正在编写代码时。 这不仅浪费时间,而且使代码维护成倍增加。 但是,在具有不同芯片的各种硬件平台上,相同的功能必须适用于不同的硬件,因为其实现取决于底层硬件。 重新发明轮子是不可避免的。

实时操作系统的优势

幸运的是,有一些为芯片编写的操作系统:它们被称为实时操作系统(RTOS),并且像大多数操作系统一样,它们具有调度程序以确保可预测的代码执行顺序。

我在2010年首次将RTOS用于裸机。STM32系列微控制器(MCU)开始流行,由于它们功能强大且功能丰富,因此许多人都在上面运行操作系统。 我使用了RT-Thread操作系统,该操作系统具有许多内置的,随时可用的组件。 它在Apache 2.0许可下可用,与其他操作系统相比,我对它更满意。 我已经开发了10年。

对于裸机编程,RTOS解决了我们面临的大多数最大问题。

模块化

使用操作系统,可以将整个软件分为多个任务(称为线程)。 每个线程都有其自己独立的执行空间。 它们彼此独立,从而提高了模块化。

并发

当线程调用延迟功能时,它会自动将CPU释放给需要运行的其他线程,从而提高了整个CPU的利用率,并最终提高了并发性。

即时的

RTOS具有实时功能。 每个线程都分配有指定的优先级。 较重要的线程设置为较高的优先级,较不重要的线程设置为较低的优先级。 这样,可以保证整个软件的实时性能。

开发效率

操作系统提供统一的抽象接口层。 这促进了可重用组件的积累并提高了开发效率。

操作系统是一群软件极客的智慧的产物。 封装和抽象了许多常用软件功能,例如信号量,事件通知,邮箱,环形缓冲区,单向链表,双向列表等,以使其可供使用。

像Linux和RT-Thread这样的操作系统为零碎的硬件实现了一组标准的硬件接口。 这称为设备驱动程序框架。 因此,软件工程师可以专注于开发,而无需担心底层硬件或重新发明轮子。

软件生态系统

RT-Thread生态系统的丰富性使定量变化的过程变为定性变化。 操作系统在模块化和可重用性方面的改进使程序员可以封装基于RTOS的,嵌入式友好的可重用组件。 这些可以在项目中使用,也可以与需要最大化软件价值的其他嵌入式应用程序开发人员共享。

例如,LkdGui项目是一个专为单色显示而设计的开源图形库。 您可能会看到它在工业设置中用于控制面板的简单美观的图形界面。 LkdGui提供图形功能,例如绘图点,线,矩形,文本显示,按钮小部件和进度条。

LkdGui

重用LkdGui一样强大和强大的库的能力意味着程序员可以在同级工作的基础上进行构建。 没有RTOS,这将是不可能的。

尝试RT-Thread

我是一个开源怪胎,并且已经在GitHub上开源了一些嵌入式软件。 在创建开源软件之前,我很少与其他人谈论我的项目,因为人们不可避免地使用不同的芯片或硬件平台,因此我们的代码很难在彼此的硬件上运行。 像RT-Thread这样的RTOS大大提高了软件的可重用性,因此世界各地许多不同的专家可以就同一项目相互交流。 这鼓励越来越多的人分享和谈论他们的项目。 如果您要进行裸机编程,请在下一个项目中尝试RT-Thread。

翻译自: https://opensource.com/article/20/6/open-source-rtos

开源rtos

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值