ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

【AUTOSAR 从 0 到 1】100 篇完整学习路线

【AUTOSAR 从 0 到 1】100 篇完整学习路线 这是「车控码农」AUTOSAR 从 0 到 1 系列的总目录。如果你刚开始接触 AUTOSAR不知道从哪里学如果你已经进了项目却每天被 EcuM、BswM、ComM、CanSM、RTE、ARXML 这些缩写绕晕如果你零零散散看了很多文章却始终没办法把一个完整 ECU 串起来——那这个系列就是为你准备的。为什么要做这个系列这几年AUTOSAR 相关资料其实已经不算少了。在 CSDN 搜AUTOSAR EcuM BswM ComM CanSM CanNm RTE MCAL DCM DEM NvM基本都能找到对应的文章。但真正开始系统学习之后很容易碰到几个问题。第一个问题是很多文章是零散的。今天搜到了 EcuM。明天搜到了 CanNm。后天又开始看 RTE。每篇文章单独看好像都能看懂一点。但真正回到项目里看着整个工程目录EcuM BswM ComM CanSM CanNm CanIf PduR Com Dcm Dem NvM Rte SchM Os Mcal ...还是不知道这些东西到底是怎么串起来的第二个问题是现在很多 AUTOSAR 相关内容已经逐渐变成会员可见 VIP可见 付费阅读 专栏购买这件事情本身没有问题。整理技术内容需要投入大量时间作者为自己的知识付费完全合理。但如果你只是一个刚刚开始接触 AUTOSAR 的工程师问题就来了。你甚至还不知道EcuM到底是干什么的 ComM为什么存在 CanSM和CanNm有什么区别 CanIf和Can Driver为什么不能合成一个模块 RTE到底解决了什么问题 ARXML为什么满工程都是这个时候让你先买一堆专栏门槛其实还是有点高。更麻烦的是你还不知道应该先学什么。于是很容易陷入一个循环搜一个问题 ↓ 看一篇文章 ↓ 又出现三个新名词 ↓ 继续搜 ↓ 再出现五个新名词 ↓ 越看越多 ↓ 反而越来越乱这其实也是很多 AUTOSAR 初学者真正痛苦的地方。不是资料少。而是缺少一条完整的学习路线。所以我想把这件事情重新做一遍这个系列计划写100 篇从最基础的问题开始。不是一上来就让你背 AUTOSAR Specification。也不是第一篇就告诉你CanIfTxPduCfg CanIfHrhCfg CanIfHthCfg CanIfBufferCfg应该怎么配置。而是先解决最基本的问题AUTOSAR到底是什么 ↓ 一个ECU软件到底长什么样 ↓ MCAL、BSW、RTE、ASW分别在哪里 ↓ ECU上电以后代码是怎么跑起来的 ↓ CAN报文是怎么从ASW走到总线的 ↓ CAN报文又是怎么从总线走回ASW的 ↓ ECU为什么能被CAN唤醒 ↓ 为什么有时候明明想休眠却睡不下去 ↓ UDS请求进入ECU以后发生了什么 ↓ DTC是怎么产生和存储的 ↓ 掉电以后数据为什么还能保存 ↓ Runnable到底是怎么真正运行起来的把这些东西一层一层串起来。最终希望做到一件事当你再次打开一个 AUTOSAR ECU 工程的时候不再只是看到一堆模块名字。而是能在脑子里面形成一张完整的软件架构图。这个系列会不会收费目前这个系列的定位很简单尽量降低 AUTOSAR 的入门门槛。所以从 0 到 1 这一整套基础系列会以开放阅读为主。我更希望它能成为一套真正可以从01开始 ↓ 一直看到100的完整学习资料。而不是看到第 3 篇之后告诉你后面的关键内容请购买专栏。AUTOSAR 本身已经够复杂了。入门这件事情就尽量别再搞得更复杂。当然这并不意味着文章只讲很浅的概念。随着系列往后推进会逐渐进入MCAL EcuM OS CAN通信栈 ComM CanSM CanNm Partial Networking DCM DEM NvM RTE SWC E2E XCP CANoe测试 ECU集成后面也会越来越接近真实项目。为什么公众号会优先更新这个系列会同步更新在微信公众号车控码农和CSDN之所以会优先在公众号更新其实原因很简单。平时微信用得更多。不管是在公司通勤、吃饭、等人还是晚上回家以后拿手机直接看一篇文章会方便很多。所以后续大部分新文章会先更新到公众号车控码农然后再同步整理到 CSDN。CSDN 这边会更多承担系列沉淀长期检索完整目录技术代码配置说明上下篇导航如果你希望第一时间看到后续更新也欢迎关注公众号车控码农不一定每天更新。但会认真把这 100 篇写完。这个系列适合谁如果你属于下面几种情况这套内容基本都可以直接往下看。1. 刚接触 AUTOSAR甚至还分不清MCAL BSW RTE ASW分别是什么。没关系。从第一章开始。2. 已经开始做 AUTOSAR 项目每天在 DaVinci Configurator 里面配各种 Module。参数配了不少但很多时候不知道为什么这样配。比如为什么要有CanIf 为什么COM下面还有PduR 为什么ComM和CanSM都在管通信 为什么EcuM又要管Wakeup这种情况也很适合从头梳理。3. 从传统嵌入式转汽车软件以前可能做过STM32 裸机 FreeRTOS CAN SPI ADC PWM Bootloader代码都会写。但是第一次进入 AUTOSAR 工程以后感觉“以前一个函数能搞定的事情为什么现在要绕这么多层”这个系列会重点解释AUTOSAR 为什么要这么设计。4. 做 ASW但想看懂 BSW很多 ASW 工程师平时接触最多的是Rte_Read()Rte_Write()再往下就比较少碰了。但项目一旦出现CAN收不到 报文超时 网络休眠失败 唤醒失败 NvM保存失败 诊断不响应 Runnable没有执行很多问题都会跨到 BSW。理解底层以后排查问题会轻松很多。5. 做 BSW但想把完整 ECU 串起来会配置某一个模块不等于理解整个 ECU。真正有价值的是知道当某个现象发生的时候应该顺着哪条链路排查。这个系列后面会非常强调这一点。100 篇完整目录下面就是整个「AUTOSAR 从 0 到 1」系列目前规划的完整路线。第一章先建立 AUTOSAR 世界观 0110这一章先不急着配参数。第一件事情是把 AUTOSAR 整个世界先看明白。#文章01AUTOSAR到底是什么为什么汽车ECU越来越离不开它02AUTOSAR Classic、Adaptive和传统嵌入式开发有什么区别03一张图看懂AUTOSAR Classic完整软件架构04MCAL、ECU Abstraction、Service Layer、RTE、ASW到底是什么关系05一个ECU软件到底由哪些部分组成06BSW工程师、ASW工程师、MCAL工程师每天到底在干什么07AUTOSAR里的SWC到底是什么08AUTOSAR里的ARXML到底是什么为什么到处都是ARXML09DaVinci Developer和DaVinci Configurator分别是干什么的10从需求到代码一个AUTOSAR ECU完整开发流程是什么样的第二章搭建第一个 AUTOSAR 工程 1120认识完架构以后开始真正进入工程。这一章重点解决一个 AUTOSAR ECU 工程到底是怎么被建立起来的#文章11从0创建一个ECU工程我们到底需要哪些软件和文件12ECU Extract、System Description和ECUC分别是什么13第一次打开AUTOSAR工程工程目录应该怎么看14AUTOSAR配置工程中为什么有这么多Module15什么是Post-Build、Pre-Compile和Link-Time配置16AUTOSAR代码是怎么生成出来的17Generated Code和手写代码应该怎么划分18SchM、RTE、BSW之间是怎样连接起来的19AUTOSAR工程从配置到编译经历了什么20第一次Build ECU从ARXML到HEX完整链路第三章ECU 启动与操作系统 2130很多人会配通信、会写 ASW。但如果问ECU 上电之后到底先执行谁往往就开始模糊了。这一章专门把 ECU 启动过程拆开。#文章21ECU上电后的第一行代码到底从哪里开始执行22Startup Code在AUTOSAR工程里负责什么23EcuM是什么ECU启动和关闭的总导演24EcuM初始化过程逐步拆解25DriverInitList到底决定了什么26AUTOSAR OS是什么和FreeRTOS有什么区别27Task、Alarm、Counter和Schedule Table是什么281ms、5ms、10ms任务是怎么跑起来的29ISR与Task之间到底是什么关系30从上电到ASW Runnable第一次执行ECU经历了什么第四章MCAL 从 0 到 1 3140这一章开始真正接触 MCU 硬件。从 Pin、ADC、PWM一直讲到 CAN Controller。#文章31MCAL到底是什么为什么它决定了AUTOSAR能不能跑起来32Mcu模块时钟、PLL和MCU初始化33Port模块一个MCU Pin到底如何配置34Dio模块如何控制一个真正的数字IO35Adc模块从ADC引脚到应用层电压值36Pwm模块AUTOSAR如何产生PWM波形37Icu模块如何检测频率和占空比38Spi模块AUTOSAR SPI通信完整链路39Can DriverCAN控制器究竟是怎么工作的40Wdg模块看门狗到底应该怎么正确使用第五章CAN 通信栈从 0 到 1 4155这一章会是整个系列非常重要的一部分。因为在汽车 ECU 开发里面CAN 几乎一定绕不开。而 AUTOSAR CAN 通信栈也是最容易把初学者绕晕的地方之一。#文章41一张图看懂AUTOSAR CAN完整通信栈42Can Driver和CanIf有什么区别43CanIf到底解决了什么问题44PduR为什么被称为AUTOSAR通信路由器45COM模块到底负责什么46Signal、SignalGroup、IPDU分别是什么47一条CAN报文从ASW发送到CAN总线经历了什么48一条CAN报文从CAN总线进入ASW经历了什么49Tx Mode周期发送、事件发送和混合发送50Update Bit到底有什么作用51Timeout Monitoring是怎么判断报文超时的52COM Filter到底在过滤什么53DBC、ARXML和AUTOSAR Signal之间是什么关系54CAN收不到报文时应该按什么顺序排查55实战从0配置一条CAN收发报文第六章网络管理与电源管理 5665这一章也是我比较想认真写的一章。因为在真实 ECU 项目里不能唤醒 唤醒后网络保持不住 一直Full Com Ready Sleep下不去 ECU死活睡不着 休眠以后静态电流过大都是非常典型的问题。#文章56为什么汽车ECU不能简单地上电开机、断电关机57ComM到底是什么AUTOSAR通信模式管理58FULL_COM、SILENT_COM、NO_COM分别是什么59CanSM到底负责什么60CanNm是什么AUTOSAR网络管理基础61Repeat Message、Normal Operation、Ready Sleep完整解析62ECU为什么明明想休眠却一直睡不下去63AUTOSAR Wakeup Source完整工作机制64什么是Partial Networking和PNC65实战ECU CAN唤醒→保持通信→自动休眠完整流程第七章诊断系统 DCM / DEM 6675从这一章开始进入汽车 ECU 另外一个绕不开的大系统诊断。#文章66UDS和AUTOSAR DCM到底是什么关系67DCM、DEM、NvM之间是什么关系68诊断请求进入ECU以后经历了什么690x10 DiagnosticSessionControl怎么实现700x11 ECUReset怎么实现710x22 ReadDataByIdentifier怎么实现720x2E WriteDataByIdentifier怎么实现730x27 SecurityAccess的完整工作流程74DEM一个DTC到底是怎么产生和存储的75从故障发生到诊断仪读出DTCECU内部到底发生了什么第八章NvM 与数据存储 7682很多 ECU 问题最后都会碰到存储。比如参数掉电丢失 ReadAll失败 WriteAll一直不结束 NvM阻止ECU关机 Flash数据损坏这一章把整条 Memory Stack 串起来。#文章76ECU掉电以后数据为什么还能保存77Fls、Fee、MemIf、NvM完整架构解析78NvM Block到底是什么79RAM Block、ROM Block和NV Block分别是什么80NvM ReadAll和WriteAll什么时候执行81ECU下电时NvM为什么经常导致无法关机82实战保存一个ASW参数并在下次启动恢复第九章RTE 与 ASW 开发 8392前面大量内容都在 BSW。从这一章开始正式往应用软件走。#文章83RTE到底是什么为什么ASW几乎看不到底层驱动84SWC的内部结构到底是什么样的85Sender-Receiver Port怎么使用86Client-Server Port怎么使用87Runnable是什么ASW真正运行的代码在哪里88Runnable是怎么映射到OS Task中的89Data Received Event、Timing Event分别什么时候触发90IRV是什么Runnable之间怎么传递数据91Mode Switch是什么ASW如何感知ECU模式变化92实战从0创建一个完整SWC并让它真正运行起来第十章从一个 SWC 做到完整 ECU 93100最后八篇不再单独看某一个模块。而是重新站到 ECU 的整体角度把前面所有东西重新串起来。#文章93ASW应该如何分层Application、Service与Complex Driver怎么划分94E2E到底解决什么问题Counter、CRC与Data ID95实战给一条CAN报文加入AUTOSAR E2E保护96XCP是什么标定工具为什么能直接修改ECU变量97A2L是什么标定变量是怎么被CANape识别的98AUTOSAR ECU集成以后最常见的10类问题99如何用CANoe完整测试一个AUTOSAR ECU100从0到1总结一张图重新看懂完整AUTOSAR ECU软件架构最后想说几句100 篇看起来很多。但如果真正做过 AUTOSAR 项目就会知道这 100 篇其实只能算刚刚把门推开。AUTOSAR 后面还有大量东西可以继续往深处挖。比如SecOC Crypto Stack Functional Safety Multi-Core SomeIp Ethernet DoIP J1939 Bootloader OTA Adaptive AUTOSAR ASPICE 性能优化 复杂故障定位但任何复杂系统都需要先有一个起点。这个系列的目标不是让你背会多少参数。而是希望有一天当别人再问你AUTOSAR 到底是什么你脑子里面想到的不再只是一张经典的分层架构图。而是一整个真实 ECU 的运行过程MCU上电 ↓ Startup ↓ EcuM ↓ BSW初始化 ↓ OS启动 ↓ Task运行 ↓ RTE调度Runnable ↓ ASW开始工作 ↓ COM收发数据 ↓ 网络管理 ↓ 诊断 ↓ 故障存储 ↓ NvM保存 ↓ ECU休眠到了那个时候AUTOSAR 才算真正从“一堆缩写”变成“一套完整的软件系统”。如果你也正在学 AUTOSAR欢迎一起往下走。新文章会优先在公众号更新再同步到 CSDN。这个系列不赶进度。一篇一篇把它讲清楚。从 0 开始。一直写到 100。
返回列表