Changes from v2.7.7 to v2.7.8:
[feat]:upgrade patch tool to v3.8 [opt]:opt code generate process display [opt]:opt login logic [opt]:opt ghs support [opt]:add MC03 ghs support本方案基于YT Config Tool开发,使用Vscode+Cmake+Ozone工具链开发编译调试;基于Demo板硬件搭建实施;使用同星科技TC1012P CAN/LIN工具及同星科技TSmaster软件。
5e1b4583-94f0-4786-8b03-c70851e6bb51-image.png
新建YTM32B1MC03的JFLASH工程
e31f21d8-f1b4-4be0-960d-b1bdd08bc63d-image.png
找到Bootloader编译的烧程文件
9ceb1572-c212-4c57-a815-0b8d7e84806c-image.png
加载Bootloader文件
807cf228-2a95-43a9-b84f-4cf29b0332a3-image.png
擦除芯片(或者快捷键F4)
ace171c2-6b70-4201-99c3-50d9863d1af6-image.png
4ddc4c41-a35e-49fd-9404-c0a4cf401dd3-image.png
烧录程序(或者快捷键F6)
98170abf-7180-46a8-b7da-86a82369cd88-image.png
d226326b-944a-499f-ad36-a6af638db7fb-image.png 上下电运行Bootloader
拔掉JLINK烧录器,重新上下电后,板子重新工作,LED按照100ms快速闪烁,程序工作在Bootloader里面。 升级上位机配置
将FlashDriver文件、Application文件、SeedAndKey.dll几个文件放到升级上位机目录下。
435a580c-314d-4f54-8a4b-6d2e9007348d-image.png
打开升级上位机工程(如上图中.TSProj_x86文件)配置收发ID
45aa0f66-c39f-4794-8fc9-eb3a8489d382-image.png
配置TP时间参数,配置加密dll
6438a816-417d-45ad-b0f1-200d3b1e75ce-image.png
配置FlashDriver和Application和校验方式
8a33cf16-38f8-4cb4-b500-e24496e683db-image.png
配置自动诊断流程
b726c12e-406e-485c-9441-b671b51efb75-image.png
4. 执行升级
4.1 从Bootloader升级
dc21dc68-a986-49b0-a596-453a1e948641-image.png
升级完成后,LED灯1000ms闪烁,运行在Application程序中。
4.2 从Application升级
从Bootloader升级成功运行到Application后,再次点击运行,从Application升级。
1ba1902e-953b-4e91-978d-989d81d4320e-image.png
升级完成后,LED灯1000ms闪烁,运行在Application程序中。
4.3 StayInBoot升级
从Application升级中,是有升级请求标识的(KeepInBootVar变量)。
本方案设计上认为:
运行到Bootloader以后,如果通讯一半断开未发生升级服务(擦除芯片/请求下载/数据传输/下载退出等UDS服务),则即使有升级请求,可以超时退出重新跳转到Application运行;反之则必须StayInBoot等待重新升级。
4.3.1 未发生升级流程请求
升级一半,拔掉CAN线模拟通讯断开,升级失败
0b519b6a-91d3-44a0-b6bf-794829a3652b-image.png
通讯断开超时后,Bootloader重新进入Application运行,Demo板上LED灯1000ms闪烁。
4.3.2 已发生升级流程请求
执行到升级流程后,拔掉CAN线模拟通讯断开,升级失败
d9d0ca85-0330-4f42-b93e-c7196f69ca0b-image.png
通讯断开超时后,Boootloader不能进入Application,执行StayInBoot(重新复位或者上下电等均保持StayInBoot)。
重新执行升级
93dce8d5-9f9f-4619-b11d-62bbfea398c7-image.png
升级成功,Demo板上LED灯1000ms闪烁。
5. 附件代码
uds_can_fbl_mc03_release_20250529_2.zip
1、问题:
8cd613af-f399-40db-af3e-cb19baa96ca7-61120d41fcb69a4633ea860186e84c5.png
使用 YTM32B1MC03 SDK 1_3_1
我创建一个bootload工程,并集成了OTA升级功能,在升级完成后执行跳转APP操作,但APP无法正常启动,单步调试APP发现程序卡在了SPI Master初始化里不出来了
2、配置如下:
boot:
144423cd-d5d1-4b86-acb4-c3da6c24225d-6299e211d1c76e033e19a1985fc438e0_.png
06cadc11-2895-491d-af64-2a7f00a728fa-269d6a21873411c782f732b49a0207b0_.png
3、补充:
A、屏蔽掉无法初始化的外设,启动定时器,启动RTOS task,分别在两个位置操作IO翻转,示波器观察到,bootload升级完APP 跳转至APP后,IO一直在翻转,可以确定升级跳转都没问题。
B、在APP做地址偏移之前 程序所有功能都能正常执行。
C、另外,在修改APP的偏移地址后,编译出现下面图片中的信息
f9003ffb-6934-4cf6-8efb-247dc5812334-image.png
本方案基于YT Config Tool开发,使用Vscode+Cmake+Ozone工具链开发编译调试;基于Demo板硬件搭建实施;使用同星科技TC1012P CAN/LIN工具及同星科技TSmaster软件。
dbc523c3-21f4-4d1a-98b3-3b50282fac1a-image.png
新建YTM32B1MD14的JFLASH工程
c609c5a4-00b8-434b-a244-ae5bde77e46e-image.png
找到Bootloader编译的烧程文件
a0b6c9f7-8e07-40e7-aaa4-3076355c8caa-image.png
加载Bootloader文件
3900e9bd-c72e-4bc9-acc3-e2287c796557-image.png
擦除芯片(或者快捷键F4)
156d3954-7e53-4a13-8e5f-026e4a1bff49-image.png
fae94334-266c-4740-969c-f69d2650440e-image.png
烧录程序(或者快捷键F6)
ac129ec4-4b1b-42cc-80ba-44d166e59e25-image.png
6d1d1b5c-28af-444d-84a1-01280c9a14e3-image.png 上下电运行Bootloader
拔掉JLINK烧录器,重新上下电后,板子重新工作,LED按照100ms快速闪烁,程序工作在Bootloader里面。 升级上位机配置
将FlashDriver文件、Application文件、SeedAndKey.dll几个文件放到升级上位机目录下。
3f15b88d-af6f-43f6-b285-877a7d0ca419-image.png
打开升级上位机工程(如上图中.TSProj_x86文件)配置收发ID
ade66a27-609f-4150-8fde-a1f6f0833ec9-image.png
配置TP时间参数,配置加密dll
b8723e3c-c726-4876-b46a-e8e4488d0ec1-image.png
配置FlashDriver和Application和校验方式
95adfb20-50a3-4532-bd58-7b9a69330010-image.png
配置自动诊断流程
6d7f2e9f-73b1-4354-a03a-37f565903759-image.png
4. 执行升级
4.1 从Bootloader升级
b35da6fc-c501-4ebb-9e57-6167a92185d6-image.png
升级完成后,LED灯1000ms闪烁,运行在Application程序中。
4.2 从Application升级
从Bootloader升级成功运行到Application后,再次点击运行,从Application升级。
14c4d1e0-df93-4efb-80f3-fda4130399e3-image.png
升级完成后,LED灯1000ms闪烁,运行在Application程序中。
4.3 StayInBoot升级
从Application升级中,是有升级请求标识的(KeepInBootVar变量)。
本方案设计上认为:
运行到Bootloader以后,如果通讯一半断开未发生升级服务(擦除芯片/请求下载/数据传输/下载退出等UDS服务),则即使有升级请求,可以超时退出重新跳转到Application运行;反之则必须StayInBoot等待重新升级。
4.3.1 未发生升级流程请求
升级一半,拔掉CAN线模拟通讯断开,升级失败
b38f0141-062e-4be3-96d8-74d35fb5f42b-image.png
通讯断开超时后,Bootloader重新进入Application运行,Demo板上LED灯1000ms闪烁。
4.3.2 已发生升级流程请求
执行到升级流程后,拔掉CAN线模拟通讯断开,升级失败
d66fcdc3-fedc-4180-98b0-07e4e5dc9259-image.png
通讯断开超时后,Boootloader不能进入Application,执行StayInBoot(重新复位或者上下电等均保持StayInBoot)。
重新执行升级
e3fce7cf-3ad9-49f9-b415-9d64b295a22b-image.png
升级成功,Demo板上LED灯1000ms闪烁。
5. 附件代码
uds_can_fbl_md14_release_20250530_2.zip
本方案基于YT Config Tool开发,使用Vscode+Cmake+Ozone工具链开发编译调试;
基于Demo板硬件搭建实施;
使用同星科技TC1012P CAN/LIN工具及同星科技TSmaster软件。
1280X1280.JPEG
烧录Bootloader
新建YTM32B1LE05/JFLASH工程
1280X1280.PNG
找到Bootloader编译的烧程文件
文件路径:.\uds_lin_fbl_le05_20251119\uds_lin_bootloader\build\uds_lin_bootloader.s19
1280X1280 (1).PNG
加载Bootloader文件
1280X1280 (2).PNG
擦除芯片(或者快捷键F4)
1280X1280 (3).PNG
fe1c6378-7e21-4277-ab8e-6dd9d520106d.png
烧录程序(或者快捷键F6)
54e7b7de-2b17-45d5-a3c1-2e6fa2211a49.png
a9aa99c7-cd19-4809-94ff-4a30a798cea5.png
上下电运行Bootloader
拔掉JLINK烧录器,重新上下电后,板子重新工作,LED按照100ms快速闪烁,程序工作在Bootloader里面。
升级上位机配置
将FlashDriver文件、Application文件、SeedAndKey.dll几个文件放到升级上位机目录下。
文件路径:.\uds_lin_fbl_le05_20251119\UDS_LIN_TsMaster
2b979793-b75d-47a9-a034-24369b7ccbb1.png
打开升级上位机工程(如上图中.TSProj_x64文件)配置收发ID
2fd903d1-ce9c-4835-9604-a22add635436.png
配置TP时间参数,配置加密dll
897acbe0-6a9a-46e6-b403-210ff4864923.png
配置FlashDriver和Application和校验方式
b84de7ca-01a8-49fc-873b-a82ab11eb2c3.png
配置自动诊断流程
c2fd10cc-e7ed-4a76-900a-537997068252.png
执行升级
4.1 从Bootloader升级
06913126-4e14-4de6-9604-752a3f3042b6.png
升级完成后,LED灯1000ms闪烁,运行在Application程序中(Bootloader程序中LED灯100m闪烁)。
4.2 从Application升级
从Bootloader升级成功运行到Application后,再次点击运行,从Application升级。
8c657c25-b74f-4ae1-8a25-b0fe14e80e06.png
4.3 StayInBoot升级
从Application升级中,是有升级请求标识的(KeepInBootVar变量)。
本方案设计上认为:
运行到Bootloader以后,如果通讯一半断开未发生升级服务(擦除芯片/请求下载/数据传输/下载退出等UDS服务),则即使有升级请求,可以超时退出重新跳转到Application运行;反之则必须StayInBoot等待重新升级。
4.3.1 未发生升级流程请求
升级一半,还未擦除更新 APP 时,拔掉LIN线模拟通讯断开,升级失败
0f8ddf6c-b804-41e0-adf8-e54a5cd19d54.png
通讯断开超时后,Bootloader重新进入Application运行,Demo板上LED灯1000ms闪烁。
再次运行升级,从Application升级,升级成功
463acd89-6f4c-458c-9c77-c16001916d6c.png
4.3.2 已发生升级流程请求
执行到升级流程后,拔掉LIN线模拟通讯断开,升级失败
通讯断开超时后,Boootloader不能进入Application,执行StayInBoot(重新复位或者上下电等均保持StayInBoot),Demo板上LED灯100ms闪烁。
16ba59ed-3067-4283-85a1-fefc23083a98.png
重新执行升级
8e4c9ef1-ed02-4bd4-866b-5d10203f6818.png
升级成功,Demo板上LED灯1000ms闪烁。
uds_lin_fbl_le05_20251119.zip YTM32B1LE05 LIN stack(LE0 SDK 1_3_1)(YCT LIN stack 模块需要手动安装插件)
lin-stack_0_9_0(LE0_1_3_1).zip
前言
本文档以YTM32B1Mx为例介绍FLEXCAN收发报文数超过物理邮箱个数时邮箱分配方案、LegacyFIFO用法,同时也适用于YTM32B1Lx系列。
1. YTM32B1Mx FLEXCAN邮箱资源介绍
MC03的FLEXCAN资源:
b2492947-eb3f-4cbc-ac09-81efc9621fed-image.png
MD14的FLEXCAN资源:
50bd0110-d75a-456f-97d4-adf5d8f95717-image.png
ME05的FLEXCAN资源:
79278b7f-a6d4-4f82-8b2d-4bb16639cac9-image.png
以ME05为例,邮箱负载为8字节负载时,CAN0、CAN1、CAN2的邮箱数为64个,CAN3、CAN4、CAN5的邮箱数为32个。
硬件设计时注意优先选用CAN邮箱资源多的CAN通道。
以CAN0为例,
收发报文数量小于等于邮箱数(64)时,为每一条收发报文分配一个邮箱即可; 收发报文数量超过邮箱数时,可通过配置接收FIFO、配置邮箱接收范围ID的方式来实现。下文将通过一个ME05应用实例,介绍使用经典CAN时合理分配邮箱来解决收发报文超过邮箱数问题的方案。
2. 应用实例说明
2.1 需求描述
用户使用CAN0,经典CAN,需要发送的报文ID有40条,需要接收的报文ID包括118条离散ID、1条范围ID(0x600 ~ 0x67F)。如下图:
c837846e-9a1a-47c0-b5e1-0c91dd762a71-image.png
2.2 方案概述
由需求知收发报文总条数远大于CAN0邮箱总数,故接收报文需要用到LegacyFIFO,基本步骤如下:
(1)根据需要接收的报文数,计算LegacyFIFO占用的邮箱数,并配置LegacyFIFO用于接收118条离散ID;
(2)剩下的邮箱中,选择一个邮箱用于接收范围ID(0x600 ~ 0x67F);
(3)剩下的所有邮箱均用做发送邮箱,需要发送报文时滚动轮询发送邮箱的状态,使用空闲邮箱进行发送。
例如,一种邮箱分配参考方案如下:
fc491a8b-64e8-4ed3-8283-0b0542a43ec9-image.png
2.3 功能实现
2.3.1 接收FIFO配置
需接收的离散报文ID共118条,因此LegacyFIFO实际需要占用的邮箱数与配置120条滤波码时占用的邮箱数一致,即占用0~35共36个邮箱,配置LegacyFIFO后剩余28个邮箱(邮箱号为36~63)可用。
76be7871-7939-4a94-b98c-d484666b99e7-image.png
LegacyFIFO配置方式:
(1)配置接收LeacyFIFO,手动添加118个接收离散报文ID到过滤表中。配置完成后启动LeacyFIFO接收。
10092b59-b024-41c0-84fc-820aaccb7259-image.png
(2)通过LeacyFIFO接收到报文时重新调用FLEXCAN_DRV_RxFifo(CAN_INST, &rxFifoMsg)函数启动下一次接收。
ea0e466f-b402-4a8e-96bd-3b4292b339c0-image.png
2.3.2 接收邮箱配置
LegacyFIFO占用了MailBox0~35共36个邮箱,这里配置邮箱36用于接收ID范围为0x600~0x67F的报文。
配置方式:
(1)配置MailBox36的接收ID和掩码值,用于接收0x600~0x67F的范围ID报文。
af97abde-76b8-4859-a0a7-243dcb1c723f-image.png
(2)MailBox36接收到报文时重新调用 FLEXCAN_DRV_Receive(CAN_INST, 36, &rxMsgBuffer);函数启动下一次接收。
416138fe-0d56-4a0f-9ace-9b549548d168-image.png
2.3.3 发送邮箱配置
剩下的MailBox37~63共27个邮箱可用做发送邮箱,需要发送报文时,滚动轮询这27个邮箱的状态,使用空闲邮箱发送即可。
配置方式:
(1)配置27个发送邮箱
954a0ac0-155b-4158-a886-0101f4e8330c-image.png
(2)滚动查询27个发送邮箱的状态,使用空闲邮箱发送报文
52245282-7e59-4a0d-af75-7e45c6be3fd5-image.png
3. 总结
(1)本文档仅提供一个参考方案,收发邮箱的分配应当根据实际的收发报文条数、通讯周期等需求来分配。
(2)本文档中对于所有的离散ID,均使用LeacyFIFO进行接收,实际应用时可以少分配一些发送邮箱,预留出更多的邮箱用于报文接收,例如对一部分周期较长或优先级较低的报文可以使用LeacyFIFO接收,对周期较短或优先级较高的报文,单独配置接收邮箱实现等。
参考文档及demo工程
(1)参考文档
AN_0008_YTM32_FlexCAN_SDK_User_Guide_zh_review.pdf
AN_0019_YTM32_FlexCAN_Introduction_zh_review.pdf
(2)示例demo
Flexcan_MB_example.zip
本方案基于YT Config Tool开发,使用Vscode+Cmake+Ozone工具链开发编译调试;基于Demo板硬件搭建实施;使用同星科技TC1012P CAN/LIN工具及同星科技TSmaster软件。
ef6fee85-1fcc-4a93-9ee1-2ce15af1891b-image.png
新建YTM32B1ME05的JFLASH工程
bb461804-ef97-4a53-a355-3e5207e163c5-image.png
找到Bootloader编译的烧程文件
文件路径:
.\uds_can_fbl_me05_release_20250730\uds_can_bootloader\build\uds_can_bootloader.s19
5ffee699-aa4e-4d4c-85b3-2431c6ae7474-image.png
加载Bootloader文件
b2df279f-fbb5-4b9d-9e43-c49206d1cb35-image.png
擦除芯片(或者快捷键F4)
7265c86f-9fca-4b38-b8fd-a500c19a3336-image.png
fcdbab1a-dcd2-443e-b0f3-097d0cbf959c-image.png
烧录程序(或者快捷键F6)
e60dd1ce-e8c0-4500-a80c-09d67d0c3cb5-image.png
47deeac3-4018-410f-9ed7-f2524cdff762-image.png 上下电运行Bootloader
拔掉JLINK烧录器,重新上下电后,板子重新工作,LED按照100ms快速闪烁,程序工作在Bootloader里面。 升级上位机配置
将FlashDriver文件、Application文件、SeedAndKey.dll几个文件放到升级上位机目录下。
文件路径:.\uds_can_fbl_me05_release_20250730\UDS_CanFbl_TsMaster
55a30316-22cb-4f15-a0a9-f892288898d6-image.png
打开升级上位机工程(如上图中.TSProj_x86文件)配置收发ID
9a909b8d-a2d8-40c5-a3d6-658967a9dfaf-image.png
配置TP时间参数,配置加密dll
f2076298-285e-4a78-b54c-3bae6e13338c-image.png
配置FlashDriver和Application和校验方式
8d884654-ced9-4988-9074-f41de501f671-image.png
若是修改 flashdriver/app 文件命名,需要修改对应校验的请求值
e8f40f9d-87a2-4ff0-af11-f0873b208c27-image.png
配置自动诊断流程
2f5c0311-349c-4cf7-981d-cbc503403d8a-image.png 执行升级
4.1 从Bootloader升级
1b781e1b-68b3-4387-89ab-605010aabcc6-image.png
升级完成后,LED灯1000ms闪烁,运行在Application程序中(Bootloader程序中LED灯100m闪烁)。
4.2 从Application升级
从Bootloader升级成功运行到Application后,再次点击运行,从Application升级。
de87b80e-cd0a-4111-853a-8ebdff2b6776-image.png
升级过程中,运行在Bootloader程序中,LED灯100ms闪烁,升级完成后,LED灯1000ms闪烁,运行在Application程序中。
4.3 StayInBoot升级
从Application升级中,是有升级请求标识的(KeepInBootVar变量)。
本方案设计上认为:
运行到Bootloader以后,如果通讯一半断开未发生升级服务(擦除芯片/请求下载/数据传输/下载退出等UDS服务),则即使有升级请求,可以超时退出重新跳转到Application运行;反之则必须StayInBoot等待重新升级。
4.3.1 未发生升级流程请求
升级一半,拔掉CAN线模拟通讯断开,升级失败
0319dbad-2707-46f8-acdd-431fd4c42852-image.png
通讯断开超时后,Bootloader重新进入Application运行,Demo板上LED灯1000ms闪烁。
4.3.2 已发生升级流程请求
执行到升级流程后,拔掉CAN线模拟通讯断开,升级失败
aaf00cee-307b-41b2-bdc3-33b8b39b374b-image.png
通讯断开超时后,Boootloader不能进入Application,执行StayInBoot(重新复位或者上下电等均保持StayInBoot)。
重新执行升级
80306f67-cb08-4064-898d-e1dd627e6118-image.png
升级成功,Demo板上LED灯1000ms闪烁。
5. 附件代码
uds_can_fbl_me05_release_20250730.zip
为啥我通过上位机发送一条LIN报文,只触发了2次LIN_UART_DRV_IRQHandler中断,第一次触发了BREAK检测中断:if (UART_GetStatusFlag(base, UART_LIN_BREAK_DETECT)),第二次触发了边沿检测中断:if (UART_GetStatusFlag(base, UART_RX_ACTIVE_EDGE_DETECT) && activeEdgeIntState)。
按理说,第二次应该0x55同步码接收完成再触发中断吧?是我哪里没配置好吗
83edce98-9310-4011-ab52-b49720d2f9d6-AE29650C-C627-4b4a-B4F8-2FE7812A3358.png
硬件环境:HA01评估板+leaf light v2(substitute for kvarser)
软件环境:SDK1.3.1
需求描述:基于SDK 的UDS CAN升级固件
问题描述:
构建demo之后按照readme文档操作,下载can demo到MCU之后,用PC工具开始基于UDS协议下载连接leaf light v2,发现超时。
按照飞书文档描述检查了设置,脚本也是demo自带的,不知道忽略了哪些设置?或者usb转can设备有问题?转接器和问题截屏如下,请参考。
bc529753-d2ef-4e46-9ab4-c5128cbcd3b3-6c063e4ee2c34dbe28025c7f6051bb35.jpg 57217763-ec3a-402f-98b0-bc0666ebef82-47cced2cb88e63b5e337ae0f2d8bd1ec.jpg
-
Announcements
Announcements regarding our community
-
Discussion & Question
A place to talk about whatever you want or ask a question
-
Blogs
Blog posts from individual members
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...