前导学习
AUTOSAR笔记:AUTOSAR基础(一) - 明明1109 - 博客园
- 统一标准:为给各厂商提供一个开放的、通用的平台;
- 分散实现:要求软件系统高度的层次化和模块化,同时降低应用软件与硬件平台间的耦合;
- 集中配置:不同模块可由不同公司完成,但想要完成最终系统集成,必须将所有模块的配置信息以统一格式集中整合并管理,从而配置生成一个完整的系统。

上下层无关,每层只能使用下一层所提供的接口,并向上一层提供相应的接口:
应用软件层包含若干软件组件(Software Component,SWC),软件组件间通过端口(Port)进行交互。每个软件组件可包含一个或多个运行实体(Runnable Entity,RE),运行实体中封装了相关控制算法,可由RTE事件触发。
ASW : SWC : RE = 1 : n : n * m
简单来说就是
应用层生成了系统描述,依赖运行时环境的下层基础软件层所提供的功能(应用层只能通过运行时环境提供的接口)
BSW只有功能,没有映射到ECU或者其他东西



软件组件之间:
数据和端口
内部

这个初学最重要,标识自己要中间要干的事情,具体如何干,可以问人,可以看书,可以看视频

案例:非常重要
AUTOSAR笔记:AUTOSAR系统解决方案示例(二) - 明明1109 - 博客园
案例-->生成系统描述和软件的(matlab similink) -->Embedded Coder(之前学习欧拉电子的foc,虽然也没认真学,生成代码也用到这个工具)
法二:自上而下,然后swc再用matlab导,再到导,导就完了,开导,一天十导
AUTOSAR笔记:AUTOSAR软件组件级设计与开发(三) - 明明1109 - 博客园
之后就是配置其他的代码(看情况,没做过)
AUTOSAR系统描述

-
Signals And Signal Groups: 信号和信号组
-
Interaction Signals: 交互信号。这是通信的最小原子单位,代表了有业务含义的数据,比如 VehicleSpeed (车速), EngineRPM (引擎转速)。这里会定义每个信号的名字、数据类型(如 uint16)、长度(如 12 bits)等。
-
System Signals: 系统信号,与 Isignals 类似,有时用于区分系统级和 ECU 内部的信号。
-
Signal Groups: 信号组。可以将多个逻辑上相关的信号组合在一起,作为一个整体进行处理,可以保证这些信号的原子性(要么都更新,要么都不更新)。
-
-
Protocol Data Units: 协议数据单元。
-
I-PDUs (Interaction PDUs): 交互层 PDU。你可以把它想象成一个**“集装箱”。这个配置项定义了有哪些集装箱,以及每个集装箱里装了哪些信号 (Signal)。比如,一个名为 信号打包 (Signal Packing)** 的过程。
-
N-PDUs (Network PDUs): 网络层 PDU。它直接对应一个网络帧的数据部分,比如一个 CAN 帧的 8 字节数据区。
-
-
Frames: 帧。
-
这里定义了物理总线上的具体报文帧。比如,一个 CAN Frame 会定义它的 CAN ID (报文ID)、周期、数据长度等。
-
最关键的配置是:一个 Frame 包含哪一个 N-PDU。
-
-
Ecus: 电子控制单元。
-
这里会列出网络中的所有 ECU,比如 EngineControlUnit, BodyControlModule。
-
-
Networks: 网络。
-
这里定义了车内有哪些物理网络总线,比如 CAN_BUS_1, LIN_BUS_2, Ethernet_Backbone。
创建系统描述的方法:
略
BSW
有了系统描述如何生成BSW配置 DBC啥?




建立了复杂的引用,但是更具体的描述没生成,需要我们去配置
Lin:
参考博文与视频,本文只是提取 精炼,个人喜好,如深入探索请看此下博文,讲的非常详细
【LIN总线】LIN总线传输协议 - Emma1111 - 博客园
chapter8-LIN网络通信_哔哩哔哩_bilibili(不清晰啊)
数据帧:

同步间隔段:
同步段:
同步段用于同步的基准时钟为主机节点的时钟。
从机调整
位速率:(t7 - t0)/8 ,然后可得基准时钟
pid场:

