【DSP应用开发】TI DSP28377S 二次bootloader开发

TI DSP 28377S 二次bootloader开发

1、目前程序分配空间说明
FLASHA -> 存放二次bootloader相关程序,包括User_Update();
User_bootloader();SCI_RX();等涉及待升级程序接收、写入flash、发送返回报文函数。
FLASHB -> 存放二次bootloader相关数据,包括CRC校验等数据表以及官方提供API函数。
FLASHE ~ FLASHH -> 存放正在运行程序,即main();等应用函数。
FLASHS ~ FLASHV -> 存放待升级程序,即main();等应用函数。
2、二次开发注意事项
2.1、flash api函数在使用时,需用EALLOW,EDIS;如图2-1。
图2-1
2.2、因为F28377S有两个bank等级的flash,所以每次需初始化相应bank。同样的,调用flash api函数需使用EALLOW,EDIS;如图2-2。
图2-2
2.3、flash写操作,每次只可以最多写8个word的数据,更多数据只能通过循环写入,如图2-3。
图2-3
2.4、因flash运行速度较慢,所以flash api函数需拷贝到RAM运行。如图2-4,图2-5。
图2-4
图2-5
2.5、看门狗复位会导致RAM清空,所以当由User_Update函数跳转至User_bootloader函数时使用回调函数形式。
2.6、F2837xS_CodeStartBranch.asm文件存放上电流程函数的跳转。而程序烧录完毕需启用看门狗复位来运行新的程序,为了保证复位后codestart目标地址正确,所以将其放至FLASHA中。
2.7、程序每次更新编译后,其c_int00函数中_args_main函数的地址不是固定的,所以将其放至FLASHE中,以备每次烧录新程序更新其地址。
2.8、CCS生成hex的方法:
工程名右击,选择properties,选择C2000 Hex Ultility,勾选enable ‘C2000 Hex Ultility’,点击Edit flags 输入“–memwidth=16 --order=LS --romwidth=16 --intel”。如图2-6。
图2-6
在Output Format Option中Output Format选择Intel hex格式,如图2-7所示。
图2-7
2.9、因程序中设置存储应用程序的空间为FLASHE~FLASHH,其FLASHE的起始地址为0x88000,所以只需将地址0x88000以后的数据分包通过串口发送即可。同时程序中设置了接收缓存为1200个字节。一帧数据不仅包括待升级数据,还包括帧头、帧尾、地址、校验等数据。所以建议分包数据为1024个字节,如图2-8。附录一中将附上数据报文格式。
图2-8
2.10、注意待升级程序的区域为FLASHS~FLASHV,其起始地址为0xC8000。所以数据包中的地址应加上0x40000。
2.11、添加库文件路径。将F021_API_F2837xS_FPU32.lib和rts2800_fpu32.lib两个库文件添加入工程,如图2-9所示。
图2-9

附录一
/***************************************************************************
 *  数据传输格式:
 *  1、帧头:0x55AA         ---2Bytes
 *  2、地址:0x0001         ---2Bytes
 *  3、保留:0x0000         ---2Bytes
 *  4、类型:               ---2Bytes
 *          0x0003 -> 命令
 *          0x0006 -> 数据
 *  5、数据长度:           ---2Bytes
 *  6、数据:               ---nBytes
 *          0x0003  -->  0xAABB : 开始接收
 *          0x0003  -->  0xEEFF : 接收完成
 *          0x0006  -->  更新数据
 *
 *  7、校验:Modbus-16      ---2Bytes
 *  8、帧尾:0x5AA5         ---2Bytes
 *  ---------------------(n+14)Bytes
 *  example: word buffer
 *  -  帧头  -  地址  -  保留  -  类型   -  长度  -  数据1 -  数据2  -  数据3 -  数据4 -  校验  -  帧尾   -
 *  |   00   |   01   |   02  |   03   |   04   |   05   |   06   |   07   |   08   |   09   |   10   |
 *  |  55AA  |  0001  |  0000 |  0006  |  0008  |  000C  |  4000  |  AABB  |  CCDD  |  F2BD  |  5AA5  |
 * 
 *  example1: Send start
 *  55 AA 00 01 00 00 00 03 00 02 AA BB 5D 97 5A A5
 *  example2: Send over
 *  55 AA 00 01 00 00 00 03 00 02 EE FF 6E A4 5A A5
************************************************************************/

目前遇到的问题:
程序升级后能够成功运行,DEBUG模式下复位 后也没有问题,但是芯片断电后,再重新上电,程序无法运行。

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值