STM32单片机跑RTOS会比裸机有优势吗?
在工作中总是能碰到通过秀技术来满足虚荣感的。
很多人总是以为用过操作系统就很牛逼,什么高内聚、低耦合,易用性、可读性、可移植性、可扩展性好,或许这些专业名词真正体现在什么地方自己都说不出来。
其实也挺有意思的,自己以前在从事软件开发的时候也经常和硬件互怼。
我总是怀疑是他硬件有问题,他总是说我软件有问题,除非双方抓到了确凿的证据,我们才会拍大腿说:卧槽,原来是这里有问题!
互怼完以后还是一样,该一起吃饭吃饭,该玩玩,直到下个项目开始又接着怼。
回到我们今天的主题,系统真的比裸奔更有优势吗?
答案肯定不是的,我从以下几点来分析下个人看法:
1.带系统的优势
2.带系统的缺点
3.自己写轻量级操作系统
一、带系统的优势
带系统一般比较适合大的项目,大到什么程度?我个人认为是你个人无法掌控整个程序架构的时候,那可以用系统。
举个例子,我在12年的时候第一次接触了ucos系统,当时只负责产品维护不是独立开发,就是改改代码升级下产品功能。
这个产品的功能还是比较简单,就是一个接受主板过来的串口数据,然后处理显示在LED屏里。
我现在想想这个产品根本没必要用ucos系统啊,多此一举,搞不好还把自己坑了。
至于为什么我也搞不清楚,或许是当时开发这个产品的工程师觉得自己hold不住这个产品的程序架构,所以加个系统把程序”地基”打好。
也或许是他单纯想学习ucos,正好有这个机会就拿那个产品来当小白鼠。
系统相当于给你一个成熟的程序架构,能够很大程度保证你在开发过程中不会因为自己程序架构的问题导致崩盘。
比如说产品90%的功能基本都实现了,最后就是10%跟其他功能有冲突,导致90%的功能又得重写。
二、带系统的缺点
虽然用系统看起来很爽,但也是有缺点的,比如说:
1.新手慎用
不然产品出了BUG你从哪里找都不知道。
带系统的不像while(1)这样从上往下执行,而是通过任务优先级灵活调度,所以会加大BUG排查难度。
2.带系统的占用内存大
有些光是系统就占了几十上百k资源,单片机本身资源就非常有限,比如说原本不带系统用STM32F103C8就能搞定,如果加系统你的上STM32F103CB甚至更高,无形中增加了硬件成本。
三、自己写轻量级操作系统
用别人成熟的东西算啥本事,自己写一个轻量级操作系统才牛逼,才能真正学到东西。
比如说自己写过内存管理,你才能体会到内存动态分配的真正意义。
再比如说自己用队列算法实现各层之间数据传递,你才能深刻体会系统里邮箱的实现原理。
再比如你自己做一个定时器管理,你才能深刻体会到系统里的定时事件是咋回事。
如果你能做到这一步,或许加系统对于你来说反而是累赘,因为这种程序架构足以满足你基于单片机的产品需求了。
而外加系统你不吃透的话,总会有种在产品里装了个定时炸弹的感觉。
而想做到这一步,最重要的你需要一个教程,哈哈哈。
你必须对c语言的高级应用比较熟悉,比如结构体,指针,然后通过这些你还需要掌握队列算法、回调函数等知识点,再加以练习也能做出来。
而这些,我的教程都有手把手教,2019年纯粹录来玩的。
看到就是缘分,不用钱,只需要关注公众号【无际单片机编程】回复"入门资料"领取。