多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

车载底层嵌入式开发入门:AUTOSAR学习路线与实战指南

车载底层嵌入式开发入门:AUTOSAR学习路线与实战指南 好几个朋友最近都问过同一个问题想做车载底层嵌入式软件开发AutoSar到底该怎么学这个问题看着不大但每次认真回答起来都要聊很久。原因很简单AutoSar不是一个“知识点”而是一整套基于标准化架构的开发体系和生态。你去招聘软件上搜“嵌入式软件开发”十个岗位里六七个都写着“熟悉AutoSar优先”但真要把这套东西讲明白、学明白网上能找到的资料又散又浅很容易劝退新人。这篇文章我就把“新手如何学习车载底层嵌入式软件开发AutoSar”这件事拆成一条相对清晰的路线来讲。它解决的核心问题是你之前没有车载行业经验或者只有单片机基础怎么用一年左右的时间把AutoSar的路摸通能写简历、能面试、能上手干活。适合三类人看准备从传统嵌入式转行做车载的工程师、刚毕业的电子或计算机相关专业学生、已经在做车载测试想转开发的同行。我会尽量站在“过来人”的角度把关键原理、实操路径、工具链情况、常见坑都讲到位你拿过去就能照着规划。1. 学习前必须搞清楚的几个底层问题1.1 AutoSar到底解决的是车载软件的什么问题很多新手一上来就抱着AUTOSAR规范文档啃结果看了几百页还是不知道这东西解决了什么问题。我建议你先跳出标准想想一个整车厂为什么会需要AutoSar这样一个标准化架构。早年间一辆车上有几十个ECU每个ECU的软件开发方式基本是“一锤子买卖”芯片厂商给你一套底层驱动Tier1按自己的习惯写应用逻辑OEM拿到手里发现不同供应商的代码风格完全不同软件接口对不上出了问题互相甩锅。最痛苦的是换一颗MCU整个软件几乎要推倒重来所有底层寄存器操作、驱动库都要适配一遍。这种模式下软件开发成本高、周期长、复用率极低。AutoSar做的事情归结起来就一句话把汽车ECU的软件架构标准化让软件与硬件解耦让应用层与基础软件解耦让不同厂商之间能用统一的“语言”协作。它规定好了分层模型、模块划分和接口定义供应商按规范开发OEM按规范集成。你可以把它理解成装修行业的“标准化插座”——不管墙里走的什么线面板上留的接口是一致的灯具和电器厂家只要按标准做插头就能装过去。所以学习AutoSar不能只盯着某个驱动函数而是要建立“软件架构”的思维方式。这是和传统裸机开发最大的不同点。1.2 Classic与Adaptive怎么选接触AutoSar时你会看到两个大方向Classic PlatformCP和Adaptive PlatformAP。我的建议很直接如果你是做“车载底层嵌入式软件”这个方向从Classic入手暂时先不用深入Adaptive。两者的区别可以从几个维度来看对比维度Classic PlatformAdaptive Platform目标硬件传统MCUTC3xx、S32K、RH850等高性能SoC/MPU高通骁龙、英飞凌AURIX TC4xx等操作系统OSEK/VDX OS静态调度基于POSIX的Linux/QNX类系统编程语言以C语言为主C为主适用场景车身控制、动力、底盘、传统ECU自动驾驶、智能座舱、域控制器实时性要求高微秒到毫秒级相对高但允许一定动态调度资源占用小运行在裸机或轻量OS上大动辄需要多核大内存Classic平台承载的是汽车电子里数量最多、生命周期最长的ECUBootloader、网络管理、诊断、刷新这些核心底层工作基本都跑在它上面。而且Classic的开发方式和传统嵌入式贴合度更高入门门槛相对低。很多公司招聘的“车载基础软件工程师”“嵌入式软件开发AUTOSAR方向”岗位说的基本都是Classic平台。先把CP吃透后面再往Adaptive发展也顺理成章。1.3 没有这些基础先别急着看代码AutoSar本身已经是“上层建筑”它底下还压着一大堆基础知识。如果底子太薄硬去学很容易被各种配置界面和生成代码淹没。我认为你在开始学AutoSar之前至少需要具备这些能力C语言要扎实指针、结构体、函数指针、位操作、内存管理这些必须过关。AutoSar生成的代码里大量使用结构体和函数指针看不懂这些基本没法调式。至少熟悉一款单片机推荐STM32资料多、上手快或者直接上英飞凌AURIX TC2xx/TC3xx开发板。要懂GPIO、中断、定时器、CAN、SPI、UART这些外设懂寄存器级别怎么操作。能看懂原理图和芯片手册做车载底层一定会遇到硬件相关的问题比如CAN收发器引脚接错了、芯片供电电压不对。你得能看懂一个芯片的电源域、引脚功能、唤醒逻辑。会用调试工具示波器、逻辑分析仪、USB-CAN分析仪这几样东西在车载开发中就是日常吃饭的碗。知道操作系统基础概念任务、中断优先级、信号量、队列。即使还没用过OSEK OS这些概念也必须有。如果你发现上面这些还有欠缺老老实实先补基础别跳级。跳级的后果就是在实际项目中花几周在一个很简单的问题上打转。2. 新手入门的学习路线先搭架构再钻细节2.1 先画一张整体架构图把模块职责标清楚我见过不少初学者路径完全反着来先看CanTp怎么配置再看NvM什么参数学了两周还是不知道自己每天在配什么东西。其实AutoSar学习的第一步应该是先把软件架构“装进脑子里”。Classic平台的分层大致是这样最上层是应用层SWC中间是运行时环境RTE再往下是基础软件层BSW。BSW又可以拆成三块服务层包括Dcm、Dem、NvM、Com、CanTp、CanNm、BswM等、ECU抽象层CanIf、EthIf等、微控制器抽象层Can驱动、MCU驱动、Gpt驱动等。理解这套模型千万别死记硬背你要能画出数据流。举一个最常见的例子诊断仪发一条UDS请求给ECU数据是怎么跑的诊断请求从CAN总线进来被MCAL层的Can驱动接收然后把报文交给CanIfCanIf根据CAN ID找到对应的PDU交给PduR做路由。如果这个数据超过了一个CAN帧的长度PduR会把它交给CanTp做分包和组包处理等完整数据到达后再交给上层的Dcm模块Dcm解析这个诊断请求调用对应的服务处理逻辑。如果是读取故障码Dcm会去Dem模块拿DTC信息然后按原路把响应数据发回去。我让你画这张图是为了训练你“数据流思维”。做车载底层开发最常做的事就是在某一条数据通路上定位问题。你脑子里没这张地图工具用得再熟也白搭。2.2 推荐从通信栈切入别一上来就啃诊断和存储AutoSar的模块很多新手要有取舍。我的建议是从通信栈切入先把CAN通信链路打通然后再去学诊断、网络管理、存储这些和通信强相关的模块最后有余力再看OS、看RTE。为什么从通信栈入手三个原因。第一所有的ECU都要上CAN总线通信是刚需也是面试必问第二通信链路的效果你可以直接用CAN卡抓报文验证学起来有反馈、有成就感第三通信栈的层级设计是AutoSar分层思想的最佳缩影把这个链路搞明白其他模块的理解就顺理成章。通信栈里最值得死磕的是CanTp传输层协议对应ISO 15765-2。因为实际的诊断刷写等大数据传输都依赖这个模块的分包和组包能力。你需要理解单帧、首帧、连续帧、流控帧的关系理解SN序列号怎么递增理解STmin最小间隔时间和块大小BlockSize怎么影响传输速率。举个例子一次Bootloader刷写中你要写4KB的数据到Flash但一个CAN帧最多只能带8字节。CanTp会先发一个首帧告诉对端“我要发一个4096字节的报文”对端回来流控帧说“你一次最多发8帧帧间隔最小10ms”然后发送端就按这个节奏发连续帧。这个过程中如果STmin配得太小对端MCU处理不过来就会丢帧如果BlockSize配得太小传输就会变慢。这种调优经验恰恰是工作中最有价值的部分。学完通信栈之后可以紧接着把网络管理模块学了。这里涉及BswM基础软件模式管理器和CanNmCAN网络管理。你需要理解ECU的几种网络状态Bus-Sleep模式、Prepare Bus-Sleep模式、Network模式。ECU想睡觉时不是直接睡的需要走一套流程先停止收发应用报文然后经过一段等待时间确认总线上没有其他节点在“挽留”它才能进入睡眠。这套状态切换逻辑是面试高频考点也是实际项目中“静态电流超标”问题的高发区域。2.3 学习资料别贪多按“概念-规范-工程”三层来选很多新手在资料选择上特别纠结总觉得要收集齐所有文档才够。实际上AutoSar资料要按层次来用不建议一开始就抱着几百页的官方SWS文档硬啃。我建议的资料使用思路是第一层建立概念。看一些AutoSar架构介绍类的视频或文章把上面说的分层模型、模块职责搞清楚。这个阶段不用深入细节能达到“看到模块缩写能知道它是干什么的”程度就行。第二层按需查阅官方文档。AUTOSAR官方发布的标准文档本身是非常好的工具书但不适合通读。你需要训练“检索式阅读”遇到某个参数搞不懂去对应模块的标准里查定义。比如配置CanTp时遇到N_Ar到底是干嘛的就打开CanTp标准文档翻一翻只看相关章节。第三层动手做工程。找一个demo工程或者自己搭建一个最小工程对照配置界面逐步看它生成的代码长什么样这是理解和记忆最有效的方式。顺带提一句很多工具厂商比如Vector、EB官网都有公开的培训材料和示例工程多去翻翻往往比看二手博客强得多。3. 开发环境与工具链没有商业工具也能学着做项目3.1 商业工具链长什么样心里要有数车载底层软件开发和普通的嵌入式开发有一个很大的区别AutoSar是“配置驱动”的绝大多数代码不是手写的而是通过配置工具生成的。商用领域最主流的两套工具Vector的DaVinci Configurator Pro DaVinci Developer和EB的tresos Studio。拿着工具怎么做开发大致流程是这样的OEM会提供一个ECU Extract一个关于整车通信矩阵和诊断规范的配置文件描述这个ECU该有哪些报文、哪些诊断服务你把它导入到配置工具里然后在这个基础上配置各个BSW模块。比如配置Can驱动要选用哪个CAN通道、波特率是多少配置CanIf要定义哪些CAN ID对应哪条PDU配置CanTp要设置STmin、BS、SN等参数。配置完成后工具会直接生成一堆C代码你再把自己的业务逻辑比如Bootloader的Flash驱动、网络管理回调集成进去最后编译、链接、刷写。举个例子BswM下电配置在Vector DaVinci里大概长什么样你需要在BswM里定义模式请求源和模式切换规则。比如当CanNm进入Bus-Sleep模式时BswM要释放CommUser停止应用报文发送然后延迟一段时间确认没有新的请求再通过EcuM调用MCU驱动关闭外设和时钟最后让电源管理单元进入低功耗状态。这个过程涉及BswM的ModeCondition、ActionList、LogicalExpression等配置项如果之前没接触过确实容易一头雾水。Ecuc模块是整个配置工具的核心。你可以把它理解成一个巨大的“参数仓库”所有BSW模块的关键参数都集中在这个单元里管理每个参数都有路径、类型、取值范围。配置工具的本质就是把我们以前手写驱动时那些散落在代码里的宏定义由规范定义后集中管理起来。3.2 没有商业授权怎么动手练商用工具很贵个人学习通常拿不到授权。那是不是就学不了了并不是。我推荐的方案是“两个腿走路”。第一用带基础软件包的开发板。现在英飞凌、NXP这些芯片厂商都有自己的开发板生态。比如英飞凌AURIX TC3xx系列有对应的MCAL驱动包和部分BSW示例你可以先在这个环境里练习MCAL层的配置和驱动调试。虽然BSW的功能可能不完全但至少能让你理解“底层驱动到底在干什么”。第二用普通单片机自己实现一个简化版通信协议栈。比如拿STM32F407的开发板自己写一个基于CAN外设的CanTp协议处理程序处理单帧和流控帧或者自己写一个简化版的CAN网络管理状态机。这一套做下来你对AutoSar里面那些状态机的理解会非常深之后去套商业工具只是“换一层皮”的问题。我特意强调“先理解状态机再学配置”。因为配置工具只是把状态机和参数变成图形化界面你如果不知道底层协议逻辑是什么工具上那些超时时间、节点地址、重复次数配置对你来说只是“玄学旋钮”。3.3 从零到一配置一个最小工程假设你手上已经有一块开发板、一个CAN分析仪和一套可以使用的AutoSar配置工具哪怕是试用版或学校授权我想带你过一遍从零配出最小系统的完整流程。第一步新建工程导入ECU Extract。ECU Extract里包含总线矩阵、DBC、诊断描述这是所有报文的“源头”。第二步配置MCU模块。先配时钟锁相环、看门狗、时钟树、端口、以及用到的外设。第三步配置通信底层。配置Can驱动选择通道、波特率例如500kbps、CAN控制器模式。再配置CanIf把总线上的CAN ID映射到软件上的PDU ID。第四步配置PduR。PduR是路由中心你要明确每个PDU是发到CanTp做长报文还是直接发到Com做信号。第五步配置CanTp。参数包括N_As、N_Ar、N_Bs、N_Cr这些超时时间以及STmin、默认块大小等。第六步配置Dcm和Dem。Dcm里要添加支持的服务例如0x10会话控制、0x27安全访问、0x22读取数据、0x2E写入数据、0x34请求下载等。Dem里要预定义DTC事件。第七步配置NvM、BswM、CanNm。NvM要做存储块的划分和地址映射BswM要配置模式判断逻辑CanNm要设置网络管理报文ID和超时参数。第八步生成代码编译下载用CAN卡发一些诊断请求验证链路。这套流程走完你会发现一个很有意思的现象大部分时间不是写代码而是在“画配置”。这就是AutoSar风格你要适应它。配置一个模块时一定要看它的“依赖关系”。比如配置PduR时你发现需要填CanTp的PDU ID你还没配CanTp就配不了PduR。所以配置顺序很重要否则界面报错就能把人搞崩溃。4. 用实战项目检验学习成果越早动手越好4.1 项目一做一个支持UDS刷写的Bootloader如果说只做一个项目来检验AutoSar学习成果我一定推荐“UDS Bootloader”。因为一个完整的刷写功能能把诊断、通信、存储、任务调度、状态管理这些核心模块全部串起来相当于一次“毕业设计”。这个Bootloader的工作流程大概是ECU上电后进入Bootloader先初始化时钟和CAN然后启动一个诊断任务不断监听总线上是否有诊断请求。如果收到0x10 02进入编程会话马上切换会话之后会收到0x27安全访问请求你要实现密钥算法来解锁权限解锁之后刷写工具会发0x34请求下载和0x36传输数据这些数据会经过CanTp分包到达Dcm后再写入到外部Flash。等所有数据传输完成发0x31例程控制做校验校验通过后置一个APP有效性标志最后执行软件复位跳到APP。这个链路中每一个环节都有坑。首当其冲的是Flash驱动和擦写策略擦除时间长Dcm那边可能已经超时了你要决定同步擦还是异步擦怎么通知上位机“我现在忙你别发数据”。第二个常见坑是安全访问算法和上位机约定不清就会导致解锁失败。第三个坑是跳转APP前要做栈指针和首指令校验否则跳过去直接hardfault。做这个项目时我建议你每天给自己设定一个小目标今天打通0x10会话明天把0x27搞定后天能收到0x34并写进Flash。这样成就感能维持住不会中途放弃。4.2 项目二实现网络管理状态机并做到低功耗做过Bootloader之后你基本已经把“诊断链路”吃透了。接下来我建议做“网络管理低功耗管理”项目这个是量产ECU落地时极为关键的环节也是面试官特别爱深挖的点。整车对静态电流要求很严格车停在那里所有ECU必须尽快进入休眠。在AutoSar里这由BswM、EcuM、CanNm和Can驱动协同完成。你要实现的核心场景是上电后ECU处于Network模式周期性发送网络管理报文告诉其他ECU“我醒着呢”。当整车上电结束后不再需要通信CanNm进入Ready Sleep状态开始等待总线上是否还有远程唤醒请求。如果等了一个超时周期没有收到NM报文就进入Prepare Bus-Sleep模式此时BswM会停止应用报文发送释放通信通道。最后EcuM调用底层驱动关掉CAN收发器进入Bus-Sleep。这个项目里涉及一个很实用的器件支持部分网络式唤醒的CAN收发器比如TJA1145。它和普通CAN收发器不一样带一个INH引脚可以控制外部稳压器的供电。ECU要休眠时MCU通过SPI或引脚给收发器配置成待机模式然后把INH拉低把整个通信域的电源切断静态电流可以降到微安级别。唤醒的时候外围的硬线信号或总线活动会把INH拉高重新上电MCU因此被唤醒。我在实际项目中就踩过这个坑CAN总线上明明已经没有任何报文了ECU却迟迟不进休眠。排查了大半天最后发现是TJA1145的INH引脚没有正确配置导致整个收发器一直在给稳压器供电当然睡不下去。这种问题你光看软件代码是看不出来的必须对着硬件数据手册和示波器去查。4.3 项目三给ECU做一套DTC管理第三个项目相对简单但同样重要DTC诊断故障码管理。Dem模块管的就是这件事。你需要做的是在Dem里定义几个事件比如“传感器电压过高”“CAN通信丢失”然后设置事件的状态位TestFailed、ConfirmedDTC、PendingDTC等。在代码里当检测到故障时调用Dem_SetEventStatus报告给Dem故障消失时调用Dem_ResetEventStatus。Dem会把故障状态存到NvM里保证下电不掉。做完这个项目你就能理解为什么诊断仪能读出“历史故障”。里面有个老化Aging机制故障不是一好就立刻消失必须满足一定条件才清除。很多新手搞不清楚PendingDTC和ConfirmedDTC的区别实操一遍就明白了。这三个项目做完你的基础软件能力已经能和很多社招候选人拉开差距了。4.4 车载以太网和SOME/IP可以放到第二年再看车载以太网是热词很多人问我现在要不要学。我的真实建议是如果你是刚入门的新手先别急着铺太大摊子把CAN这条线吃透再说。但如果你想往域控制器、智能驾驶方向发展那车载以太网这块迟早要补。车载以太网的物理层和普通以太网不一样用的是单对双绞线支持100BASE-T1或1000BASE-T1。应用层常跑SOME/IP协议它的核心是基于服务的通信ECU之间通过服务发现SOME/IP-SD机制互相发现。比如一个ECU对外提供服务它会周期性广播OfferService报文另一个ECU需要这个服务就发SubscribeEvent双方建立通信关系。如果你有STM32开发板可以买一个车载以太网PHY模块比如博通或NXP的百兆T1收发器做一些基础实验先理解PHY芯片怎么配置、怎么通过MII/RMII口和MAC对接。入门资料可以从IEEE 802.3bw标准看起比直接看SOME/IP协议好理解。5. 面试、求职与职业路线规划5.1 高频面试题把知识树检查一遍学了那么多最后要落到面试。我梳理了一下车载底层软件开发岗位的高频面试方向你可以在找工作前按这个表格自查。面试方向高频问题答题要点AutoSar架构画一下CP的分层架构RTE起到什么作用要能完整画出SWC-RTE-BSW说明解耦思想CAN通信CAN帧结构、波特率计算、位时序会算采样点知道CAN_H/CAN_L差分电压CanTp单帧/首帧/连续帧/流控帧的区别STmin作用结合一次UDS刷写过程讲分包流程诊断UDS 0x10、0x27、0x34、0x36的服务流程能说清每个服务请求和响应的格式网络管理节点状态有哪些怎么进入总线睡眠能画出Bus-Sleep到Network Mode的状态跳转NvM写入策略掉电保护怎么做提到双Block管理、校验和、立即写/延迟写OSOSEK OS任务调度中断优先级设计能说出优先级反转的概念就更好了工具用过哪些配置工具和调试工具如实说没商用工具就讲自己用开源方案做的项目面试时比背诵知识点更重要的是能讲出一个完整的故事。哪怕只是一个Bootloader项目你能把架构、分工、遇到的问题、最后的解决方案讲清楚面试官对你的评价就会很高。5.2 车载测试岗位要不要考虑我在热词里看到大量“车载测试”相关的搜索说明很多新人最先接触到的岗位是测试。我的观点是测试岗位完全可以作为入行切入点但它和开发岗位的工作方式差别很大。车载测试的核心是验证功能、找Bug你会接触到各种测试工具CANoe、CANalyzer等熟悉各种协议流程也能快速了解一个ECU的完整功能逻辑。这些经验对后续转开发是很有帮助的尤其是“测试思维”——开发时你会下意识考虑异常输入和边界情况写出更稳健的代码。但也要提醒你如果你最终目标是做底层开发别在纯测试岗位停留太久。测试和开发使用的工具链重叠度其实没那么高测试久了容易手生。我的建议是测试岗位做半年到一年期间保持写代码、看代码的习惯然后主动申请转岗或跳槽到开发岗。5.3 学习周期规划怎么定给你一个参考的学习周期表可以根据自己的时间灵活调整时间段学习目标重点产出第1-2月补基础C语言、STM32裸机外设开发能自己写CAN收发程序第3-4月建立AutoSar架构概念学习通信栈能画出整体数据流理解CanTp核心第5-6月配置工具入门跑通一个最小工程能用CAN卡收到自己ECU发送的报文第7-8月完成UDS Bootloader项目能用诊断工具刷写APP第9-10月完成网络管理低功耗项目能实现ECU正常休眠唤醒第11-12月综合演练整理简历和面试题完成DTC管理复盘所有项目简历上写项目时别只写“参与开发”“负责配置”。要写清楚项目背景、你负责的模块、具体解决的技术难题、用了哪些工具、最后达到什么效果。比如“我在Bootloader项目中负责CanTp参数调优通过分析流控帧时序将刷写速度提升了30%”这种描述比“熟悉CanTp配置”有说服力得多。6. 新手最容易踩的坑我先替你踩一遍6.1 坑一一上来就啃AUTOSAR官方标准文档这是新手最常见的误区。AUTOSAR官方文档动辄几百页语言极其抽象里面全是模块接口和参数定义。没有充足的上下文和实操经验看两页就犯困看完一章啥也记不住。我的建议是把它当工具书不要当教材。平时查某个参数的含义、看某个接口的定义可以翻但系统的学习路径应以“架构图demo工程项目实践”为主。6.2 坑二只理解概念不动手配置眼睛会了手不会AutoSar是“配置驱动”的开发模式所有模块都需要在配置工具里一步步搭起来。很多同学看视频、看文章觉得挺明白一到自己开个工程就傻眼。我建议你无论如何也要想办法搞到能用的配置工具或者demo工程哪怕只是把别人的工程重新编译一遍、改几个参数烧进去观察变化也比纯看书强十倍。你至少要完整跑通过一次“配置-生成-编译-烧录-验证”的闭环。6.3 坑三只盯软件不看硬件出了问题没法定位有一次我调试一个ECU进入不了网络模式软件配置检查了无数遍状态机逻辑也推演了好几轮都没发现问题。后来拿了示波器去量TJA1145收发器的VCC引脚发现电压根本没有。再看原理图发现这个收发器的供电是受INH引脚控制的而INH信号来自一个GPIO初始化时序不对导致收发器供电一直被切断。这虽然是个硬件问题但如果你没有硬件排查的意识只会在软件里打转转可能几天都出不来。所以我一直建议做底层开发的朋友至少要学会看原理图、查数据手册、用示波器量关键波形。这不仅是硬件工程师的事底层软件离硬件太近你必须两条腿走路。6.4 常见问题速查表现象可能原因排查方法ECU无法进入总线睡眠NM仍在发送报文BswM睡眠条件不满足本地唤醒源一直有效用CAN卡抓总线看NM帧是否消失查BswM逻辑量收发器INH和供电诊断仪发0x34报错CanTp块大小和STmin配置不当Flash不可写安全访问算法不对先抓CanTp帧看流控时序再查Flash地址区间刷写完成后无法跳转APPAPP有效性标志位未置位跳转地址错误栈指针非法检查0x31服务有没有执行成功读APP首地址内容唤醒时间太长BswM超时配置过大总线唤醒检测周期过长按时间轴打日志定位在哪一步延迟最大配置工具生成后编译报一堆错模块依赖未配齐ECU Extract和工具版本不匹配按依赖关系重新梳理配置顺序优先修MCAL层CAN报文发不出去CAN控制器波特率没对上收发器供电异常CAN_H/CAN_L接反示波器量波形确认显性位电平检查原理图学习车载底层嵌入式开发这件事确实不像学Linux驱动那样有大量现成教程可以刷很多经验要靠踩坑才能获得。但换个角度看正因为门槛高、资料少这个方向才值得投入。我个人在实际过程中的最大体会是AutoSar知识体系虽然庞大但它的核心思想并不复杂就是一套经过工业实践检验的软件分层和接口规范。你不需要一开始把每个模块都学到精通完全可以只抓住一条主线——从CAN通信栈切入打通一条数据通路再逐步扩展。这一条路走通之后你会发现自己看所有AutoSar资料都不再那么困难了。最后再分享一个小技巧学习过程中务必保持“输出”。每学完一个模块就用自己的话写一篇笔记或者做一个小测试程序验证一次。因为看懂和做到之间的差距只有在你亲自动手做完一个完整工程的那一瞬间才能真正感受到。做完之后你会觉得车载底层的世界其实就那么大你完全能hold住。
返回列表