S32Kxxx bootloader之CAN FD UDS bootloader

发布时间 2023-12-26 23:23:14作者: GeekyGeek

  了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序)。

  六年前, 汽车内ECU CAN 网络 还有低速CAN 网络, 速度是250kbps,不用接终端电阻就可以组网。但是很快ECU CAN网络都转为高速CAN 网络,速度高于500kbps. 但是最近2年,ECU CAN 网络越来越多的采用CAN FD。ECU 越来越多,交互数据也越来越多,所以再过2,3年,估计ECU 高速CAN 网络也不多见,绝大多数都会转为CAN FD网络。今天想给大家介绍最近刚完成的CAN FD UDS bootloader。

       CAN FD bootloader 烧写到ECU 的主芯片后,后续ECU 的应用程序需要升级,通过CAN FD 总线即可实现升级,不需要把ECU 拆出来,也不需要烧写口,只需一台电脑通过CAN FD bus和ECU相连,即可给汽车内的ECU 完成应用程序更新。

        

       此UDS bootloader 是基于NXP芯片S32K116的CAN FD总线接口bootloader. 软件架构如下图:

            CAN FD UDS bootloader 是放置在芯片S32K116 pflash 的0x00000000 ~ 0x0000EFFF,memory map 如图:

        ECU 上电后运行进入bootloader程序,判断是否有更新请求,没有更新请求且应用程序有效则跳转到应用程序,有更新请求或应用程序无效则停留在bootloader,  flash driver 可以由上位机下载到RAM, Erase 和Program pflash的动作是通过调用RAM中的flash driver API 完成的。 flash driver 也可以固化在ROM中,此时,Erase 和Program pflash的动作是通过调用ROM中的flash driver API 完成的。上电流程如下图:

  CAN FD UDS Bootloader 升级应用程序的整个流程主要使用了ISO 14229-1 标准中定义的以下UDS Services:

       上位机是我使用C#开发GUI host 程序zFlash, 使用zFlash时有一个地方需要注意,比特率的选择,如果选择405002,代表CAN FD 盒子主芯片工作时钟频率40M,仲裁段比特率500K,数据段比特率2M。如果选择4010002,代表CAN FD 盒子主芯片工作时钟频率40M,仲裁段比特率1000K,数据段比特率2M。目前只支持这两种选择,后续会增加更多的选择项。

  此CAN FD bootloader 遵从UDS 协议,比起自定义协议的bootloader 速度要快很多。更新应用程序的log 如下截图。