编辑推荐: |
本文主要介绍了AUTOAR
CP入相关知识。希望对你的学习有帮助。
本文来自于微信公众号汽车电子与软件,由火龙果软件Linda编辑,推荐。 |
|
我毕业后便在一家南方的新能源企业做Autosar开发。这个岗位工作是使用Vector工具链进行Autosar架构中的BSW层CAN通讯开发。
后来在不断熟悉后了解到公司的软件开发分工是这样的:
可以看出来,项目的分工特别细。
这样的开发模式对我来说,说实话我也不知道到底是好还是坏。
要说好吧,分工太细了,导致2年后我找工作比较费劲。
说不好吧,由于在Can通讯开发领域耕耘的比较久,自然也就更加深入,所以一个项目的Can通讯开发从需求、到方案、到开发、到测试、最后再到客户问题处理。一整套流程我都特别熟悉,且与Can通讯相关的问题我大部分都能够独立解决了。
由于在做开发过程中我发现,很多之前一段时间做过的东西,过一段时间就忘记了。比如刚毕业的干了半年,然后过年放个10几天的假,本来才干的不久很多东西还没深刻记忆,然后感觉放假回来就不会干活了。
所以,我想着尽量多地把学过的东西记录下来,而我本身也是从一个小白开始学习,所以这些历程可能对有同样经历的人有所帮助,特分享给大家。同时也欢迎大家对文中不完善之处给予指正。
第一篇 AUTOAR CP入门
01.
关于AUTOSAR
关于Autosar,可能听过这个的朋友或多或少的知道,这个东西的工具链有一个非常恶心人的特点:很贵,只有大公司玩得起。
所以,这也导致了Autosar资料很少、Autosar开发入门困难。
但是,其实Autosar架构它只是一个标准,是免费的,整个Autosar的标准你是可以直接到人家Autosar的官网下载的:
https://www.autosar.org/
所以,贵的并不是Autosar,而是西方一些企业按照Autosar标准设计出来的代码很贵。
另外,由于Autosar架构下各个模块下的各种功能不是所有场景都用得上的,而是针对不同的情况,需要使用不同的功能,因此卖Autosar代码给你的企业还会卖一些配置工具给你,让你能够通过配置代码去开启或关闭一些功能。
而能够弄出这些代码和工具、并且推广到全世界大大小小的车企和供应商都使用的企业并不多,在行业内大家说来说起都是那么几家,比如国产的东软睿驰、普华、恒润,国外的Vector、ETAS、EB、Mentor等。
02.
Autosar架构有啥用
要知道Autoasr架构有啥用。首先要知道车企和汽车零部件供应商最关心的东西是什么?
安全、成本。
关于安全:或许你会说:买人家这么贵的东西干啥?难道Autoasr架构未出来之前车就不安全啦?只要我们公司的标准定的够好,写出的代码够完美,测试足够,层层把关,车就是一定安全的。
是的,你说得没错,你一整个企业确实可以保证生产出来东西是百分百安全的。
但是,一辆汽车成百个的汽车零部件,它们来自各个不同的零部件供应商,而每个供应商生产的零部件软件代码都是由不同的软件工程师写的,每个工程师都有自己的想法。
所以,一个通用的代码功能,会出现各种实现方式,谁能保证所有实现方式都没问题?因为这个原因,每个企业又得投入多少精力和时间去规避各种由于人为因素导致的问题。
关于成本:其实,如果不考虑Autosar工具链的购买成本,Autosar架构的使用是能够降低很多成本的:
1、没有Autosar架构的时候,每个软件工程师都按照自己的想法写代码,当项目搞到一半,这个工程师就跑路了,别人接手就要费很长时间成本了(时间就是金钱呐),项目没直接黄掉都不错了。而有了Autosar架构,由于大家都是按照这个架构弄的代码,懂这个的人多了,用人成本就下来了,而且如果项目中一个人跑路了,下个人只要懂Autosar,可以立马接手,成本自然就下来了。
2、还有代码复用问题,没有Autosar架构的时候,如果企业自己的软件架构不够成熟,各个模块耦合性太高,最后搞得每个项目的代码复用率很低,这成本又上去了。
只不过现在大部分企业的Autosar的工具链的购买成本,可能已经超过了不用Autosar架构直接手写代码的成本了。。。
所以,如果不考虑它的购买成本,仅从这套Autosar架构来说,它真的太有用了。
03.
Autosar工具链为什么这么贵?
有人说,这是因为国外的Autosar起步早,人家搞好了Autosar工具链,我们落后,我们就要挨打。
其实,并不是这样。
前面也说了,Autosar规范是一个标准,免费的,我们中国这么大,难道做不来这样的一套代码和配置工具?
当然做得来了,而且如果要做,要多少套工具链,就能有多少套工具链。
但是再想一想,对于汽车,人们最关心的东西是什么?
安全、安全、还是特么的安全。
由于汽车行业的这个特殊性,车企都是几乎是没有试错成本的,一旦出现一点安全问题,是非常严重的。
这也决定了,其实在全世界范围内,就不会出现很多套Autosar的工具链(除非抄袭套壳)。
因为,没有试错成本啊!
所以,一套工具链要被行业内认可,必须经历丰富的市场验证,基本保证100%没有问题,这样才会有企业愿意用。
而由于Autosar是西方先搞出来的 ,他们是Autosar的先行者,他们的工具链已经经历了无数的市场验证,行业内都是认可的,基本百分百是安全的。
所以,国外的车企和供应商大家都用这么些他们自己的工具链。
如果你想成为他们的供应商,他们就会问你:你的代码是用Autosar架构吗?用的是Vector公司的Autosar工具链(或者XXX工具链)吗,不是的话,我们不跟你们玩哦。
试想,这时候,中国供应商跟国外车企说:西方朋友啊,我们中国也有Autosar工具链的呀,我用我们国内的工具链开发代码,然后跟你们合作可以吗。
然后他们就会说:对不起了,中国朋友,我们只认可这几家的Autosar工具链。因为他们没用过,别说他们没用过,国内的企业也没几个会用,所以他们不信任这新出现的工具链啊。
好在这个情况,近1-2年已经有了改观,随着国内汽车技术创新的崛起,中国从整车到供应链已经具备了相当强的竞争力,其中国产AUTOSAR供应商也有了跟国际厂商掰手腕的实力。今年的上海车展上,就看到ZF跟国产的东软睿驰NeuSAR签了战略合作。而且AUTOSAR还涉及大量的工程服务,需要大量的人员投入,这一点咱国产的还是有优势的。
好了,关于Autosar的简单介绍就到这里了,接下来我就说下我是怎么进入Autosar开发的大门的。
04.
Autosar架构
想起当时刚毕业进入公司之后,我的岗位是Autosar Bsw软件工程师。
看着这个什么“Autosar”,真的是一脸懵。
后来才知道,按照我的理解:Autosar就是一个软件架构。它分为ASW和BSW。ASW负责实现应用层功能(即产品的功能),BSW提供底层服务(比如提供解析好的CAN数据给应用层)。
如下图所示
ASW
在我看来,ASW其实与Autosar关系并不大,从上面那张图你也看到了,ASW只有最上面那一层。
搞Autosar ASW开发,实际上就是开发产品的功能。比如,你目前的工作是搞摄像头功能开发,你下一份工作,是不是只能去找搞摄像头产品的企业?因为你平时做的工作其实是实现摄像头的功能,比如摄像头算法啥的,与Autosar没有关系。
BSW
而BSW开发,才是真正搞Autosar架构的开发。
这个岗位的就业面就没有搞ASW那么狭窄了,Autoar BSW开发并不受限制于产品。
原因很简单:BSW是提供底层服务的,汽车上大把的产品需要用CAN通讯、以太网等等,所以,只要是用到Autosar架构的项目,无论是什么产品,Autosar
BSW工程师都能去应聘。
05.
认识Autosar 开发
首先,我们要知道:Autosar开发,使用的是行业认可的公司的Autosar工具链进行开发的。这些工具链价格昂贵,一提就是多少百万啥的...
那么,这些工具链买回来都有啥东西呢?
下面红框的就是了:
那么,Autoasr BSW开发是要干啥呢?
主要其实就是干上面图中的这两个事情(当然了,还有部分手写代码的):
好了,知道Autosar BSW开发是干啥的之后,那要怎么入门开发呢?(入门方式千千万,这里我只知道我自己这一种啊)
06.
踏入Autosar开发
回想起当初学习正点原子的开发板的教程(应该好多人都是从正点原子入坑嵌入式软件的)。
他是咋教我们学习嵌入式的呢?他教我们怎么去配置引脚的IO口,配置IO口的模式,什么上拉输出啥的。学习定时器的时候,一大堆关于定时器的讲解和配置一大堆定时器的参数。
简单来说就是:他教我们从配置驱动开始(我不是指正点原子这样教不好哦,对入门学习的在校学生来说,按照正点原子这样学习是最好的方式,根基也是打得最牢固的)。
但是,入门学习Autosar底层(CAN通讯)的方式,就并不是这样了。
而是反过来:从上层的逻辑,到底层的驱动,拆成Autosar架构的话,是下面图中这样的:
(说明:我们现在先不用深究下面这张图的各个模块、各个模块干啥的,我们这里只是入门,没必要一下看这么多东西)
如上图所示,我们先学习CANIF到APP之间的东西(CAN中断入口函数往上的东西),最后才是学习CAN驱动往下的东西。
可能你觉得:这真的是瞎说!我且不管上面的东西,驱动不搞好,上面的东西全都用不起来,这个搞个锤子!
虽然情况确实是这样:驱动不行,上层功能全废。
但是,我只是一个啥也不懂的小白啊!你知道驱动有多难嘛?就感觉它是完全没有逻辑性的,完全得看经验积累。比如CAN驱动:我要怎么样才能在不知道有CAN中断源的情况下,知道有CAN中断源这个东西?并且学会去配置它?
所以,如果一上来就叫我配驱动,我可能就不会在这里写这篇文章了。
我也比较幸运,毕业之后,入职的企业软件开发分工比较细,Autosar BSW开发分好几个岗位:CAN通讯开发、驱动和系统服务开发、诊断开发等等。
我的岗位就是CAN通讯开发,因为我入职时,公司的几个项目已经是处于维护阶段,所以驱动部分早就是由负责驱动的同事搞好了。
那么我干啥呢?如下面图所示,两年里,就是不断在干下面这个流程的事情:
换句话说,我的工作内容一直是“CAN中断入口函数往上的东西”。相比于驱动,这些都是一些有迹可循的东西啊,CAN中断函数进来以后,会把数据给进来:一个指向数据的指针。那么,这时候,给你一块板子,给你一个仿真器,你自己跟着这个数据链走,一步一步往上调试,你是自己就能知道这个数据去哪里了。
所以,按照这样的学习流程,只要给一点时间,就能自己完全捋顺Autosar架构中的CAN通讯了。不用别人教你,不用怎么看规范,你直接自己就大致明白了CANIF、PDUR、COM等等这些Autosar架构中的模块的作用。
而且,CAN和很多模块都是有交互的,在学习CAN模块的过程中,就会学到网络管理、学到网络管理就会涉及到休眠唤醒、涉及到休眠唤醒又会涉及到CAN收发器、CAN控制器等等。
所以,虽然岗位主要是CAN通讯开发,但是,是会在这个CAN通讯开发的过程中不断接触其它东西, 等积累多了,CAN驱动就自然而然的学会了。这就是为什么Autosar驱动工程师这么吃香的原因,完全是经验积累出来的。
总结来说,我认为入门的人,唯一有的东西,其实就是自己的逻辑思维,而刚好Autosar架构下CAN的各个模块是有逻辑联系的,跟着这些逻辑联系慢慢摸索,就学会Autosar这个东西了。
结束
好了,了解完什么是Autosar和怎么入门Autosar,下面的文章就是讲CAN通讯开发具体要干的活了。
|