前言
这章与技术无关,是博主的一得之见,欢迎交流,求同存异。
目录
1. 为什么选rt-thread和nimble
1.1. 关于物联网
物联网的概念近几年开始重新翻炒起来,在5G技术的加持下,明眼人都能看出来这个万亿级市场钱途一片光明。
从现在各大厂在这一块布局来看,思路都是搭建从端
到云
的基础设施,开放平台接入,形成自己的生态圈,等到时机成熟再花式割韭菜,现在正处于一个攻城略地的白热化阶段。
大佬们在悄咪咪的抓住先机占领市场,建立生态。同样的,作为码农就应该有笨鸟先飞,抱紧大腿,学习新知识的觉悟。
依我愚见,各大厂的物联网操作系统(iot os)是一个不错的方向。
1.2. 关于rt-thread
各家iot os技术指标,比如:上下文切换时间,快那么几个us等,对绝大部分应用场景来说,意义不大,所以这里不展开,趣度之。
我之所以选择rt-thread有以下考虑:
- C面向对象设计
- 集成nimble
- 上手门槛低
- 对国产老牌嵌入式os劲旅的支持
1.3. 关于嵌入式软件
不少从事嵌入式行业的软件工作者,在上学期间没有接触过软件工程知识,博主就是之一。
工作一段时间后,写软件会有“套路章法”,有的来自公司祖传代码,有的是加班时一刹灵光,其中涉及的“道理”,问就是不知道,反正这样做就对了。
再到后来了解到:面向对象思想、SOLID设计原则、设计模式、uml等等,原来代码应该这样写,业务逻辑可以这样画出来。
嵌入式离不开底层,越是底层,代码设计越是精简,若是在精简中仍保持巧妙的设计思想,在我看来就是一份值得钻研的高质量代码。
rt-thread官方介绍系统采用C面向对象设计,这就很棒。在看了rtdef.h
文件之后,很舒服,故决定拜读一下,要是能在其中领悟到一丝精髓也不错。
1.4. 关于ble协议栈
市场上所有BLE芯片原厂都不会完全公开自己的协议栈,没有例外。如果想要研究完整协议栈(host + controller)的实现,要么到原厂去工作,要么目前就只能找全网仅有的以下两个开源协议栈。
- zephyr
该项目有linux基金会背书,各大原厂形成社区一起维护,实力毋庸置疑。虽开发工具高效但学习成本高,不适合初学者,适合对开源项目有一定经验的人。
- nimble
产自apache基金会(制订apache2 license的那个组织)。代码风格干净,与os耦合程度低,注释多,功能比zephyr少,适合学习。
1.5. 关于时间投入
年轻人的时间是十分宝贵的。
我觉得年轻人不应该有“反正年轻,大把试错机会,先让子弹飞一会”的观念来麻痹自己,用战术上的勤奋来掩盖战略上的懒惰,选择比努力更重要。
研究协议栈已经算是术业专攻,如果不是工作刚需和兴趣,要注意时间投入回报问题。