DSP28035的can升级方案 提供源代码,测试用固件。 上位机采用c#开发。 说明 一、介...
DSP28035的can升级方案 提供源代码测试用固件。 上位机采用c#开发。 说明 一、介绍 1、测试平台介绍采用M新动力的DSP28035开发板CAN口使用GPIO30\31。波特率为500K。 2、28035__APP为测试用的用户代码ccs10.3.1工程参考其CMD配置。 3、28035_Bootloader_CAN为bootloader源代码ccs10.3.1工程 4、SWJ为上位机采用VS2013开发C#语言。 5、测试使用的是周立功的USBCAN-IIcan盒如果用一些国产可以兼容周立功的则更换这里面的ControlCAN.dll即可。 6、升级的app工程需要生成hex去升级具体参考我给的工程的设置。 7、BootLoader代码只有D400这一个灯1s闪烁一次 APP代码D400\401\402三个灯同时200ms闪烁一次。 8、目前跳转时间设置为5s 9、协议的注释在上位机源代码中。一、方案概述DSP28035 CAN升级方案是一套面向TI F28035型数字信号处理器的固件升级解决方案通过CAN总线实现上位机与DSP设备间的通信交互完成固件程序的安全、高效更新。方案包含底层Bootloader固件、应用层程序框架、上位机控制端三大部分底层固件基于C语言开发充分适配F28035的硬件资源与指令集上位机采用C#开发提供直观的操作界面与稳定的通信控制逻辑。该方案支持固件分包传输、数据校验、升级状态反馈等核心功能适用于工业控制、汽车电子等需要远程或批量升级DSP设备的场景。二、核心组件与功能划分一底层核心组件硬件抽象层HAL负责CAN控制器初始化、GPIO配置、时钟管理等硬件相关操作封装了与F28035硬件紧密相关的底层接口为上层功能提供统一的调用入口。通过配置CAN控制器的波特率、滤波规则、中断优先级等参数确保CAN总线通信的稳定性与实时性GPIO配置模块针对CAN收发引脚进行专用配置保障信号传输的可靠性时钟管理模块则基于DSP的PLL控制器为系统提供稳定的时钟源适配CAN通信与固件升级过程中的时序要求。依赖DSP2803xGlobalPrototypes.h中的InitECan()、InitECanaGpio()等初始化函数以及DSP2803xExamples.h中定义的系统时钟配置参数如DSP28PLLCR、DSP28DIVSEL。Bootloader核心模块作为固件升级的核心执行单元运行于DSP的独立存储区域上电后优先启动。主要功能包括CAN总线通信监听、升级指令解析、固件数据接收与存储、应用程序跳转。通过监听CAN总线上的特定指令帧判断是否进入升级模式接收上位机发送的固件数据帧后进行校验与存储支持将固件数据写入Flash指定区域升级完成后通过硬件复位或软件跳转指令引导系统运行新的应用程序。关键依赖DSP2803xDefaultISR.h中的CAN中断服务函数ECAN0INTAISR、ECAN1INTA_ISR用于处理CAN数据接收中断实现数据的实时接收与处理。数据校验与容错模块为保障固件升级的可靠性该模块提供多重数据校验机制。在数据传输层面对每帧CAN数据添加校验位如CRC校验、校验和接收端通过校验算法验证数据完整性避免传输错误在固件存储层面对接收完成的整个固件镜像进行完整性校验确保固件数据未被篡改或损坏同时具备容错处理逻辑当检测到数据错误时通过CAN总线向上位机发送重传请求实现数据的补传。部分校验算法基于IQmathLib.h中的数学运算接口提供高效的数值计算支持。二应用层程序框架应用层程序是用户实际的功能代码与Bootloader模块隔离存储。在固件升级完成后由Bootloader引导启动。应用层程序预留了与Bootloader的交互接口支持在运行过程中响应上位机的升级触发指令实现不拆机情况下的在线升级。同时应用层程序可通过CAN总线向上位机反馈设备状态如运行状态、固件版本号为升级决策提供依据。三上位机控制端采用C#开发提供图形化操作界面支持固件文件选择、升级指令发送、升级进度显示、状态反馈接收等功能。上位机将固件文件按照设定的分包大小拆分为多个数据帧通过CAN总线发送至DSP设备实时接收DSP反馈的升级状态如数据接收成功、校验失败、升级完成并在界面上直观展示支持升级过程中的异常处理如超时重发、升级中断等。三、核心工作流程一升级触发流程DSP设备上电后Bootloader模块优先执行初始化CAN控制器、GPIO、时钟等硬件资源进入CAN总线监听状态。上位机启动后通过CAN总线发送设备查询指令DSP设备接收到指令后反馈设备标识与当前固件版本号。用户在了你上位机界面选择待升级的固件文件点击“开始升级”按钮上位机发送升级触发指令包含固件大小、分包数量等信息。DSP设备接收到升级触发指令后解析指令参数初始化Flash存储区域准备接收固件数据并向上位机发送“准备就绪”响应。二固件传输与存储流程上位机收到“准备就绪”响应后按照设定的分包大小如每帧8字节数据将固件文件拆分为多个数据帧依次通过CAN总线发送每帧数据包含帧序号、数据内容、校验位。DSP设备通过CAN中断服务函数实时接收数据帧首先验证帧序号的连续性与数据校验位的正确性。校验通过后将数据写入Flash指定存储区域校验失败则向上位机发送“重传请求”上位机收到后重新发送该帧数据。上位机依次发送所有数据帧直至全部发送完成发送“传输完成”指令。三升级完成与启动流程DSP设备收到“传输完成”指令后对Flash中存储的完整固件镜像进行最终完整性校验。校验通过后更新固件版本信息向上位机发送“升级成功”响应并通过软件复位或直接跳转指令引导系统启动新的应用层程序。校验失败则向上位机发送“升级失败”响应说明失败原因如固件损坏、存储错误并保持在Bootloader状态等待下次升级指令。新的应用层程序启动后初始化自身功能模块进入正常运行状态并通过CAN总线向上位机反馈“启动成功”状态。四、关键技术特性一高可靠性设计双重存储隔离Bootloader与应用层程序存储在独立的Flash区域Bootloader区域受保护避免升级过程中被意外覆盖确保设备始终具备升级能力。多重校验机制数据帧校验与固件镜像校验相结合有效避免传输错误与固件损坏导致的升级失败。容错重传机制支持数据帧重传与升级断点续传需上位机配合记录已传输帧序号提升复杂电磁环境下的升级成功率。二灵活性与兼容性可配置的分包大小上位机支持根据实际应用场景配置CAN数据帧的分包大小平衡传输效率与可靠性。适配多种CAN波特率底层CAN控制器初始化支持多种波特率配置如250Kbps、500Kbps、1Mbps适配不同的总线通信需求。兼容多种固件格式支持标准的二进制固件文件.bin可与主流的DSP编译工具如TI CCS生成的固件无缝兼容。三易用性设计上位机图形化界面操作简单直观无需专业知识即可完成升级操作支持升级进度实时显示便于用户监控升级过程。状态反馈全面DSP设备在升级的各个阶段均向上位机反馈详细状态便于问题定位如传输超时、校验失败等。自动引导启动升级成功后自动启动新固件无需用户手动干预提升升级效率。五、关键代码模块说明一CAN通信初始化模块功能完成F28035 CAN控制器的参数配置包括波特率、工作模式、中断使能等为数据传输提供通信基础。核心逻辑配置CAN控制器的控制寄存器如CANCTL、波特率寄存器如BRP、中断使能寄存器如CANINT设置GPIO引脚为CAN收发模式初始化CAN接收滤波规则确保仅接收目标设备的相关指令与数据。二Bootloader升级控制模块功能主导整个升级过程的逻辑控制包括指令解析、数据接收、Flash写入、程序跳转等。核心逻辑通过循环监听CAN总线数据解析上位机发送的各类指令查询、升级触发、数据传输、传输完成根据指令类型执行对应操作如接收数据时调用Flash写入接口升级完成后调用程序跳转接口。三Flash操作模块功能提供Flash的擦除、写入、读取等操作接口为固件存储提供支持。核心逻辑基于F28035的Flash控制器封装擦除扇区、写入数据、读取数据等函数确保操作的安全性与正确性避免误操作导致Flash损坏。六、适用场景与注意事项一适用场景工业控制设备如PLC、变频器、伺服控制器等需在现场环境下实现批量在线升级。汽车电子设备如车载控制器、传感器模块等通过CAN总线实现整车范围内的设备升级。嵌入式终端设备需远程维护、固件迭代频繁且不便于拆机的嵌入式设备。二注意事项硬件连接确保DSP设备与上位机的CAN总线连接正确CANH、CANL对应连接建议在总线两端添加终端电阻通常为120Ω提升通信稳定性。波特率匹配上位机与DSP设备的CAN波特率必须一致否则无法正常通信建议在升级前通过设备查询确认波特率参数。电源稳定性升级过程中需确保DSP设备的供电稳定避免因断电导致升级中断造成设备无法正常启动。固件兼容性选择与DSP设备型号F28035匹配的固件文件避免因固件不兼容导致升级失败或设备异常。七、总结DSP28035 CAN升级方案通过分层设计、多重校验、容错机制等技术手段实现了DSP设备固件的安全、高效、便捷升级。底层Bootloader模块确保了升级的可靠性与兼容性上位机控制端降低了操作门槛适用于多种工业与嵌入式应用场景。该方案无需拆机即可完成固件更新大幅提升了设备维护效率降低了维护成本同时为固件的迭代优化提供了灵活的支持。DSP28035的can升级方案 提供源代码测试用固件。 上位机采用c#开发。 说明 一、介绍 1、测试平台介绍采用M新动力的DSP28035开发板CAN口使用GPIO30\31。波特率为500K。 2、28035__APP为测试用的用户代码ccs10.3.1工程参考其CMD配置。 3、28035_Bootloader_CAN为bootloader源代码ccs10.3.1工程 4、SWJ为上位机采用VS2013开发C#语言。 5、测试使用的是周立功的USBCAN-IIcan盒如果用一些国产可以兼容周立功的则更换这里面的ControlCAN.dll即可。 6、升级的app工程需要生成hex去升级具体参考我给的工程的设置。 7、BootLoader代码只有D400这一个灯1s闪烁一次 APP代码D400\401\402三个灯同时200ms闪烁一次。 8、目前跳转时间设置为5s 9、协议的注释在上位机源代码中。