前导学习

AUTOSAR笔记:AUTOSAR基础(一) - 明明1109 - 博客园

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

image

 

上下层无关,每层只能使用下一层所提供的接口,并向上一层提供相应的接口:

应用软件层包含若干软件组件(Software Component,SWC),软件组件间通过端口(Port)进行交互。每个软件组件可包含一个或多个运行实体(Runnable Entity,RE),运行实体中封装了相关控制算法,可由RTE事件触发。

ASW : SWC : RE = 1 : n : n * m

简单来说就是

应用层生成了系统描述,依赖运行时环境的下层基础软件层所提供的功能(应用层只能通过运行时环境提供的接口)

  BSW只有功能,没有映射到ECU或者其他东西

image

image

 

image

 软件组件之间:

数据和端口

内部

image

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

image

 

案例:非常重要

AUTOSAR笔记:AUTOSAR系统解决方案示例(二) - 明明1109 - 博客园

案例-->生成系统描述和软件的(matlab similink) -->Embedded Coder(之前学习欧拉电子的foc,虽然也没认真学,生成代码也用到这个工具)

法二:自上而下,然后swc再用matlab导,再到导,导就完了,开导,一天十导

AUTOSAR笔记:AUTOSAR软件组件级设计与开发(三) - 明明1109 - 博客园

之后就是配置其他的代码(看情况,没做过)

AUTOSAR系统描述

image

 

  • 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,比如 EngineControlUnitBodyControlModule

  • Networks网络

    • 这里定义了车内有哪些物理网络总线,比如 CAN_BUS_1LIN_BUS_2Ethernet_Backbone

创建系统描述的方法:

BSW

有了系统描述如何生成BSW配置   DBC啥?

 

image

 

image

image

image

 建立了复杂的引用,但是更具体的描述没生成,需要我们去配置

 

Lin:

参考博文与视频,本文只是提取 精炼,个人喜好,如深入探索请看此下博文,讲的非常详细

【LIN总线】LIN总线传输协议 - Emma1111 - 博客园

chapter8-LIN网络通信_哔哩哔哩_bilibili(不清晰啊)

数据帧:

image

 

 同步间隔段:

同步段:

同步段用于同步的基准时钟为主机节点的时钟。

从机调整

位速率:(t7 - t0)/8 ,然后可得基准时钟

pid场:

image

 除去起始位和停止位校验位就是帧id

根据帧ID的不同,将报文分为信号携带帧、诊断帧、保留帧

数据场:

根据id来分有两种数据类型信号和诊断。总线上的数据以广播形式发出,任何节点都可收到,只有一个发布点。

校验段:

 

调度表

规定了总线上帧的传输次序以及传输时间。调度表位于主机节点

单个情况:

获取调度表入口位置后循环执行

image

多个情况:

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

image

 

主机状态机:

image

 

从机状态机

 从机任务负责发布或者接听帧的应答状态,包括连两个状态机:同步间隔段与同步段检查器、帧处理器
同步间隔段与同步检查器:
从空闲:
等待接收同步间隔/同步段序列 --> 活动状态(成功与否都汇报给空闲状态)
从活动状态:
接收受保护ID根据保护id来判断情况:
错误ID-->exit
接收应答:
接收数据
 
发送应答
发送数据
统一校验和
 
如果数据发送和接收没一次接受完(看ecu处理)则状态机不会变化,成功就跳转空闲状态

image

lin通信 在autosar 所经历的模块

发送:

RTE层-->com模块(打包)-->pdu roUter --> com(解析pdu的信号)-->RTE-->SWC

(这个图不是很直观锕)

image

SWC 通过 RTE 发送信号 -->

RTE 调用 AUTOSAR COM 模块进行打包 -->

PDU Router 进行路由 --> 

CAN TP (可选) 和 CAN Interface (CAN IF) 处理-->

硬件发送

 

实际操作:

视频看不清

 

Debug:

如果我入行经历项目再说

其余的一些帮助理解的图

image

 

image

 

image

 

CAN:

https://blog.csdn.net/sishuihuahua/article/details/88239465

信号表示:

差分信号,有一个can 收发器 把逻辑信号转化为差分信号

image

(主要数据帧)

数据帧:

只介绍仲裁段:Client id

仲裁段的内容主要为本数据帧的ID信息。数据帧分为标准格式和扩展格式两种,区别就在于ID信息的长度:标准格式的ID为11位;扩展格式为29位。在CAN协议中,ID决定着数据帧发送的优先级,也决定着其他设备是否会接收这个数据帧。

在stm32中中can有过滤器这个结构,列表和掩码

在设置过滤器结构体的,id需要移位对应寄存器(这个看这个文章CAN通信知识梳理及在Stm32上的应用(HAL库) - xiondun - 博客园)暂时看这个,没讲设置,但是给了参考代码

image

 硬件和软件结构

image

物理框图

image

 CAN收发器的方案有两种,一是使用CAN收发IC(需要加电源隔离和电气隔离),另一种是使用CAN隔离收发模块。推荐使用第二种

 CAN控制器是CAN的核心元件,它实现了CAN协议中数据链路层的全部功能,能够自动完成CAN协议的解析。CAN控制器一般有两种,一种是控制器IC(SJA1000),另一种是集成CAN控制器的MCU(LPC11C00)

控制器内部图:

image

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

如何配置以太网:

image

RMI/MI :

image

 

SMI(MDC / MDIO):

image

 phy:

image

 phy

模式配置

image

 这里有寄存器,通过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

 

image

应用层:

传输层:

网络层:

数据链路层:

物理层

汽车内的设备:

一文入门车载以太网, 不看可惜!

域控制器 (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唤醒

image

 

image

 autosar nm can nm udp nm lin nm

我们所要做的:转换关系和转化参数配置的

以CAN网络报文:可以系统定义阶段,把一帧报文定义为网络报文

image

 

image

 

 

image

 

J19939

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

image

 

AUTOSAR ECU 休眠与启动

image

 

image

 

Flexible 模型: 是一个高度概括的、简化的状态机模型。它描述了 ECU 从上电、运行、休眠到下电的宏观生命周期

 

Fixed 模型: 是一个非常详细的、符合 AUTOSAR NM 规范的状态机模型。它精确地定义了网络管理中睡眠和唤醒的每一个子步骤,包括唤醒验证、多级睡眠等,更贴近真实的实现细节。

image

分析代码(略)

学了四个多小时

还有十二个

image