Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带有TMS320F2812的TI CCS v3.3,如何在DSP';s闪存和导出的bin文件?_C_Build_Texas Instruments_Code Composer - Fatal编程技术网

使用带有TMS320F2812的TI CCS v3.3,如何在DSP';s闪存和导出的bin文件?

使用带有TMS320F2812的TI CCS v3.3,如何在DSP';s闪存和导出的bin文件?,c,build,texas-instruments,code-composer,C,Build,Texas Instruments,Code Composer,我试图将特定数据放在DSP闪存中的特定地址。到目前为止,我一直在尝试生成一个原始二进制文件,提供给客户用于固件升级,数据从二进制文件中剥离并替换为0xFF 我现在正在做的是使用一个定义的内存部分,我将它输入到名为FLASH_ID的TCF文件中,从0x3D8000(处理器闪存中的第一个地址)开始,它有32个字长,位于数据空间中。在链接器命令文件中,我创建了一个名为\u FLASH\u ID的部分,并将其指向FLASH\u ID,指定page=1(数据空间)。然后我使用#pragma data_se

我试图将特定数据放在DSP闪存中的特定地址。到目前为止,我一直在尝试生成一个原始二进制文件,提供给客户用于固件升级,数据从二进制文件中剥离并替换为0xFF

我现在正在做的是使用一个定义的内存部分,我将它输入到名为FLASH_ID的TCF文件中,从0x3D8000(处理器闪存中的第一个地址)开始,它有32个字长,位于数据空间中。在链接器命令文件中,我创建了一个名为\u FLASH\u ID的部分,并将其指向FLASH\u ID,指定page=1(数据空间)。然后我使用#pragma data_section指令将const char[32]指向该节

链接器命令文件的相关部分:

SECTIONS
{
    TO_FLASH_ID : > FLASH_ID, PAGE = 1
}
相关C代码:

#pragma DATA_SECTION(FLASH_ID, "TO_FLASH_ID")
const char FLASH_ID[32] = {'0','0','.','0','0','.','0','0','.','0','6',0,'P','R','O','J','-','N','A','M','E',0,0,0,0,0,0,0,0,0,0,0};
这一切都很好,在闪烁DSP后,我看到地址0x3D8000,数据就在那里。。。但是,当我使用TI的工具(hex2000.exe和FileIOShell.exe)生成固件的原始映像时,数据将替换为0xFF。。。以下是我用于Hex2000实用程序的命令文件:

proj.out
-o proj.hex
-m
-memwidth 16
-romwidth 16
-image
ROMS
{
    FLASH2812:  origin = 0x003d8000, length = 0x00020000, romwidth = 16, fill = 0xffff
}

有什么好处?我想这和从TI的.out文件到内存空间的原始二进制图像的转换过程有关。。。我曾经考虑过,在将数据上传到我们的PC软件时,通过让代码在整个地址空间中运行指针来生成这个函数。。。但我不希望这样,因为这会破坏我开发的各种自动构建工具


谢谢你的帮助

如果今年以后有人发现了这个问题,我通过在TCF文件和链接器命令文件中将内存部分更改为代码空间而不是数据空间来解决这个问题。我仍然使用DATA\u SECTION pragma(而不是CODE\u SECTION pragma)将常量字符串指向该节


我在这里学到了两件事:从固件映像二进制文件中省略任何指定为数据空间的内容(至少使用我用来生成它的方法),您可以使用data_节pragma将数据放入定义为代码空间的内存。

命令
FLASH2812:origin=0x003d8000,length=0x00020000,romwidth=16,fill=0xffff
似乎正是您所面临的功能…我认为fill指令是指定要写入哪些未使用的内存地址。。。相反,它将0xFF写入应该包含数据的内存地址。。。当我删除fill指令时,这64个字节用0而不是FF填充,这一点也不好。