Autosar入门随笔1_工具链:EB/S32K312/DAVINCI

系列文章目录


前言

Autosar小白,记录自己的学习过程,描述有误的地方欢迎评论区指正


一、工具链基础概念理解

SDK
S32K1系列NXP提供SDK库,SDK只包含了驱动层,不符合Autosar接口。到S32K3系列,NXP就只提供RTD了。
RTD
NXP提供支持Autosar接口的RTD库,RTD库相当于SDK+符合Autosar MCAL的接口;RTD同时带有配置文件,配置文件支持EB或者达芬奇直接调用,并根据自己的需求进行驱动配置。
EB
通过图形界面调用RTD配置文件,配置成自己的底层MCAL。输出物为:
ARXML:给达芬奇调用的;
.c/.h:MCAL的配置文件,可以直接放置在工程里。
DAVINCA
达芬奇是VECTOR的autosar开发工具链。针对NXP IC,达芬奇配置MCAL有两种办法,第一个是调用EB生成的ARXML;第二个是调用RTD里面的配置文件。正常我们都是用第一种办法,因为EB支持市面上绝大部分的IC的MCAL配置。但是很多IC的SDK包是不支持直接在达芬奇上配置的。
这边有一点需要注意:达芬奇也会生成MCAL相关的.c/,h。同个模块,达芬奇和EB生成的文件不一定一样,比如ADC模块的其中一个文件,达芬奇生成的名字叫:Adc_Ipw_PBcfg,EB生成的叫:Adc_Ipw_VS_0_PBcfg,两者内容实际上是一样的。所以MCAL导入到实际工程的时候,建议统一用EB或达芬奇的。

二、安装步骤

SDK和RTD
这两个都是在NXP官网下载的,需要先注册。注册只需要一个邮箱。具体的安装过程,大家去其他地方搜索。
很多初学者都会和我一样,找不到下图的下载路径:
在这里插入图片描述
网上找了很多地方都没人说清楚。我给大家指条明路:
在这里插入图片描述
在这里插入图片描述
在这里点进去就可以了。
RTD选择自己的版本,另外RTD安装时,需要把EB的路径填写进去,所以建议先安装EB。如果没有安装EB,可以先空着,等后面EB安装好后,将RTD安装目录下plugins文件夹内的所有内容复制到EB Tresos安装目录下的plugins文件夹下。
这边要注意,EB只是一个配置工具,它本身并没有集成NXP的底层驱动。RTD的插件如果没有关联进去,EB是识别不到芯片,也不能进行底层的配置。
EB
EB工具也可以再下图下载,EB的License也是在下图下载。
在这里插入图片描述
这部分不做详细说明,很多文章都有描述,连我都能顺利安装激活,相信大家也可以。
这边需要注意的是,EB打开后,新建一个工程,然后导入MCU模块会报很多错误。后面才知道原来RTD里面就有示例工程了,不需要自己从头到尾创建,不然工作量巨大。还容易出错。EB工程的创建会在下一章节描述。
这边想再补充一点,EB的License和RTD是绑定的,比如你用其他品牌的MCU,从NXP下载的这个License是用不了的。同理,EB和RTD库也是绑定的,比如你只下载了S32K3的RTD,那么你创建工程时,MCU型号就只能选择S32K3。

总结

以上就是今天要记录的内容,本文只介绍个人学习觉得需要注意的地方,基础操作可以评论区留言。

