tms320f28035_tms320f28035 dma_tms320f28035 解密(2)

电脑杂谈  发布时间:2017-03-08 03:10:47  来源:网络整理

16, fill=0xFFFF

}

其中,Example_2803xAdcSoc.out 是应用程序经过CCS生成的文件;-map是生成map文件;-o是生成hex文件;-m是Motorola-S 格式;-memwidth 16指存储器位数为16 bit;-image指选择映像文件;ROMS 是所需要转换的起始地址、长度、位数及填充。本文选择从0x3e8000开始,长度是4 KB,即FlashH,FlashH中未用的部分用0xFFFF填充,本文把这个批处理文件命名为:Example_2803xAdcSoc.cmd。接下来要生成.bin文件,先做一个MS-DOS型批处理文件,其内容如下: IFileIOShell.exe -i Example_2803xAdcSoc.hex -o Example_2803xAdcSoc.bin

注意要把Example_2803xAdcSoc.out、hex2000.exe、FileIO

Shell.exe、Example_2803xAdcSoc.cmd和MS-DOS型批处理文件放在同一目录下,然后双击MS-DOS型批处理文件,即生成所需要的Example_2803xAdcSoc.bin文件。

2.2 底层程序

底层程序用于实现将串口发送的数据烧写至Flash的指定部分,涉及到应用程序的正确定位和复位后的启动过程,是实现整个升级的重点。tms320f28035底层程序流程图如图1所示。底层程序主要实现以下功能[3]:

(1)上电复位查询功能。上电复位后通过接收上位机发送的命令判断是否升级。若上位机发送的是升级命令,则跳转到底层程序中升级部分执行;否则,跳转到原有的应用程序处执行。

(2)搬移烧写程序的功能。由于F28035片上Flash不支持在其中一个扇区运行程序去擦除或烧写其他扇区,故完成接收数据和烧写Flash工作的这部分程序(即底层程序中的升级部分程序)需搬移至片内RAM或片外RAM上运行。实现程序搬移的函数为:

void MemCopy (Uint16 *SourceAddr, Uint16 *Source End

Addr, Uint16 *DestAddr)

{

while (SourceAddr < SourceEndAddr)

{

*DestAddr++ = *SourceAddr++;

}

return ;

}

其中,SourceAddr为Flash中升级程序的起始地址,SourceEndAddr为Flash中升级程序的结束地址;DestAddr为搬移至内存的首地址。

(3)接收上位机发送的应用程序代码并保存到DSP

指定的内存中(一般为RAM区)。这是通过串口RS232来实现的。并确定用于数据保存的这部分内存未被占用。例如,若需要将应用程序代码暂存到F28035的L0 SARAM区域(地址空间0x3F8000-0x3F8800)。定义数组Uint16 BlockBuffer[2048]用于存储应用程序代码,在底层程序中采用存储器定位语句,将上面的缓冲数组定位到相应的存储空间:

#pragma DATA_SECTION(BlockBuffer,“BlockTransferbuffer”);

在底层程序CMD文件中,采用定位语句,将BlockTransferbuffer定位到DSP的L0 SRAM空间:

BlockTransferBuffer:> L0 SARAM PAGE=2

//地址空间:0x3F8000~0x3F8800

通过以上底层程序的设置,可将应用程序缓存到指定的RAM区域中。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-36370-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...