news 2026/5/1 9:09:30

DSP28035串口升级方案:含BootLoader、测试App及上位机源码,CCS10.3...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DSP28035串口升级方案:含BootLoader、测试App及上位机源码,CCS10.3...

DSP28035串口升级方案 带bootloader源码,测试app工程源码,上位机源码,说明文档。 上位机采用vs2013开发,c#。 工程采用ccs10.3.1开发。

DSP28035 串口 IAP 升级方案(标志位版)

—— 从 BootLoader → 上位机 → App 的完整链路解析

作者:xxx,2025-10

一、方案总览

  1. 目标
    在 TMS320F28035 上实现“纯串口、免仿真器”的在线升级。
    与“时间窗口”方案不同,本方案利用Flash 标志位决定启动行为,逻辑更可靠、可随时随地触发升级。
  1. 角色划分
    ┌---------------┐
    │ 上位机 PC │ Visual Studio 2013 开发,负责.hex/.bin 解析、协议封装、进度显示
    └------┬--------┘
    │ UART 115200-8-N-1
    ┌------┴--------┐
    │ BootLoader │ 位于 FLASH-A(0x3F 6000…),体积 < 8 KB,上电后先运行
    │ (v3) │ ① 读标志位 ② 决定“跳 APP”还是“等待升级”
    └------┬--------┘

    ┌------┴--------┐
    │ APP (用户) │ 位于 FLASH-C~G(0x3E 8000…),正常业务代码
    │ │ 必须实现“收到握手指令→写标志→软复位”
    └---------------┘
  1. 标志位布局(Sector H,0x3F 8000)
    地址 长度 含义
    0x3F8000 2 Word UpdateFlag[0] = 0x1234
    0x3F8002 2 Word UpdateFlag[1] = 0xABCD
    上电后 BootLoader 仅当双 Word 完全匹配时才进入升级模式,否则立即跳转 APP。
  1. 升级触发方式
    ① 首次烧写:无 APP,标志位为擦除态(0xFFFF),BootLoader 永久等待;
    ② 正常运行:APP 收到上位机“升级命令”→写入标志→软复位;
    ③ 可靠性:写标志前先擦除 Sector H,写完后立即校验,防止掉电误判。

二、通信协议(上位机 ↔ DSP)

  1. 帧格式(上位机源码Form1.cs中定义)
    +--------+--------+--------+--------+
    | 0x5A/0xA5 | Seq | Payload… | CHK |
    +--------+--------+--------+--------+
    CHK = 低字节累加和
  1. 交互时序
    ① 握手阶段(决定进入升级)
    PC→DSP:A5 A1 A1 CHK // 升级 APP
    PC→DSP:A5 B1 B1 CHK // 升级 Boot(保留)
    DSP→PC:A5 AA BB CHK // 握手成功,已擦除旧 APP

② 数据阶段(每帧 2 KB)

PC→DSP:5A Seq 2048-Byte AA CHK // 普通帧

PC→DSP:5A Seq N-Byte BB CHK // 尾帧(N≤2048)

DSP28035串口升级方案 带bootloader源码,测试app工程源码,上位机源码,说明文档。 上位机采用vs2013开发,c#。 工程采用ccs10.3.1开发。

DSP→PC:5A Seq AA CHK // 接收成功

DSP→PC:5A Seq BB CHK // 全部完成

③ 控制命令

PC→DSP:A5 A0 B0 CHK // CPU 软复位

DSP→PC:A5 A0 B0 CHK // 回声确认

  1. 超时与重传
    上位机 100 ms 定时器,15 s 内未收到有效帧则报“握手失败”;
    DSP 端无重传机制,出错直接丢弃等待主站重发。

