Autosar CAN开发02(入门Autosar)

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工程师都能去应聘。

认识Autosar 开发

首先,我们要知道:Autosar开发,使用的是行业认可的公司的Autosar工具链进行开发的。比如Vector啦、EB啦、Mentor啦等等。这些工具链价格昂贵,一提就是多少百万啥的...

那么,这些工具链买回来都有啥东西呢?

下面红框的就是了:

那么,Autoasr BSW开发是要干啥呢?

主要其实就是干上面图中的这两个事情(当然了,还有部分手写代码的):

好了,知道Autosar BSW开发是干啥的之后,那要怎么入门开发呢?(入门方式千千万,这里我只知道我自己这一种啊)

踏入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通讯开发具体要干的活了。

发表日期:2023.12.18

朋友们,关注下我呀,我以我过来人,再用小白的角度认真写的知识总结一定让你的脑子饿肚子进来,扶墙出去...

返回目录:

Autosar BSW 开发笔记(目录)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/270086.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

说个真事,裁员真的会降本增笑

最近互联网公司放烟花的次数有些高,基本都扎堆 Q3~Q4 出现各类事件/事故。吃瓜都快跟不上了。 作为互联网民工,为什么裁员后会导致降本增笑呢?今天我们一起来聊聊。 各种事故烟花 现阶段各大厂都领上号了,阿里先崩,…

CEC2013(python):六种算法(RFO、PSO、CSO、WOA、DBO、ABC)求解CEC2013

一、六种算法简介 1、红狐优化算法RFO 2、粒子群优化算法PSO 3、鸡群优化算法CSO 4、鲸鱼优化算法WOA 5、蜣螂优化算法DBO 6、人工蜂群算法 (Artificial Bee Colony Algorithm, ABC) 二、6种算法求解CEC2013 (1)CEC2013简…

Java中的内部类、枚举

内部类、枚举 内部类成员内部类静态内部类局部内部类(不重要)匿名内部类(重要)什么是匿名内部类使用场景 枚举类什么是枚举类枚举类的特点枚举类提供的一些额外API拓展:抽象枚举使用枚举类实现单例设计模式 常见应用场…

部署谷歌的Gemini大模型

前言 本文将介绍如何使用Docker、Docker-Compose私有化部署谷歌的Gemini大模型,以及没有服务器的情况下如何使用Vercel来部署。 Demo: 使用新加坡云服务器部署:Gemini Pro Chat (snowice.eu.org) 使用Vercel部署:Gemini Pro Chat (snowice.eu…

【美团大数据面试】Java面试题附答案

目录 1.多线程代码示例 2.单例代码示例 3.LinkedBlockingQueue原理解析 4.模板设计模式讲解 5.生产者-消费者队列设计方法 6.堆内存和栈内存的区别 7.ThreadLocal底层机制 8.synchronized原理,存在的问题,解决方案 9.volatile使用场景和原理&am…

一篇讲透:箭头函数、普通函数有什么区别

前言 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步! 🍅 个人主页:南木元元 目录 什么是箭头函数 箭头函数和普通函数的区别 更简洁的语法 箭头函数…

【WPF.NET开发】数据绑定应用场景

目录 1、实现属性更改通知 示例 2、双向绑定​​​更新源 示例 3、对分层数据使用主-从模式 示例 4、对分层 XML 数据使用主-从模式 示例 5、绑定两个控件的属性 示例 6、创建和绑定到 ObservableCollection 示例 7、使用 XMLDataProvider 和 XPath 查询绑定到 XML…

Java@RequestParam注解和@RequestBody注解接收参数

目录 Java后端接收数据 第一章、后端不写任何注解情况下接收参数1.1)后端不写注解postman发出get请求1.2)后端不写注解postman发出post请求 第二章、后端写RequestParam注解接收参数2.1)postman发出post请求2.2)postman发出get请求…

锂电池搅拌机的设备健康管理解决方案

随着电动车辆和可再生能源市场的迅速发展,锂电池作为一种重要的能源存储产品,正变得越来越重要。而锂电池搅拌机作为锂电池生产线中的核心设备之一,其正常运行对于生产线的高效稳定至关重要。为了确保锂电池搅拌机的可靠性和设备寿命&#xf…

