-
一、概述
- 需求:
- 需要 LIN uds 传输一包 2048 字节的数据
- 条件:
- 基于 YTM32B1MC03 UDS LIN FBL公版操作指南 中 MC03 lin fbl 工程
- 现象:
- UDS_MAX_BLOCK_SIZE 0x82
- 释放版本中 UDS 传输一包数据最大长度 0x82(130)

二、修改
1、YCT 配置-
UDS Stack Peripheral Config
[修改] UDS stack Max Data Length 2050(2048+2)


-
Lin Stack Peripheral Config
[修改] lin lib config Queue 队列接收最大长度
Rx queue 大小长度要大于 MAX BLOCK SIZE + 2
Eg. 2048 对应接收 2050,rx queue 就要大于 2050

2、代码修改
- UDS_Service.c
UDS Service MAX BLOCK SIZE 大小设置为 2050

3、功能修复
-
Lin 通信帧数据段长度为 8,所以对长度 2050 这种一包数据量大于 8 的数据传输,会先计算拆成多少次接收
-
对于一包数据 2050,接收完第一帧,计算还需要接收多少次,pendRecvCnt =(2050 - 5)/ 6 = 340,340 大于 u8 类型变量上限 256,接收次数不足,导致丢帧丢失数据


-
异常错误现象

-
[优化整改] 修改,将 l_u8 为 l_u16,来兼容更大的计算范围

三、验证
- 接收一包数据长度 2050 字节

- 需求:
-
G ganyongchao 被引用 于这个主题
-
G ganyongchao 从 Others 移动了该主题
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...
