当前位置:首页 > 汽车电子1 > 糖果Autosar
[导读]一感慨近公司新招了一个做嵌入式软件开发开发的童鞋,该童鞋是从上海的某一个上市公司出来的,因为我们这边人手不够,因此把他安排了去负责一个新产品的研发,前期让他负责加速度计、NB-IOT、舵机、外置Flash的功能测试,测试完成之后,准备让他做一个该产品的概要设计。然后他花了2个星期...

一 感慨

近公司新招了一个做嵌入式软件开发开发的童鞋,该童鞋是从上海的某一个上市公司出来的,因为我们这边人手不够,因此把他安排了去负责一个新产品的研发,前期让他负责加速度计、NB-IOT、舵机、外置Flash的功能测试,测试完成之后,准备让他做一个该产品的概要设计。然后他花了2个星期的时间,给我们写出来一个概要设计,说实话,我看到这个概要设计,我就觉得是刚毕业的大学生写的。

版本一的架构设计

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

2.1系统体系结构        

系统分为两层:硬件驱动层、应用层。        

2.1.1硬件驱动层        

硬件驱动层包含板载硬件资源正常运行所需的所有驱动程序。        

1)MCU初始化        

2)I2C数据存取        

3)SPI数据读取        

4)加速度计初始化        

5)蓝牙模块启动        

6)BC95模块启动        

7)485通讯模块启动        

2.2.2应用层        

1)Mcu运行模式切换        

2)震动及倾斜        

3)数据解析        

4)开/关锁        

5)数据发送        

6)历史数据保存        

看到版本一的架构设计之后,说实话,我还是第一次见到这样来写架构设计的,居然是以序号来写的,这个让别人读起来,特别的别扭。  

版本二的架构设计

看到版本二的架构设计之后,虽然颇感欣慰,但是想到达到我们所要求的,还要很大的一段距离,该架构设计,主要有以下几点问题:

1.对架构的理解还不是很清晰,既然是做架构设计,那就应该从整体来看,而不是仅仅只是局限于一个模块,或者功能里面。

2.还是每个层次的理解也还不是很清晰,比如讲MCU的初始化,归于硬件驱动层里面。MCU的初始化,严格意义上来说,是属于流程的一部分了,而不是驱动。比如电脑的开启启动,把这个归于硬件的驱动里面,肯定是属于牛头不对马嘴的。

3.还有就是各个模块的启动,也是不能属于硬件驱动层的,也都是业务流程的一部分了,都不应该属于驱动层的一部分。

4.还有就是总线数据的读写,虽然驱动的作用也就是读写,但是数据总线的读写不能写成硬件驱动。

5.应用层的系统参数初始化,也还是属于流程。

6.数据的解析和数据的发生,都是属于通信功能里面的,不应该单独独立出来,属于单个的应用。

 看到这里之后,说实话,我真的很惊讶,难倒从大企业出来的童鞋,能力都是这样的吗?从大企业出来的童鞋们,工资也是要的老高老高的,难倒他们不知道,在昆明的工资,都是以K来计算的吗?在昆明能拿到8K的工资做开发的人就已经很少了。然后再到1W

以上的,童鞋们就更少了。

说实话,我们的这位童鞋,上班的时候,还经常看电子书,在实习期间还经常看电子书,我不知道,他哪来的实力,心可以放的这么宽,交代的活没有完成,还有时间来看电子书。当然托他的福,我的工资也终于涨到6K了,因为新人的工资,比老人高,

做的活还是一样的(结果一不一样我就知道了),为了考虑到老人的心里面不平衡,所以才给我加的工资的。领导们在批加工资的申请的时候,还专门把我叫去办公室,让我表决心啥的。。然后,我让他去改,把我说的这些改改,然后再看一下,还有什么问题没?结果我看他在那抓耳挠腮,还有各种叹气,然后和我说,改不了。

既然改不了,那我就只能亲自操刀上阵了,毕竟同事一场。

二、基本框架图

(1)架构设计的目的

1、应用的代码逻辑清晰,且避免重复的造轮子。

2、如果没有好的架构,移植将会是一件很痛苦的事情,因此一个好的架构设计,方便软件的移植。

3、最大限度的复用。

4、高耦合低内聚。

(2)设计思路

如何把硬件的驱动和一个功能封装成一个个的模块,然后可以像小朋友搭积木一个,一个个模块可以快速的拼接起来,组成一个个不同的模型。我们的嵌入式架构思路也是来源于此,即功能模块化设计、分层设计。这个设计和WEB开发的MVC模式类似,都是注重分层设计。

模块化设计:将收集到的需求,进行归类,总结和分析,将这些需求概括为一个个单独的功能,每一个功能,做成一个单独的功能模块。

分层设计一句话不好直接表达,其主要体现在一下几方面:

1、功能模块对外调用的模块封装成一个个API,将底层驱动做个API以供功能模块调用。(各个功能模块可以独立编译(如通信模块纯ANSI C,可在任意平台复用),或者调用驱动层接口(日志库模块调用了驱动读写Flash),总而言之,言而总之,封装出各个功能独立的可复用的功能模块。)

2、API分为驱动层API和应用层API,而不是所有程序都调用驱动层API。(整个应用中都调用驱动层API会导致应用中驱动调用随处可见,无法移植和最大限度的复用)

总体分 硬件驱动层-->功能模块层-->业务逻辑层-->应用层

总体结构示意框图:



说明:

  • 1.层与层之间不能跨层调用。

  • 2.模块与模块各自独立,无依赖关系。

  • 3.模块提供统一的接口供上层调用,模块的内外接口分明。

  • 4.模块的功能只能增,不能改。

  • 5.各个功能模块层也还可以进行继续分层,比如接口层、驱动层、硬件层。

(3)模块层次说明

  • 硬件驱动层
硬件驱动层包含板载硬件资源正常运行所需的所有驱动程序并提供API给功能模块调用。

  • 功能模块层
功能模块层包括实现具体功能的函数,通过调用驱动层API实现相应功能,同时提供可调用的API给业务逻辑层。

  • 业务逻辑层
业务逻辑层包括产品整体功能的各个业务流程,通过调用功能模块层的API实现。

  • 应用层
应用层将各个业务逻辑进行整合调用,完成整个产品的功能。

(4)优势

如果驱动变动了,或者换不同平台,只需更改驱动层,应用层不受影响。如果功能模块变动了,只需升级相应的功能模块,其他的模块不受影响,应用层也不受影响。按照这种逻辑设计好之后,主要的工作就是在业务逻辑层。应用层则为程序的总体流程和框架,主要调用业务逻辑层实现不同的功能。

 


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