SQL进阶理论篇(二十一):基于SQLMap的自动化SQL注入

文章目录 简介获取当前数据库和用户信息获取MySQL中的所有数据库名称查询wucai数据库中的所有数据表查看heros数据表中的所有字段查询heros表中的英雄信息总结参考文献 简介 从上一小节,可以发现,如果我们编写的代码存在着SQL注入的漏洞,后果…

android内存管理机制概览

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、相关概念3.1 垃圾回收3.2 应用内存的分配与回…

crtc 原理

CRTC Streams the framebuffer following the screen’s timings Driving screens : the CRT ControllerDriving screens : the CRT Controller Streams the framebuffer following the screen’s timings After each line, the CRTC must wait for the CRT to go back to th…

GoDance分布式搜索引擎项目

目录 前言一、布尔模型二、 实用评分函数1. 查询归一化因子2. 协调因子3. TF-IDF3.1 TF3.2 IDF3.3 字段长度归一值BOOST 4. 向量空间模型具体方案 三、按受欢迎度提升权重四、实时搜索与相关搜索五、具体实现方案1. 布尔模型2. 评分函数3. 实时相关搜索 前言 5月6日参加了字节…

<script setup> 的作用

一、使用<script setup> 之后&#xff0c;就不需要手动写以下代码&#xff0c;只要写逻辑代码 未加setup&#xff0c;vite 工程要加上下面代码 *export default{ * setup(){ * //只要写逻辑代码 * return{***} * } * } 加了setup &#xff0c;export default 、…

doris基本操作,05-Rollup

简述 Rollup类似于mysql的视图&#xff0c;区别在于视图并没有将数据独立存储&#xff0c;视图是逻辑上的连接。而Rollup将数据独立存储了&#xff0c;玩的是真的。当查询命中Rollup时&#xff0c;会从Rollup表里获取数据&#xff0c;提高查询效率。 操作 创建Rollup表 alt…

web自动化测试的智能革命:AI如何推动软件质量保证的未来

首先这个标题不是我取的&#xff0c;是我喂了关键字让AI给取的&#xff0c;果然非常的标题党&#xff0c;让人印象深刻&#xff0c;另外题图也是AI自动生成的。 先简单回顾一下web自动化测试的一些发展阶段 QTP时代 很多年前QTP横空出世的时候&#xff0c;没有人会怀疑这种工…

插入排序详解(C语言)

前言 插入排序是一种简单直观的排序算法&#xff0c;在小规模数据排序或部分有序的情况下插入排序的表现十分良好&#xff0c;今天我将带大家学习插入排序的使用。let’s go ! ! ! 插入排序 插入排序的基本思想是将待排序的序列分为已排序和未排序两部分。初始时&#xff0c…

【序列化和反序列化】

&#x1f341;什么是序列化和反序列化&#xff1f; &#x1f341;典型解析&#x1f341;拓展知识仓&#x1f341;如何进行序列化和反序列化&#x1f341;未实现Serializable&#xff0c;可以序列化吗? &#x1f341;典型解析 在Java中&#xff0c;我们可以通过多种方式来创建对…

java接口限流详解

目录 1.简介1.1.为什么需要限流?1.2.限流和熔断有什么区别&#xff1f;1.3.限流和削峰有什么区别&#xff1f;1.4 缓存&#xff0c;降级&#xff0c;限流简介 2.应用级限流2.1 控制并发数量2.2 控制访问速率2.2.1 令牌桶算法2.2.2 漏桶算法 3.分布式限流4.交流群 1.简介 接口…

渗透测试——1.3计算机网络基础

一、黑客术语 1、肉鸡&#xff1a;被黑客攻击电脑&#xff0c;可以受黑客控制不被发现 2、端口&#xff08;port&#xff09;&#xff1a;数据传输的通道 3、弱口令&#xff1a;强度不高&#xff0c;容易被猜到的口令、密码 4、客户端&#xff1a;请求申请电脑&#xff08;…