当前位置: 首页 > 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区。

相关文章:

  • 在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驱动下的数据仓库范式转移:技术解耦、认知重构与治理演进
  • 宣布停火后,印控克什米尔地区再次传出爆炸声
  • 体验中国传统文化、采购非遗文创,波兰游客走进上海市群艺馆
  • 道指跌逾100点,特斯拉涨近5%
  • 国防部:奉劝有关国家不要引狼入室,甘当棋子
  • 吴勇强、高颜已任南京市委常委
  • 中国以“大幅开放市场”回应贸易保护主义