除去起始位和停止位校验位就是帧id
根据帧ID的不同,将报文分为信号携带帧、诊断帧、保留帧
数据场:
根据id来分有两种数据类型信号和诊断。总线上的数据以广播形式发出,任何节点都可收到,只有一个发布点。
校验段:
调度表
规定了总线上帧的传输次序以及传输时间。调度表位于主机节点
单个情况:
获取调度表入口位置后循环执行

多个情况:
依次序执行,特殊情况如事件帧,某个调度表时发生中断,跳到另一个调度表后再返回 问题,如何在一个一个调度表结束,获取下一个调度表的位置呢?为啥不做成一个大的调度表呢???

主机状态机:

从机状态机

lin通信 在autosar 所经历的模块
发送:
RTE层-->com模块(打包)-->pdu roUter --> com(解析pdu的信号)-->RTE-->SWC
(这个图不是很直观锕)

SWC 通过 RTE 发送信号 -->
RTE 调用 AUTOSAR COM 模块进行打包 -->
PDU Router 进行路由 -->
CAN TP (可选) 和 CAN Interface (CAN IF) 处理-->
硬件发送
实际操作:
视频看不清
Debug:
如果我入行经历项目再说
其余的一些帮助理解的图



CAN:
https://blog.csdn.net/sishuihuahua/article/details/88239465
信号表示:
差分信号,有一个can 收发器 把逻辑信号转化为差分信号

(主要数据帧)
数据帧:
只介绍仲裁段:Client id
仲裁段的内容主要为本数据帧的ID信息。数据帧分为标准格式和扩展格式两种,区别就在于ID信息的长度:标准格式的ID为11位;扩展格式为29位。在CAN协议中,ID决定着数据帧发送的优先级,也决定着其他设备是否会接收这个数据帧。
在stm32中中can有过滤器这个结构,列表和掩码
在设置过滤器结构体的,id需要移位对应寄存器(这个看这个文章CAN通信知识梳理及在Stm32上的应用(HAL库) - xiondun - 博客园)暂时看这个,没讲设置,但是给了参考代码

硬件和软件结构

物理框图

CAN收发器的方案有两种,一是使用CAN收发IC(需要加电源隔离和电气隔离),另一种是使用CAN隔离收发模块。推荐使用第二种
CAN控制器是CAN的核心元件,它实现了CAN协议中数据链路层的全部功能,能够自动完成CAN协议的解析。CAN控制器一般有两种,一种是控制器IC(SJA1000),另一种是集成CAN控制器的MCU(LPC11C00)
控制器内部图:

CAN应用层协议有: CANOpen、DeviceNet、J1939、iCAN等
在autosar 中
signal --> signal被pdu收纳 --> pdu被com贴标签 -->pdu router --> can interface can if--> can driver
总线 --> mailbox --> pdu router --> outside com模块(解包)
以太网
STM32之LWIP网络协议栈移植_stm32 lwip-CSDN博客
基于STM32F407MAC与DP83848实现以太网通讯一(STM32以太网(ETH)外设) - fyxs - 博客园
如何配置以太网:

RMI/MI :

SMI(MDC / MDIO):

phy:

phy
模式配置

