再来学习一下RT-Thread的软件架构

摘要:

学习和使用了RT-Thread有2年多了的时间,最近一直在研究开源项目Matter相关的软件架构设计,趁此机会,再来温习一下rt-thread的软件架构设计。

文章目录

  • 1 写在前面
  • 2 RT-Thread的软件架构
    • 2.1 RT-Thread的软件架构示意图
    • 2.2 RT-Thread的软件架构解析
    • 2.3 我对RT-Thread的软件架构图的理解
  • 3 软件架构之我见
  • 4 友情推荐
  • 5 文末福利

1 写在前面

学习和使用了RT-Thread有2年多了的时间,最近一直在研究开源项目Matter相关的软件架构设计,趁此机会,再来温习一下RT-Thread的软件架构设计。

软件设计这个东西,个人觉得是比较抽象的,我们所能看到的一些软件架构的定义,是一些做通用的技术场景做了一些高度抽象,提炼出来的概念。所以,我们要深入学习一个开源项目,学习其软件架构是非常有必要的。

本文,博主就着RT-Thread官方提供的软件设计框架,再学习学习,顺带结合自己的工作经历,谈一下软件架构迁移的问题。

2 RT-Thread的软件架构

2.1 RT-Thread的软件架构示意图

从RT-Thread官方的技术文档中,我们可以得知RT-Thread整一个软件架构长这样:

从这个软件架构图,我们可以看出,其实我们通常意义说的 RT-Thread软件架构,这是一个比较宏观的概念,它不仅仅包含RTOS内核,还包括一些组件和服务层,同时也包括一些常见常用的软件包。

2.2 RT-Thread的软件架构解析

以下部分小部分内容摘自RT-Thread技术论坛文档中心。详见戳这里:

近年来,物联网(Internet Of Things,IoT)概念广为普及,物联网市场发展迅猛,嵌入式设备的联网已是大势所趋。终端联网使得软件复杂性大幅增加,传统的 RTOS 内核已经越来越难满足市场的需求,在这种情况下,物联网操作系统(IoT OS)的概念应运而生。**物联网操作系统是指以操作系统内核(可以是 RTOS、Linux 等)为基础,包括如文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台,**RT-Thread 就是一个 IoT OS。

RT-Thread 与其他很多 RTOS 如 FreeRTOS、uC/OS 的主要区别之一是,它不仅仅是一个实时内核,还具备丰富的中间层组件,如下图所示。

它具体包括以下部分:

  • 内核层:RT-Thread 内核,是 RT-Thread 的核心部分,包括了内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件 / 板级支持包)与硬件密切相关,由外设驱动和 CPU 移植构成。
  • 组件与服务层:组件是基于 RT-Thread 内核之上的上层软件,例如虚拟文件系统、FinSH 命令行界面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合。
  • RT-Thread 软件包:运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。RT-Thread 提供了开放的软件包平台,这里存放了官方提供或开发者提供的软件包,该平台为开发者提供了众多可重用软件包的选择,这也是 RT-Thread 生态的重要组成部分。软件包生态对于一个操作系统的选择至关重要,因为这些软件包具有很强的可重用性,模块化程度很高,极大的方便应用开发者在最短时间内,打造出自己想要的系统。RT-Thread 已经支持的软件包数量已经达到 400+,如下举例:
  • 物联网相关的软件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。
  • 脚本语言相关的软件包:目前支持 Lua、JerryScript、MicroPython、PikaScript。
  • 多媒体相关的软件包:Openmv、mupdf。
  • 工具类软件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。
  • 系统相关的软件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。
  • 外设库与驱动类软件包:RealTek RTL8710BN SDK。
  • 其他。

2.3 我对RT-Thread的软件架构图的理解

本小节,谈一谈,我对RT-Thread的软件架构图的学习和理解。

a) 从整体上看,RT-Thread的这个软件架构,很好地做到了层次分明,它把整一个软件,从功能逻辑上划分为三个层面:软件包这个层次、组件或服务包这个层次、内核实现这个层次。

这一点,使我们学习软件架构设计,必须要掌握的知识点。

每接触到一个软件工程,势必会有不同的逻辑功能,那么如何把这些逻辑功能,通过一定的界线做好层次划分,这是软件设计的第一步。如果你还不清晰该如何划分,可以借鉴一下RT-Thread的设计思路。

b) 在划分好基本的三大层次之后,开始规划每一个层次之间的联系,说白了,就是API的调用关系。

从RT-Thread的设计里面,我们可以看到,通常我们做层级直接的联系时,需要遵从的一个原则就是不要跨层级调用。

