1 Star 0 Fork 62

Harry / can_uds_bootloader

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

can_uds_bootloader

介绍

基于CAN UDS协议实现的固件在线升级功能,此项目会包含一些常用的单片机范例程序工程,目前只有STM32F405的,后续会陆续增加,也可以参考我们提供的范例程序自行移植。

上位机测试使用图莫斯的TCANLINPro软件,要求最低版本为v2.1版本。

软件下载地址为:点击下载

USB转CAN工具使用的是图莫斯的USB转CAN/LIN适配器,结合TCANLINPro软件,使用我们提供的固件升级配置文件,可以很容易的测试验证功能。

CAN适配器购买链接:点击购买

软件架构

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工具,可以联系我们免费获得技术支持:

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

基于CAN UDS协议实现的CAN Bootloader/固件升级功能,标准UDS协议,可以自行扩展相关功能。 展开 收起
C
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/www_ht/can_uds_bootloader.git
git@gitee.com:www_ht/can_uds_bootloader.git
www_ht
can_uds_bootloader
can_uds_bootloader
master

搜索帮助