这里有寄存器,通过SMI接口配置,有地址 6.6.1.1有说明(太复杂了),只需要掌握看包就行。
MAC配置
库
STM32F4x7_ETH驱动库文件在我们下载的STSW-STM32070的STM32F4x7_ETH_LwIP_V1.1.0-Libraries-STM32F4x7_ETH_Driver。
stm32f4x7_eth_conf_template.h:修改phy地址寄存器,ETH外设需要用到延时函数
mac控制器引脚配置(有参考代码)
配置ETH_MACDMA以太网接口(dp83848.c
配置ETH中断和中断处理函数(这里有点复杂,没看代码,难看)
接收回调函数与发送函数
DMA配置(描述符链表有些没看懂,好累)
DMA描述符
DMA描述符链表
LWIP移植:
cubemx内置LWIP

应用层:
传输层:
网络层:
数据链路层:
物理层
汽车内的设备:
域控制器 (MCU或者arm高性能芯片(跑安卓)):
智能座舱域控制器:负责处理仪表盘、中控娱乐屏、空调控制等。它会大量使用 SOME/IP 来提供服务,并使用 AVB/TSN 来接收摄像头的视频流并显示
智能驾驶域控制器:负责处理来自摄像头、雷达、激光雷达的传感器数据,并执行融合、规划、控制算法。它既是 AVB/TSN 数据的消费者,也可能通过 SOME/IP 发布车辆控制指令
车身域控制器:控制车门、车窗、车灯等。可能会使用 SOME/IP 或更传统的 CAN/LIN
传感器:
车载摄像头 : 越来越多的摄像头(特别是环视、前视摄像头)直接通过以太网输出视频流,它们是 AVB/TSN 协议的主要使用者。
雷达 (Radars) 和 激光雷达 (LiDARs): 高分辨率的 4D 雷达和激光雷达产生的数据量巨大,也越来越多地采用以太网进行传输。
网关与交换机
中央网关
作用: 这是整车网络的核心交通枢纽。它连接了车内所有的通信总线(多路以太网、多路 CAN、LIN、FlexRay 等)。
功能:
路由: 在不同的 IP 子网(不同域)之间路由 IP 包。
协议转换: 在以太网和 CAN/LIN 总线之间转换报文。例如,将一个来自以太网的 SOME/IP 服务调用,转换成一条 CAN 报文发送给车身控制器。
车载以太网交换机
作用: 就像办公室里的交换机一样,它负责在同一个以太网子网内转发以太网帧。
特点: 车载交换机是专用的,需要支持 AVB/TSN 的时间同步和流量调度功能,并且要满足车规级的温度和振动要求。它们通常被集成在域控制器或中央网关内部。
设备接入交换机和网关,在这定义了三层结构,依赖了于MAC 和IP地址
应用层
SOME/IP
代车载网络的核心应用协议。它让 ECU 之间的通信从发送原始的 CAN/以太网报文,升级为调用远程服务 和发布/订阅事件
DoIP
基于 IP 的诊断。它定义了如何将 UDS (统一诊断服务) 协议封装在 TCP 包里,从而实现通过以太网对车辆进行高速诊断。
UDP-NM
UDP 网络管理。负责协调网络上各个 ECU 的睡眠和唤醒,以降低整车功耗
Service Discovery
服务发现。通常是 SOME/IP 的一部分。它允许 ECU 在启动时动态地广播自己能提供哪些服务,并发现网络中其他 ECU 提供了哪些服务。
DHCP:自带获取IP地址,
ICMP:ping网络的
ARP:通过ip地址获取目标MAC地址,先看本地有没有
AVB (IEEE 1722 / IEEE 802.1AS) 音视频桥接,是 TSN (时间敏感网络) 的一部分。这是一套特殊的协议,用于在以太网上保证低延迟、高同步的音视频流传输(如摄像头、麦克风)
IEEE Ethernet 这一层负责在同一个局域网 (子网) 内的通信。它将上层(IP层)传下来的数据包,打包成一个以太网帧 (Ethernet Frame)。这个“帧”就像一个快递包裹,上面贴着目的 MAC 地址和源 MAC 地址。
依赖谁被:以太网 PHY 以太网 MAC 网络变压器
网络管理
理由:功耗管理
唤醒源
本地唤醒,网络唤醒和RTC唤醒


autosar nm can nm udp nm lin nm
我们所要做的:转换关系和转化参数配置的
以CAN网络报文:可以系统定义阶段,把一帧报文定义为网络报文



J19939
引入:signal 8字节,发送17字节如何处理??? 引入网络传输,对数据重组和发送无感。

AUTOSAR ECU 休眠与启动


Flexible 模型: 是一个高度概括的、简化的状态机模型。它描述了 ECU 从上电、运行、休眠到下电的宏观生命周期。
Fixed 模型: 是一个非常详细的、符合 AUTOSAR NM 规范的状态机模型。它精确地定义了网络管理中睡眠和唤醒的每一个子步骤,包括唤醒验证、多级睡眠等,更贴近真实的实现细节。

分析代码(略)
学了四个多小时
还有十二个