<think>好的,我现在需要帮用户解决如何在AUTOSAR中配置CanIfBufferSize的问题。首先,用户之前问过关于UDS刷写和S32K312的CAN FD速率问题,可能现在在开发汽车ECU,涉及AUTOSAR架构下的CAN通信配置。 用户想知道CanIfBufferSize怎么配置。我应该先回忆AUTOSAR中CanIf模块的作用,CanIfBufferSize具体指的是什么。CanIf是CAN接口模块,负责上层和下层CAN驱动之间的通信,缓冲区的配置对通信性能很重要。 可能需要先介绍CanIfBufferSize的定义,它可能涉及接收和发送缓冲区的大小。接下来,配置这个参数需要考虑哪些因素?比如通信矩阵中的帧数量、数据量、周期、传输方式(周期型还是事件型)等。 用户可能是在实际项目中遇到了缓冲区溢出的问题,或者想优化内存使用。需要详细说明配置步骤和注意事项。例如,如何根据帧的周期、数据长度、最大同时接收或发送的帧数来计算缓冲区大小。 还要考虑不同的缓冲类型,比如静态缓冲区或动态缓冲区,AUTOSAR中可能有不同的配置选项。此外,是否使用硬件缓冲区,或者完全依赖软件缓冲区,这也会影响配置。 可能需要提到使用工具如ETAS ISOLAR-A或Vector的工具链来自动计算缓冲区大小,但手动配置时需要考虑哪些关键参数。比如,每个帧的最大延迟、总线负载率、处理时间等。 还要注意不同版本的AUTOSAR可能有些差异,比如Classic和Adaptive,但用户的问题应该是在Classic AUTOSAR环境下,因为涉及CAN通信。 此外,可能需要给出示例,比如如何计算接收缓冲区的大小,假设有多个周期帧和事件帧,如何估算最坏情况下的缓冲区需求。比如,每秒最多接收多少帧,乘以每帧的数据长度,加上一定的余量。 还要提到错误处理,比如缓冲区溢出时的处理策略,是否需要增加缓冲区大小或者优化数据处理流程。 最后,总结配置时的步骤和验证方法,比如通过测试总线负载、压力测试来验证缓冲区是否足够,是否需要调整参数。</think>在AUTOSAR架构中,`CanIfBufferSize`(CAN接口缓冲区大小)的配置直接影响CAN通信的稳定性和性能。以下是逐步配置方法及关键考虑因素: --- ### **1. CanIfBufferSize的作用** `CanIfBufferSize`定义**CAN接口模块(CanIf)**的接收(Rx)和发送(Tx)缓冲区大小,用于临时存储待处理或待发送的CAN帧。 - **接收缓冲区**:存储从CAN控制器接收的帧,等待上层模块(如Com或PduR)处理。 - **发送缓冲区**:存储待发送的帧,协调CAN控制器的发送请求。 --- ### **2. 配置依据与关键参数** #### **(1) 通信矩阵分析** - **帧类型**:周期型(周期性发送) vs. 事件型(突发性发送)。 - **帧频率**:周期帧的发送间隔(如10ms/100ms)。 - **数据长度**:每帧的DLC(数据长度码,0~8字节)。 - **最大瞬时负载**:短时间内可能同时到达的帧数量(如事件触发帧集中发送)。 #### **(2) 系统性能约束** - **CPU处理能力**:缓冲区数据被处理的速率(如中断响应时间、任务调度周期)。 - **总线负载率**:CAN总线带宽占用率(一般建议≤70%)。 - **超时要求**:帧处理的最大允许延迟。 --- ### **3. 缓冲区大小计算方法** #### **(1) 接收缓冲区(Rx Buffer)** - **最坏情况需求**: $$ \text{RxBufferSize} = \left( \frac{\text{最大瞬时帧数}}{\text{处理周期}} \right) \times \text{单帧存储开销} + \text{安全余量} $$ - **示例**: - 若1ms内可能接收10帧(事件触发),且处理任务周期为5ms,则至少需缓存10帧。 - 每帧存储开销:CAN帧元数据(如ID、DLC) + 数据域(如8字节)。 - 安全余量:通常增加20%~50%(防止突发峰值)。 #### **(2) 发送缓冲区(Tx Buffer)** - **需求分析**: $$ \text{TxBufferSize} = \text{最大需排队发送的帧数} $$ - **示例**: - 周期帧按调度表发送,通常无需大缓冲区。 - 事件触发帧若可能密集产生(如诊断响应),需预留足够空间。 --- ### **4. AUTOSAR配置实践** #### **(1) 静态 vs. 动态缓冲区** - **静态缓冲区**:固定大小,在`CanIf`模块初始化时分配(需精准计算)。 - **动态缓冲区**:使用内存池动态分配(灵活性高,但需管理碎片)。 → **推荐**:在资源受限的ECU中优先使用静态配置。 #### **(2) 工具链支持** - **ISOLAR-A/Vector Davinci**:通过通信矩阵自动生成缓冲区需求,但需人工校验。 - **关键配置参数**: ```c CanIfRxBufferSize = 20 // 接收缓冲区容量(帧数) CanIfTxBufferSize = 10 // 发送缓冲区容量(帧数) CanIfDynamicTxBuffer = FALSE // 禁用动态缓冲区 ``` #### **(3) 优化策略** - **分通道配置**:为不同CAN通道(如CAN_1/CAN_2)独立设置缓冲区。 - **优先级管理**:高优先级帧优先存入缓冲区(通过`CanIfHrhActive`配置)。 - **流控机制**:通过`CanIf_Transmit`返回值检测缓冲区满,触发流控或错误处理。 --- ### **5. 验证与调试** 1. **静态分析**:通过总线负载率计算工具(如CANoe)验证缓冲区需求。 2. **动态测试**: - **压力测试**:模拟最大瞬时帧流量,观察是否丢帧。 - **覆盖率测试**:确保所有帧类型均能正确缓冲。 3. **监控指标**: - 缓冲区利用率(使用率≥90%需扩容)。 - 丢帧计数器(`CanIfBufferOverflow`事件)。 --- ### **6. 典型问题与解决** - **问题**:频繁丢帧或`CanIf_Transmit`返回`CAN_NOT_OK`。 - **排查**: 1. 增大`CanIfTxBufferSize`。 2. 优化发送调度(如降低低优先级帧频率)。 3. 检查CPU负载是否过高导致处理延迟。 --- ### **最终配置建议** - **资源充足场景**:接收缓冲区设为最大瞬时帧数的1.5倍,发送缓冲区设为10~20帧。 - **资源受限场景**:通过动态调整`STmin`(流控帧间隔)或压缩数据降低需求。 - **AUTOSAR标准参考**: - 遵循《AUTOSAR_SWS_CANInterface》中缓冲区管理规则。 - 结合具体芯片手册(如S32K3xx的CAN模块内存限制)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值