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博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“React学习之旅:从入门到精通的点滴感悟“

在探索和学习React的过程中,我逐渐领悟到了前端开发的魅力与挑战。React,作为Facebook推出的开源JavaScript库,以其独特的思维方式和强大的功能,引领着前端开发的潮流。在这篇文章中,我将分享我的React学习心得&#x…

test assert-01-Google Truth 断言

Truth Truth 是用于Java测试的断言框架,灵感来自于FEST,并受到一些可扩展性需求的驱动,几乎完全由谷歌员工在业余时间编写,或者作为Java核心图书馆管理员的身份做出贡献。 作用 作为工程师,我们花费大部分的时间来阅…

《C++避坑神器·二十四》简单搞懂json文件的读写之根据键值对读写Json

c11 json解析库nlohmann/json.hpp文件整个代码由一个头文件组成 json.hpp,没有子项目,没有依赖关系,没有复杂的构建系统,使用起来非常方便。 json.hpp库在文章末尾下载 读写主要有两种方式,第一种根据键值对读写&…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Progress进度条组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Progress进度条组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Progress组件 进度条也是UI开发最常用的组件之一,进度条组件…

OpenAI换血大震动始末:“ChatGPT之父”奥特曼,缘何被“扫地出门”?

近期,AI业界发生了一场“大地震”。作为聊天机器人ChatGPT的开发者,OpenAI无疑是最受关注的人工智能公司之一。就是这家公司的联合创始人、CEO、有“ChatGPT之父”之称的阿尔特曼在“疯狂的5天”里,经历了被闪电免职、加入微软、最终又官复原…

影响嵌入式项目成功的一些要素

选择了嵌入式开发这个技术领域,就相当于选择了一条充满挑战的技术开发道路。 对于工程师而言,项目的成功和失败对他们十分重要。因为一行行代码他们不知道熬了多少个通宵,脑细胞死了多少而写出来的。 如果项目失败了,就意味着辛辛…

移动开发新的风口?Harmony4.0鸿蒙应用开发基础+实践案例

前段时间鸿蒙4.0引发了很多讨论,不少业内人士认为,鸿蒙将与iOS、安卓鼎足而三了。 事实上,从如今手机操作系统竞赛中不难看出,安卓与iOS的形态、功能逐渐趋同化,两大系统互相取长补短,综合性能等差距越来越…

【Element】el-select下拉框实现选中图标并回显图标

一、背景 需求&#xff1a;在下拉框中选择图标&#xff0c;并同时显示图标和文字&#xff0c;以便用户可以直观地选择所需的图标。 二、功能实现 <template><div><el-table ref"table" :data"featureCustom2List" height"200"…

分享71个Java源码总有一个是你想要的

分享71个Java源码总有一个是你想要的 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1frK-W3GT8WrydSlQ-E3o6A?pwd6666 提取码&#xff1a;6666 UI代码 def __init__(self):import …

Text2SQL学习整理(五)将Text-to-SQL任务与基本语言模型结合

导语 上篇博客&#xff1a;Text2SQL学习整理&#xff08;四&#xff09;将预训练语言模型引入WikiSQL任务简要介绍了两个借助预训练语言模型BERT来解决WIkiSQL数据集挑战的方法&#xff1a;SQLOVA和X-SQL模型。其中&#xff0c;借助预训练语言模型的强大表示能力&#xff0c;S…

【Gitlab】CICD流水线自动化部署教程

第一步&#xff0c;准备 GitLab 仓库 这个不用多说&#xff0c;得先保证你的项目已经托管在一个 GitLab 仓库中。 第二步&#xff0c;定义 .gitlab-ci.yml 文件 在你的项目根目录中创建一个 .gitlab-ci.yml 文件。这个文件将定义所有 CI/CD 的工作流程&#xff0c;包括构建、测…

C++中的内存锁定

内存锁定(memory locking)是确保进程保留在主内存中并且免于分页的一种方法。在实时环境中&#xff0c;系统必须能够保证将进程锁定在内存中&#xff0c;以减少数据访问、指令获取、进程之间的缓冲区传递等的延迟。锁定内存中进程的地址空间有助于确保应用程序的响应时间满足实…

OCP NVME SSD规范解读-1

OCP&#xff08;Open Compute Project&#xff09;是一个由Facebook于2011年发起的开源项目。其目标是重新设计和优化数据中心的硬件&#xff0c;包括服务器、存储、网络设备等&#xff0c;以提高效率&#xff0c;降低运营成本&#xff0c;并推动技术的创新和标准化。 在OCP中&…

C++ Qt开发:Charts绘制各类图表详解

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍TreeWidget与QCharts的常用方法及灵活运用。 …

部署谷歌的Gemini大模型

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

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-5比例积分控制器Proportional-Intefral Controller

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-5比例积分控制器Proportional-Intefral Controller 消除稳态误差——设计新的控制器

AspectJ入门(一)

AspectJ是一个面向切面的框架&#xff0c;扩展了Java语言。有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。Spring的AOP底层也是用了这个框架。 AOP可以拦截指定的方法并对方法增强&#xff0c;而且无需侵入到业务代码中&#xff0c;使业务与非业务处理逻辑分离…

机器学习之实验过程01

import pandas as pd import numpy as np import matplotlib.pyplot as plt data_path /home/py/Work/labs/data/SD.csv # 请确保您的数据文件路径是正确的 df pd.read_csv(data_path) df.head() # 创建散点图 # 创建散点图 plt.figure(figsize(10, 6)) plt.scatter…

MySQL 数据库系列课程 05:MySQL命令行工具的配置

一、Windows启动命令行工具 &#xff08;1&#xff09;打开 Windows 的开始菜单&#xff0c;找到安装好的 MySQL&#xff0c;点击MySQL 8.0 Command Line Client - Unicode&#xff0c;这个带有 Unicode 的&#xff0c;是支持中文的&#xff0c;允许在命令行中敲中文。 &…

三网合一建设方案

一、什么是三网融合&#xff1f; 三网合一&#xff08;即三网融合&#xff09;&#xff0c;是指电信网、广播电视网和互联网的相互渗透、互相兼容、并逐步整合成为统一的信息通信网络&#xff0c;其中互联网是核心。只需要引入三个网络中的一个&#xff0c;就能实现电视、互联…