DSP通过串口进行程序更新
【总结】DSP通过串口进行程序更新
绕了很多弯路,最终实现了通过串口更新程序,并未覆盖原始程序,使得如果更新程序不能正常运行的情况下,有重新恢复原始程序的可能。
几个主要步骤总结一下:
1、原始程序中已经有了相应的FlashAPI函数,并且正确烧写入Flash中,程序运行时可以监测串口中断,并将API函数放在RAM里运行。
2、更新的程序.cmd文件要合理配置,在我的程序里原始程序和更新程序存储在不同的Flash空间中,这样可以实现重新恢复原始程序的可能。
3、生成.hex文件。需要更新的程序经过编译没有错误后会生成.out文件,通过TI提供的Hex2000工具将.out文件转换成.hex文件。(文件开头为AA 08 00……)
4、转换的.hex文件中包含了所需更新程序的PC入口指针,每段数据块的大小以及数据块存储地址,这些数据应该准确无误的保存。这需要在原始程序中编写相关代码。特别提出的是,生成的.hex文件最后一些数是要写入0x3F7FF6出的值,这需要单独存储,这些数至关重要,只有正确写入才能执行正确的跳转指令,从而断电复位后运行更新后的程序。
5、.hex文件中的数据都是先写入RAM里,当接收完最后的值后,开始通过FlashAPI函数将这些数据正确无误的写入目的Flash地址。这里当然包括0x3F7FF6处的值。
最后,断电复位,新的程序就开始运行了!
TI DSP 281x无需仿真器,串口烧写Flash方法
作者:Free 文章来源:Free 点击数:320 更新时间:2009-10-20
注:此方法尚未经论证,按此方法操作之前,请慎重!
考虑到众多买不起仿真器的劳苦大众!下面提供利用PC RS232下载flash到281x的方法:
第一步:安装CCS2.2或更高版本
以确保你的源代码能编译为下载源码:xxx.out文件
第二步:安装串口编程算法项目文件:sdf28xx_v3_0_serial (Ti网站上有下载)
详情请阅读包含的:SDFlash_Serial_RefGuide_v3_0.pdf文件
第三步:在算法项目文件中设置好相应的时钟频率,并生成.out文件
(1)在CC中导入F2812SerialFlash.pjt文件
文件目录:C:\CCStudio_v3.1\specdig\sdflash\mydrivers\DSP281x_v3_0\DSP281x_serial\build\F28xxSerialFlash
(2)设置好你的目标板相应的时钟频率
在Flash280x_API_Config.h中相应的PLL时钟,我使用的是20M晶掁则选择:
#define CPU_RATE 10.000L // for a 100MHz CPU clock speed (SYSCLKOUT)
(3)保存并编译项目文件,生成F2812SerialFlash.out文件存放在:
C:\CCStudio_v3.1\specdig\sdflash\mydrivers\DSP281x_v3_0\DSP281x_serial\bin
注:确定你的程序空间定义在flash段,(在CMD文件修改)
第四步:安装SdFlashV1.60或更高版本
第五步:编辑sdopts.cfg文件,此文件存放在你所安装的windows的System32目录下
(1)用记事本的方
式打开sdopts.cfg
(2)在"# End of sdopts.cfg”前加入如下文本:
[EmulatorId=C1]
EmuPortAddr=0xC1
EmuPortMode=RS232
EmuProductName=SERIAL_FLASH
[EmulatorId=C2]
EmuPortAddr=0xC2
EmuPortMode=RS232
EmuProductName=SERIAL_FLASH
[EmulatorId=C3]
EmuPortAddr=0xC3
EmuPortMode=RS232
EmuProductName=SERIAL_FLASH
[EmulatorId=C4]
EmuPortAddr=0xC4
EmuPortMode=RS232
EmuProductName=SERIAL_FLASH
第六步:打开SDFlash,按SDFlash_Serial_RefGuide_v3_0.pdf提供的方法指定算法文件路径
在Project设置中,若你使用PC的COM1则选择仿真器为C1,COM2则选择C2
第七步:将DSP的SCI_A和PC的RS232口连接.将DSP的如下脚管置为相应的电平,然后复位
复位时:GPIOF4=0 GPIOF12=0 GPIOF3=1 GPIOF2=1
注:GPIOf4为SCI_A TXD端子,复位完成后应恢复原DSP能传输信号状态
第七步:点击SdFlash菜单的Flash项--->点击Start,即可!!!