比如如上图所示:尽量避免软件包层级调用到内核层太深的API;而应该尽量选择组件或服务层提供的易用型API。

c) 调用层级清晰后,开始规划每个层级中平行的模块关系,拿内核层来说,libcpu模块是一个对内核提供抽象的CPU接口,同时对下它就势必要去适配各种不同指令集的CPU。在逻辑架构里面,不同的CPU是一个平行的关系;这也就意味着在设计libcpu的接口时,务必考虑到每个不同CPU的适配兼容性,这其实是一个不小的挑战。

也就是说在同一个层级里面,其实也有小的上下层级的划分,只有把这几个逻辑层次都搞清楚后,软件架构的层次感就会非常鲜明,这样的话,在一个层次清晰的软件架构下编写代码,那就是一个字:爽!

以上就是我结合自己的一些思路,提出对RT-Thread软件框架的学习和体会,不一定全部都是对的,我也是个持续学习者,欢迎大家一同学习和探讨。

3 软件架构之我见

最近我刚好也在学习Matter相关的内容,顺带聊一聊我对Matter软件架构的看法。

Matter是一个开源的物联网协议,致力于解决物联网智能家居领域各大云平台不互联互通的难题。

从它的官方仓库,我们可以看到它的软件框架张这样:

这个软件框架是由海内外的几个科技巨头,诸如Google、Apple、亚马逊、涂鸦、乐鑫等,一起创造设计的。

我觉得从软件设计的角度上来看,它很好地把底层通讯与应用层逻辑分离开来,而这就是我们软件设计里面一大很重要的原则:高内聚、低耦合

要想做到这样的软件架构设计,必须对你的软件项目有足够的理解,还要有丰富的逻辑抽象能力,对相同的实物做同类的归纳,而不同的实物,做好层次分离,达到概念合理,逻辑清晰的地步。

软件架构设计是一项需要长期实践和学习的能力,就拿Matter这套软件架构来说,我也才学了一些皮毛,还有很多知识需要进一步消化。

如果你也对Matter感兴趣,欢迎与我交流、套路。

4 友情推荐

今天给大家推荐一本软件架构领域的教科书《软件架构实践》。

在比尔 · 盖茨的众多称谓中,据说他更偏爱“首席软件架构师”。在网易创始人丁磊名字前,也有“首席架构师”这样的称谓。架构师是如此重要,以至于在《黑客帝国》 中各色人物悉数登场,最后你却发现这一切都是被一个称作“架构师”的白胡子老头左 右的。

这是否意味着要成为架构师就要以“领导”权威来支撑或者以时间或实践来积累? 当然不必这样,在修炼成“架构师”的道路上,一本好书能让你少走许多弯路,帮助你学会“架构师”思维,快速进入“架构师”角色。

随着数字时代的到来,各种云基础设施、微服务、框架层出不穷,互联和互操作变 得唾手可得,集成和重用已有成果成为软件开发常态。在软件系统变得越来越复杂的同时,今天架构师似乎不再需要架构知识了,甚至软件开发的精髓被调侃是“ Ctrl+C 和 Ctr1+V ”。显然,在已有的架构上实现二次架构设计并不是架构师的未来,我们既要站 在巨人的肩膀上, 善于利用后发优势, 更需要从原始创新上取得突破, 这就需要你回到 问题的原点,系统地掌握软件架构的知识,努力贡献优秀的原创架构。

《软件架构实践》 就是这样一本书。本书是其第 4 版,在软件架构领域,本书已经成为标准。软件架构的术语或知识,大都可以在这本书中找到相关内容和最准确的定义。

5 文末福利

应广大粉丝需求,再次赠送一次 软件架构 相关的书籍,感兴趣的朋友欢迎关注我的CSDN技术社区活动贴:【第18期社区福利赠书活动】这本软件架构书被称为标准,凭什么?(文末赠书《软件架构实践》5本)-CSDN社区。

或者点击文章下方的微信公众号名片,回复 【架构】 来参与赠书活动。

