# can_uds_bootloader
**Repository Path**: toomoss/can_uds_bootloader
## Basic Information
- **Project Name**: can_uds_bootloader
- **Description**: 基于CAN UDS协议实现的CAN Bootloader/固件升级功能,标准UDS协议,可以自行扩展相关功能。
- **Primary Language**: C
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 96
- **Forks**: 94
- **Created**: 2022-09-20
- **Last Updated**: 2025-06-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: CAN, UDS, bootloader
## README
# can_uds_bootloader
## 介绍
基于CAN UDS协议实现的固件在线升级功能,此项目会包含一些常用的单片机范例程序工程,目前只有STM32F405的,后续会陆续增加,也可以参考我们提供的范例程序自行移植。
上位机测试使用图莫斯的TCANLINPro软件,要求最低版本为v2.1版本。
软件下载地址为:[点击下载](http://www.toomoss.com/download/7-cn.html)
USB转CAN工具使用的是图莫斯的USB转CAN/LIN适配器,结合TCANLINPro软件,使用我们提供的固件升级配置文件,可以很容易的测试验证功能。
CAN适配器购买链接:[点击购买](https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-15987418095.11.c2b37a2aRS7Fxr&id=569249781751)
## 软件架构
UDS CAN固件升级单片机程序主要包含CAN数据收发,UDS协议解析,UDS服务响应几个模块,CAN数据接收采用FIFO循环缓冲区接收数据,可以较高效率接收数据,防止丢帧。UDS协议解析采用状态机模式进行单帧,多帧接收解析,然后将接收完毕的请求传递给UDS服务处理函数进行数据处理。
## 移植说明
针对不同的单片机,主要是CAN数据收发方式,单片机内部Flash读写方式不一样,所以针对不同的单片机,主要是要移植这两个功能模块,UDS解析和处理部分可以根据自己需求适当修改即可,后续会逐步完善不同单片机的范例程序。
## 测试使用
使用图莫斯的USB转CAN适配器和TCANLINPro软件可以快速的实现功能测试验证,也可以根据自己的需求,自己写上位机软件来实现固件升级,图莫斯也提供UDS的二次开发接口函数。
### 单片机程序下载
- 针对不同的单片机,测试工程和目录可能有所不同,请根据实际情况调整,此处以STM32F405/407单片机为例进行说明。
- CAN引脚配置修改,打开bootloader工程,比如STM32F405单片机,bootloader工程所在目录为:“/firmware/stm32f405/bootloader”,用KEIL MDK打开之后,打开“can_driver.c”文件,找到里面的“CAN_GPIO_Configuration”函数,确认下CAN引脚配置是否跟自己使用的硬件一致?若不一致,则需要根据实际硬件情况修改下引脚配置。
- 时钟配置修改,范例程序使用的外部8M晶振时钟,系统时钟配置为168M,若使用的硬件不是外部8M晶振,则需要在“system_stm32f4xx.c”文件的“SystemInit”函数中修改时钟配置相关代码。若系统时钟不是配置为168M的,则我们代码里面的CAN波特率参数是不能直接用的,也需要根据自己的时钟大小进行调节,波特率参数表在“can_driver.c”的“CAN_BaudRateInitTab”全局变量中。
- 确认CAN引脚配置,系统时钟配置,CAN波特率参数配置没问题后,直接编译程序下载程序即可。
- 若使用的硬件外部晶振是8M,CAN引脚使用的PB8 PB9,那么可以直接使用我们编译好的程序进行测试,程序所在路径为:“stm32f405/test/uds_can_boot.hex”,通过下载器将程序直接下载到芯片即可。
- APP程序编译,APP程序在“/firmware/stm32f405/app”目录,跟bootloader程序一样,需要根据实际情况修改CAN引脚配置,系统时钟配置,CAN波特率参数,然后直接编译即可。成功编译后在工程目录下会输出对应的hex文件。若是要下载自己的APP程序,需要注意APP程序的起始地址和中断向量偏移的配置。
- 单片机的PC12引脚为调试信息输出引脚,串口波特率为256000,起始位1位,停止位1位,正常升级固件串口输出信息如下图所示:
### 上位机软件使用
- 将图莫斯的CAN1接到对应的CAN总线上,打开TCANLINPro软件,点击CAN1后面的启动按钮启动CAN,然后再弹出界面选择CAN波特率为500Kbps。
- 再点击【高级功能】->【CAN UDS固件升级】,点击界面的【流程文件】选择按钮,选择“stm32f405/test/can_bootloader.tflash”流程文件,然后再点击【流程设置】按钮,打开流程编辑界面,选择“程序文件下载”行,然后在左边更改APP程序文件所在路径,再点击【更新到列表】,【应用到执行器】即可。
- 回到固件升级主界面后,点击【执行】按钮即可开始固件升级下载,升级结果在列表中显示。
## 免责声明
该代码可以免费自由使用,但是文件头注释不要修改,得保留作者信息和代码出处。由于作者能力有限,不能保证代码没任何问题,若使用该代码因为代码问题造成的任何后果本人概不负责。
## 联系我们
若有意向进行商业合作,可以通过以下方式联系我们,若已经购买图莫斯CAN工具,可以联系我们免费获得技术支持:
- 邮箱:wdluo@toomoss.com
- 电话:15086931395(微信同号)
- QQ:188298598