良许Linux教程网 干货合集 嵌入式软件分层和模块化

嵌入式软件分层和模块化

嵌入式开发在掌握基本编程语法之外,编程思想也是非常关键的。接下来,我将讨论两个与编程思想相关的要点。

1. 分层思想

在嵌入式开发中,分层思想是一种常见的软件设计方法。也许你对此并不熟悉,但你肯定见过很多类似下面这样的软件结构图。

举例来说,我们可以看一下RT-Thread Nano内核的结构图:

image-20230728212422728
image-20230728212422728

STM32Cube软件结构:

image-20230728212425922
image-20230728212425922

这种软件结构图,里面的东西可能有点多,可能你也看不懂。

但是,只要你仔细一看每个区域的划分,你就会发现,它们是把软件划分了多个区域,这里其实就是一种分层的思想。

举一个例子:一个遥控器控制一个小车运动,包含遥控器的按键(比如:前后左右),无线通信(比如:433),小车无线接收,电机驱动、电机控制算法等。

遇到这种嵌入式软件开发,你会怎么编程?

**1.底*层*驱动*层*

小车部分:电机驱动(比如IO时钟、PWM配置)封装成一个函数、433驱动封装成一个函数。然后把这两个函数整理在一个Driver(驱动)函数。

遥控部分同理:按键驱动(比如IO时钟、配置)封装成一个函数、433驱动封装成一个函数。

2.中间层

这里比如你电机用到了加减速、左右转向的一些算法,封装成对应Middleware中间层模块函数(待应用层调用)。

3.应用层

应用层就考验你业务逻辑的一层,也是整合软件资源的一层。如果你代码层次画分的话,业务逻辑代码就很容易。

反之,你代码很乱,要实现一个业务逻辑,可能连续加班多天,最后写出来的代码也是bug无数。

2模块化

嵌入式编程,模块化相当重要,可以说,它会影响你代码质量、加班多少、甚至升职加薪。

还是上面那个例子:

一个遥控器控制一个小车运动,包含遥控器的按键(比如:前后左右),无线通信(比如:433),小车无线接收,电机驱动、电机控制算法等。

如果你把所有代码都写在main函数,你说能实现吗?当然,肯定也能实现。

**
**

但是,你这样写,你的业务逻辑代码是不是很废脑、很费时间?

还有,你后续加修改按键方式、添加功能,你该怎么办?

所以,你需要模块化编程,把一些小模块分别封装成函数,提供给对应的应用层调用。

上面其实也说了:电机驱动(比如IO时钟、PWM配置)封装成一个函数,这其实就是一个小模块。

当然,这里的驱动函数只是一个小模块,然后还需要进一步封装成“大模块”。

比如:我这里还引入一个编码器,闭环检测电机速度,通过底层电机驱动、加减速算法,编码器等整合成一个电机运动的函数(模块):MOTOR_Ctrl(速度,方向)。这就是一个大模块(当然,还可以结合需求再进一步封装)。

最后,还有很多重要的编程思想,需要开发者了解并掌握,在一定程度上,你的编程思想决定了你是新手级别,还是大神级别

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部