三、BootLoader 关键实现(F28035bootloadersci_v3

  1. 链接器脚本
    MEMORY
    {
    FLASHA : origin = 0x3F6000, length = 0x001000 /BootLoader 8 KB/
    FLASHH : origin = 0x3F8000, length = 0x000400 /标志位 1 KB/
    }
    复位向量放在 0x3F7FF6,确保上电先执行 BootLoader。
  1. 启动流程
    void main(void)
    {
    InitSysCtrl();
    InitPieCtrl();
    InitPieVectTable();
    InitSci(); // GPIO28/29,115200
    if (CheckUpdateFlag() == TRUE) // 读 0x3F8000~0x3F8003
    {
    EraseFlash(FLASHC~FLASHG); // 擦除 APP 区域
    SendAck(0xAABB); // 通知上位机“可以发数据”
    UpdateLoop(); // 接收 2 KB 帧→写 Flash→校验
    ClearUpdateFlag(); // 升级成功清标志
    }
    JumpToApp(); // 固定跳转 0x3E8000
    }
  1. 跳转函数(汇编,确保关闭中断并复位栈)
    asm(" .globalJumpToApp\n"
    "
    JumpToApp:\n"
    " MOV @0x3E8000,PC\n");

四、APP 必须完成的改造(F28035APPTEXT示例)

  1. 链接器脚本
    把程序段、常量段全部映射到 FLASH-C~G,中断向量表复制到 RAM 并重新映射。
  1. 增加“升级服务”函数
    #pragma CODESECTION(EnterUpdateMode, "ramfuncs");
    void EnterUpdateMode(void)
    {
    DINT;
    Flash
    Erase(SECTORH, &FlashStatus); // 擦标志区
    UpdateFlag[0] = 0x1234;
    UpdateFlag[1] = 0xABCD;
    FlashWR(0x3F8000, UpdateFlag, 2); // 写标志
    EINT;
    RESET
    CPU(); // 软复位
    }
  1. 串口命令解析(可放在上位机自定义协议或 MODBUS 扩展)
    收到 0xA5A1A1 帧 → 调用 EnterUpdateMode();
    收到 0xA5A0B0 帧 → 立即 RESET_CPU()(用于远程重启)。

五、上位机软件(CodeProgram

  1. 技术栈
    .NET Framework 4.0 + WinForms + HexLibrary(解析 IntelHex)。
  2. 主要类
    SerialPortWrapper – 串口收发、缓存、CRC 校验
    Hex2Bin – 把.hex 转.bin 并填充 0xFF
    UpdateEngine – 状态机(握手→发送→校验→完成)
  3. 使用步骤
    ① 扫描串口→打开;
    ② 选择.hex/.bin;
    ③ 点击“开始下载”→自动完成擦除、发送、校验;
    ④ 成功/失败提示并自动复位 DSP。

六、典型升级全流程

  1. 出厂
    JTAG 烧 BootLoader → 断电拿掉仿真器 → 上电 D400 1 s 闪 → 等待串口升级。
  1. 首次烧 APP
    上位机选“APP.hex”→下载→100 % 后 DSP 自动跳转 → D400/401/402 200 ms 闪。
  1. 现场升级
    运行中 APP → 收到“升级指令”→写标志→软复位 → 重新进入 BootLoader → 同上流程。

七、注意事项与经验总结

  1. 时钟与波特率
    BootLoader 与 APP 必须采用相同 SYSCLK(60 MHz)与 SCI 波特率,否则握手阶段就会失步。
  1. 中断向量重映射
    APP 必须在启动后把 PIEVECT 复制到 RAM 并映射到 M0 向量表,否则跳转后中断异常。
  1. 写 Flash 时关中断
    擦/写 Flash 期间 CPU 取指暂停,若中断向量仍在 Flash 会触发非法访问;示例采用ramfuncs段把关键代码搬入 RAM。
  1. 掉电保护
    标志位采用“双 Word + 擦-写顺序”机制,确保任何时刻至少有一个 Word 为非法值,防止上电误判断。
  1. 跨版本兼容
    协议帧头预留 Seq 字节,后续可扩展“断点续传”、“压缩”等功能。

八、参考工程与快速体验

  1. 文件夹说明
    F28035bootloadersciv3 – BootLoader 源码(CCS10.3.1)
    F28035
    apptextV2 – 最小 LED 闪烁 APP(带升级指令)
    F28035APPTEXT – 完整电源控制 APP(含 EEPROM、CAN、PID)
    CodeProgram – 上位机(已编译.exe 在 bin\Release)
  1. 三分钟跑通
    ① 用 CCS 打开 BootLoader 工程→编译→JTAG 烧录;
    ② 拔掉 JTAG,USB-TTL 接 GPIO28/29/GND;
    ③ 打开 CodeProgram.exe→选 APP 的.hex→Download;
    ④ 观察灯状态:1 s 闪 → 下载中 → 200 ms 闪,升级完成。

九、结语

本方案已在 M新动力 DSP28035 开发板批量验证,支持一键远程升级免拆机零配置

开发者只需把“EnterUpdateMode()”嵌入既有通信协议,即可让任何带串口的 F28035 产品获得在线升级能力。后续可无缝迁移到 CAN、USB、485 等物理层,协议层保持不变。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 4:02:20

TRAE提示词技巧完全指南:6大场景助你高效开发

​ 【个人主页&#xff1a;玄同765】 大语言模型&#xff08;LLM&#xff09;开发工程师&#xff5c;中国传媒大学数字媒体技术&#xff08;智能交互与游戏设计&#xff09; 深耕领域&#xff1a;大语言模型开发 / RAG知识库 / AI Agent落地 / 模型微调 技术栈&#xff1a;Pyth…

作者头像 李华
网站建设 2026/5/1 8:43:16

.NET 自动依赖注入神器

目录 什么是 Injectio&#xff1f; 安装 基础用法 1️⃣ 创建接口和实现类 2️⃣ 在入口程序中调用 Injectio 方法注册 注册特性&#xff08;Attributes&#xff09; 特性可选属性 重复注册策略 注册策略 示例 单例服务 作用域服务 瞬态服务 工厂注册 开放泛型…

作者头像 李华
网站建设 2026/5/1 5:03:38

横评后发现 9个AI论文软件:继续教育必看!毕业论文+格式规范全攻略

在当前学术研究与论文写作日益数字化的背景下&#xff0c;AI写作工具已成为提升效率、优化内容质量的重要辅助。尤其对于继续教育群体而言&#xff0c;如何在有限时间内完成高质量的毕业论文&#xff0c;成为亟需解决的问题。为此&#xff0c;笔者基于2026年的实测数据与用户反…

作者头像 李华
网站建设 2026/4/30 18:45:08

超市管理系统的设计与实现 桂林理工大学 开题报告

目录 超市管理系统的设计与实现背景系统设计目标技术选型与架构创新点与难点预期成果 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 超市管理系统的设计与实现背景 随着零售行业信息化发展&#xff0c;…

作者头像 李华
网站建设 2026/5/1 8:38:21

主流AI视频生成商用方案选型评测:关键能力与成本效益分析

引言&#xff1a;从技术热潮到商业落地的挑战随着Stable Diffusion、Sora等模型的发布&#xff0c;AI视频生成技术正从实验室演示快速走向商业应用的前沿。对于广大开发者、中小型企业和内容创作者而言&#xff0c;如何将这项前沿技术转化为稳定、可控、高性价比的生产力工具&a…

作者头像 李华