当前位置: 首页 > news >正文

TMS320F28335二次bootloader在线IAP升级

F28335总共ABCDEFGH个区域,每个32K*16bits,即64K字节。

bootloader代码占用A区,地址0x338000~0x33FF7F,cmd文件中SECTIONS部分,需要添加Flash28_API相关信息,具体下载Flash28335_API_V210的demo,参考里面的cmd文件。另外就是添加头文件,库文件,添加MemCopy等。

关键部分:

1. bootloader的cmd文件中,Flash28_API的LOAD=FLASHF,ramfuncs的LOAD=FLASHF,即都选择F区。

2. BEGIN的origin=0x33FFF6, length=0x000002

应用APP代码占用C区和D区,使用G区和H区作为升级临时备份区域。同样cmd文件中添加Flash28_API相关信息。另外就是添加头文件,库文件,添加MemCopy等。

关键部分:

1. APP的cmd文件中,Flash28_API的LOAD=FLASB,ramfuncs的LOAD=FLASHB,即都选择B区。千万不要和bootloader中选择同样的F区,因为如果用到中断服务函数,会导致存储在FLASH中的Flash_API代码不一致。即bootload和APP不能共用Flash28_API和ramfuncs中定义的FLASH区域。

2. BEGIN的origin=0x320000,length=0x000002,即D区的起始地址,同时修改FLASHD的origin=0x320010,length=0x00F000(这个可以长一点,不超过C区范围即可)。

最后E区保留,作为数学库的区域。另外在H区的最后1K空间,用来保存是否升级标识。

总体逻辑如下:

1. 上电,从地址0x33FFF6进入厂家的boot,厂家的boot进入我们自己的bootloader。

2. 在自己的bootloader中读取H区最后1K空间是否存在升级标识。

3. 如果不存在,跳转到0x320000(D区),使用asm("   LB 0x320000");命令。

4. 如果存在,拷贝G区,H区数据覆盖C区、D区。然后再跳转到0x320000。

5. 进入APP后,读取H区最后1K空间是否存在升级标识,如果存在,就擦除G、H区。

http://www.dtcms.com/a/24343.html

相关文章:

  • 在windows10上,部署DeepSeek模型在本地电脑
  • 【钱包】【WEB3】【Flutter】一组助记词如何推导多个账号钱包
  • Unity 淡入淡出
  • agent和android怎么结合:健康助手,旅游助手,学习助手
  • 【插入排序】Insert_Sort
  • 电机控制::软件架构::微型软件架构
  • 基于开源Odoo、SKF Phoenix API与IMAX-8数采网关的圆织机设备智慧运维实施方案 ——以某纺织集团圆织机设备管理场景为例
  • I²C简介
  • OSPF协议五种网络类型中DR和BDR选举说明
  • Linux内核实时机制4 - 实时改造优化 - PREEMPT_RT方案
  • Linux学习笔记之深入理解进程调度
  • 3、cadence从零开始让一个VCO起振——如何调频
  • 复现log4j2的jndi注入成功反弹shell
  • SQL进阶技巧:如何统计用户跨端消费行为?
  • (leetcode 1749 前缀和)1749. 任意子数组和的绝对值的最大值
  • 【嵌入式Linux应用开发基础】进程实战开发
  • 华为固态电池引发的思索
  • 2.18寒假
  • 06:高级命令
  • DeepSeek驱动下的数据仓库范式转移:技术解耦、认知重构与治理演进
  • 解析JUC包底层源码实现
  • 3.5 使用Tokenizer编解码文本:从原理到企业级实践
  • ArcGIS笔记之度分秒与十进制度的转换
  • 【分治法】棋盘覆盖问题 C/C++(附代码和测试实例及算法分析)
  • C语言——字符串
  • Udp发送和接收数据(python和QT)
  • 2025-02-18 学习记录--C/C++-PTA 7-25 念数字
  • 鱼骨图技能详解
  • macos安装jmeter测试软件
  • PHP语法入门完全指南(2024新版)