完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、前言
小生做MCU方面的开发已经很多年了,记得当初开始做项目的时候,实现功能就是我的目标,基本不会关注其它方面,功能的实现已经够让我折腾的了,也没有多少精力关注其它方面,后面慢慢对代码风格、编码规范有一定的讲究,有些代码看起来令人赏心悦目,而有些却不忍直视,再后来发现有些功能模块在一个产品上做了,然后换一个平台(mcu)后,又得调一遍,有些甚至调了一遍又一遍,多几次之后真是烦躁,哲学上有句话叫"人不能两次踏入同一条河流",而我却是一个坑踩了一次又一次,直到实在受不了了,我决定"再也不踩了",于是,软件框架设计思想慢慢浮现,从此,我一直基于软件框架开发,分层设计,低耦合高内聚,一个模块在一个产品上开发了,在另一个产品上基本可以直接拿过去用,避免了重复造轮子,开发速度直线上升,并且后期维护也是轻松方便,从此达到了人生巅峰!现在留下些许记录,当然有些也是参考了网友的! 二、为何要进行嵌入式软件架构设计 1、如果没有好的架构,移植将会是一件非常痛苦的事情。 2、如果没有好的架构,复用是不存在的,至少不能最大限度的复用原有的代码。 3、如果没有好的架构,一旦某处修改了,其它很多地方都要改,费时费力且很容易出错。 4、如果没有好的架构,与硬件相关的代码随处可见,看着会很混乱,维护起来非常困难。 5、要做到嵌入式软件逻辑清晰,避免重复造轮子,不断迭代积累,需要有好的软件架构。 三、如何进行嵌入式软件架构设计 首先,说到架构,你会想到什么?像建造一栋楼盘一样,首先要打地基,并且地基要打的牢靠楼盘才能建的高,抗自然灾害(地震、台风等)抗风险能力才更强,然后钢筋、水泥、预制板像堆积木一样,一层一层的造起来… 目前很多优秀的软件都是有框架的,像linux,android等,其框架都是非常清晰,层次化分明的,在其上开发也是需要了解其框架,也只有了解了其框架才能按其套路轻松的开发,因为了解了那些框架就相当于站在了巨人的肩膀上. 我们的嵌软架构也类似房屋建造与积木搭建,也是基于这种分层与模块化的思想,上层是建立在下层的基础之上,模块与模块之间相互独立、互不影响,具体分为驱动层(也叫BSP层), 模块层、逻辑层、应用层、加上各平台的HAL层(硬件抽象层)共五层,另外一列是公共的库、算法等文件以及操作系统,俗称"五横一纵"!如下图所示: 应用层:为程序的总体的运行框架,组织调用业务逻辑。可以用某种嵌入式操作系统(freeRTOS、rt-thread等)实现几种任务 ,如定时任务,电机控制任务,故障监测任务,耗时处理任务等。 业务逻辑层:如画图处理,底盘运动处理,手臂运动处理,电池信息处理,自动充电处理等。 功能模块层:可以封装不同的功能模块。如gps模块,wifi模块,tof模块,蓝牙模块等,向下调用驱动层接口,向上为应用接提供接口,模块之间尽量不要相互调用,做到低耦合,高内聚。 BSP层:也叫板级支持包层,由各个外设驱动组成,如gpio、timer,uart、iic、spi、dma、irq等外设的操作与控制,向上提供统一的接口。 HAL层(硬件抽象层):这层包含的是原生的芯片厂家官方库,像STM32标准/HAL库,NXP官方库、TI库等 注:功能模块层之上可以增加一个应用接口层,提供公共的api接口供上层调用。这些接口也可由下层的功能模块开放出来,应用接口层负责汇总。(一个文件就可以搞定,一般顺带放在业务逻辑层) 四、需要严格遵循的原则 1.每个模块提供出的接口要统一,后续只能增,不能改原来的接口(向后兼容)。 2.模块与模块之间相互独立,互不影响,不能相互调用,只能调用它下层的接口(高内聚低耦合)。 3.由模块构成层,层与层之间不能跨级调用。如在应用层中不能看到直接调用驱动层的代码。 4.模块中又可以继续分层,如硬件层、驱动层、接口层。 方便后续模块硬件更换。 如果驱动变动了,或者换不同平台了,只需更改驱动层,应用层不受影响。 如果功能模块变动了,只需升级功能模块,其他的模块不受影响,应用层也不受影响。 |
|
|
|
只有小组成员才能发言,加入小组>>
2435 浏览 0 评论
9100 浏览 4 评论
36773 浏览 19 评论
5026 浏览 0 评论
24745 浏览 34 评论
1531浏览 2评论
1747浏览 1评论
2197浏览 1评论
1556浏览 0评论
526浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 08:09 , Processed in 1.611367 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号