再来学习一下RT-Thread的软件架构 | 文末赠书5本《软件架构实践》相关推荐

  1. 神理论 | 我面向淘宝编程,而你面向什么编程?(文末赠书5本)

    神理论 | 我面向淘宝编程,而你面向什么编程? 陌生人一定会疑问,嵌入式跟taobao有半毛钱关系啊?那么本文,博主就跟你聊聊,如何面向淘宝学习嵌入式! 文章目录 1 写在前面 2 面向XXX编程 3 ...

  2. 新技能 | 使用python代码来高效操作Excel表格 (文末赠书5本)

    新技能 | 使用python代码来高效操作Excel表格 (文末赠书5本) 在日常学习和工作中,少不了要跟Excel表格打交道.而我们作为程序猿,深知代码编程给人带来的便捷性,那我们怎么样使用代码来操 ...

  3. 利用excel与Pandas完成实现数据透视表(文末赠书)

         文末赠书 数据透视表是一种分类汇总数据的方法.本文章将会介绍如何用Pandas完成数据透视表的制作和常用操作. 1,制作数据透视表 制作数据透视表的时候,要确定这几个部分:行字段.列字段.数 ...

  4. 文末赠书3本 | 盼了一年的Core Java最新版卷Ⅱ,终于上市了

    文章目录 盼了一年的Core Java最新版卷Ⅱ,终于上市了! Core Java基于Java 17全面升级 Core Java最新版卷Ⅱ现已上市 卷Ⅰ.卷Ⅱ有何不同? 如何阅读<Java核心技 ...

  5. 替代VBA!用Python轻松实现Excel编程(文末赠书)

    大家好,我是小z,也可以叫我阿粥~ 面向Excel数据处理自动化的脚本编程,目前主要有VBA和Python两种语言可供选择. 从上世纪90年代到目前,VBA一直是Excel脚本编程的主要工具.VBA语 ...

  6. PyTorch自然语言处理入门与实战 | 文末赠书

    文末赠书 注:本文选自人民邮电出版社出版的<PyTorch自然语言处理入门与实战>一书,略有改动.经出版社授权刊登于此. 处理中文与英文的一个显著区别是中文的词之间缺乏明确的分隔符.分词是 ...

  7. 文末赠书《GD32 MCU原理及固件库开发指南》5本 | 国产MCU中GD32系列有望成为未来32位MCU的主流

    学习优秀博文([guo产MCU移植]手把手教你使用RT-Thread制作GD32系列BSP)有感 一篇优秀的博文是什么样的?它有什么规律可循吗?优秀的guo产32位单片机处理器是否真的能成功替换掉st ...

  8. 云计算监控—Prometheus监控系统(文末赠书)

    陈金窗 刘政委 张其栋 郑少斌 读完需要 20 分钟 速读仅需 7 分钟 本文摘自于<Prometheus 监控技术与实战>一书,从云计算时代的业务特点出发,探讨了云计算监控的目标和挑战, ...

  9. 【福利赠书】有人说,测试驱动开发已死?(文末赠书3本)

     友情推荐一本测试领域的教科书:(文末送3本) < 测试驱动开发:入门.实战与进阶>,英文原书名为<Learning Test-Driven Development >,是一本 ...

最新文章

  1. Apache POI和EasyExcel 第三集:Apache POI的Excel大数据量写入(分为03版的xls、07版的xlsx、升级版SXSSF)
  2. diou ciou torch
  3. arcgis 卸载和注册表相关总结
  4. [bbk2908]第4集 - Chapter 03 - 介绍RAC的体系结构
  5. Ubuntu-16.04安装Xdebug-2.2.5及相关介绍
  6. The following tasks did not complete: first Did you forget to signal async completion?
  7. Hive(四)——数据操作
  8. Spring_02 注入类型值、利用引用注入类型值、spring表达式、与类相关的注解、与依赖注入相关的注解、注解扫描...
  9. 《算法导论》第四版 电子版 全网第一时间发布eBookhub
  10. xshell5 可用注册码
  11. Spring Cloud 快速入门指南(一)
  12. 关于《小萝莉的猴神大叔》些许体会
  13. 苹果企业账号发布APP详解——通过自己网站分发应用
  14. 破解服务中共性问题的繁琐处理方式——接入 API 网关
  15. excel和python建模_如何用Python提高办公(Excel)效率?
  16. 3dmaxobj导出选项_3dmax导出obj没有贴图该怎么办
  17. Promise 多接口同时调用
  18. 计算机系给未来的自己写信,给未来的自己写信
  19. 【elementui】走马灯自适应图片高度宽度 走马灯图片显示不全
  20. #Sora#peewee plus celery = ?

热门文章

  1. 翟山鹰“生态宇宙”重磅首发 缔造超级共赢生态
  2. C#_深入理解Unity容器
  3. 花卉培育信息管理系统设计与实现
  4. Go 语言中的switch分支
  5. Kaggle教程 机器学习中级7 Data Leakage
  6. UG NX二次开发(C#)-装配-删除阵列矩阵
  7. 如何使用mtPaint制作像素艺术和GIF动画
  8. 微信公众号java开发沉淀(五)推送群发消息
  9. 储备物资管理局计算机,国考报名税务过审居首 储备物资管理局最抢手
  10. DOM及DOM二级事件