目录
嵌入式开发学习必须要明白的一个问题!!!
为什么要学习 RTOS
我的个人总结:
OS的作用是解决软件和底层硬件之间的耦合度,避免应用层软件直接操作底层硬件。
学习单片机裸机开发的时候,学习80C51和学习89C51以及IAP15,我们写程序时要操作IO所要调用的接口都是不一样的,这样学习和使用起来所要掌握的接口就特别多,也就特别复杂,记起来也特别麻烦:在80C51中我们需要先设置IO为普通IO模式还是外设模式,上拉还是下拉,然后才能操作IO;在89C51中,我们可以直接操作IO;而在IAP15中,我们又需要先开启相应的锁存器,才能操作IO。
因此就引入了OS(操作系统),将不同型号单片机相同功能的过程操作封装成一个统一的接口,从而直接使用,大大提高的程序的可拓展性、复用性。
相当于多态中的抽象类的概念:使用同一个接口,传递不同的实例,实现不同的操作。
嵌入式实时操作系统的架构正是采用了面向对象多态中的依赖倒置原则,降低了上层应用软件和底层硬件之间的耦合性、提高系统的稳定性、减少并行开发引起的风险以及提高代码的可读性和可维护性。
参考(引入的野火RTOS手册的话):
当我们进入嵌入式这个领域的时候, 往往首先接触的都是单片机编程, 单片机编程又 首选 51 单片机来入门。 这里面说的单片机编程通常都是指裸机编程,即不加入任何 RTOS (Real Time Operation System 实时操作系统) 的程序。 常用的 RTOS 有国外的 FreeRTOS、 μC/OS、 RTX 和国内的 RT-Thread、 Huawei LiteOS 和 AliOS-Things 等, 其中尤以国外开源 且免费的 FreeRTOS 的市场占有率最高。如今国产的 RT-Thread 经过 10 来年的发展,声势 迅猛,在国产 RTOS 中占据鳌头。
在裸机系统中,所有的程序基本都是自己写的, 所有的操作都是在一个无限的大循环 里面实现。现实生活中的很多中小型的电子产品用的都是裸机系统, 而且也能够满足需求。 但是为什么还要学习 RTOS 编程,偏偏还要整个操作系统进来。一是项目需要,随着产品 要实现的功能越来越多,单纯的裸机系统已经不能够完美地解决问题,反而会使编程变得 更加复杂,如果想降低编程的难度, 我们可以考虑引入 RTOS 实现多线程管理, 这是使用 RTOS 的最大优势。二是学习的需要,必须学习更高级的东西,实现更好的职业规划,为 将来走向人生巅峰迎娶白富美做准备,而不是一味的在裸机编程上面死磕。作为一个合格 的嵌入式软件工程师,学习是永远不能停歇的事,时刻都得为将来准备。书到用时方恨少, 我希望机会来临时你不要有这种感觉。
当我们进入嵌入式这个领域的时候, 往往首先接触的都是单片机编程, 单片机编程又 首选 51 单片机来入门。 这里面说的单片机编程通常都是指裸机编程,即不加入任何 RTOS (Real Time Operation System 实时操作系统) 的程序。 常用的 RTOS 有国外的 FreeRTOS、 μC/OS、 RTX 和国内的 RT-Thread、 Huawei LiteOS 和 AliOS-Things 等, 其中尤以国外开源 且免费的 FreeRTOS 的市场占有率最高。如今国产的 RT-Thread 经过 10 来年的发展,声势 迅猛,在国产 RTOS 中占据鳌头。
在裸机系统中,所有的程序基本都是自己写的, 所有的操作都是在一个无限的大循环 里面实现。现实生活中的很多中小型的电子产品用的都是裸机系统, 而且也能够满足需求。 但是为什么还要学习 RTOS 编程,偏偏还要整个操作系统进来。一是项目需要,随着产品 要实现的功能越来越多,单纯的裸机系统已经不能够完美地解决问题,反而会使编程变得 更加复杂,如果想降低编程的难度, 我们可以考虑引入 RTOS 实现多线程管理, 这是使用 RTOS 的最大优势。二是学习的需要,必须学习更高级的东西,实现更好的职业规划,为 将来走向人生巅峰迎娶白富美做准备,而不是一味的在裸机编程上面死磕。作为一个合格 的嵌入式软件工程师,学习是永远不能停歇的事,时刻都得为将来准备。书到用时方恨少, 我希望机会来临时你不要有这种感觉。
如何学习 RTOS
裸机编程和 RTOS 编程的风格有些不一样,而且有很多人说 RTOS 的学习很难,这就 导致学习的人一听到 RTOS 编程就在心理面忌惮三分, 结果就是出师未捷身先死。
那么到底如何学习一个 RTOS?最简单的就是在别人移植好的系统之上,看看 RTOS 里面的 API 使用说明,然后调用这些 API 实现自己想要的功能即可。完全, 不用关心底层 的移植,这是最简单快速的入门方法。 这种方法各有利弊,如果是做产品,好处是可以快 速的实现功能,将产品推向市场,赢得先机,弊端是当程序出现问题的时候,因对这个 RTOS 不够了解,会导致调试困难,焦头烂额,一筹莫展。 如果是学习,那么只会简单的 调用 API,那是不可取的, 我们应该深入的学习其中一款 RTOS。
目前市场上现有的 RTOS,它们的内核实现方式都差不多,我们只需要深入学习其中 一款就行。 万变不离其宗,以后换到其它型号的 RTOS,使用起来,那自然是得心应手。 那如何深入的学习一款 RTOS?这里有一个最有效也是最难的方法,就是阅读 RTOS 的源码,深究内核和每个组件的实现方式,这个过程枯燥且痛苦,我们可以通过查阅官方参考手册附加网上相关的学习视频,如B站。最推荐学习的RTOS是 RT-Thread,它是纯国产的一款RTOS,也是目前国内用的最普遍,最有前景的RTOS,它拥有着纯中文的参考文档和官方论坛,也有着一些教程,虽然目前相较于Free OS和UCOSIII的教学视频要少,但是将来它在市面上的教程只会越来越多,质量也会越来越好。
相较于 Linux 操作系统, RT-Thread 体积小,成本低,功耗低、启动快速,除此以外 RT-Thread 还 具有实时性高、占用资源小等特点,非常适用于各种资源受限(如成本、功耗限制等)的场合。虽然 32 位 MCU 是它的主要运行平台,实际上很多带有 MMU、基于 ARM9、 ARM11 甚至 Cortex-A 系列级别 CPU 的应用处理器在特定应用场合也适合使用 RT-Thread。
RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread 也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread 具备一个 IoT OS 平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。经过11年的累积发展,RT-Thread 已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过 8亿 台,成为国人自主开发、国内最成熟稳定和装机量最大的开源 RTOS。
RT-Thread 拥有良好的软件生态,支持市面上所有主流的编译工具如 GCC、Keil、IAR 等,工具链完善、友好,支持各类标准接口,如 POSIX、CMSIS、C++应用环境、Javascript 执行环境等,方便开发者移植各类应用程序。商用支持所有主流MCU架构,如 ARM Cortex-M/R/A, MIPS, X86, Xtensa, C-Sky, RISC-V,几乎支持市场上所有主流的 MCU 和 Wi-Fi 芯片。