工具/软件:TI C/C++编译器
您好、专家、
我的客户生成的 bin 文件最大为600M 字节,太大,无法使用,bin 文件包括初始化 RAM 值的信息, 导致如此大尺寸的原因是什么?是否有任何方法可以删除 bin 文件中的 RAM 信息,因为这些信息从未用于减小 bin 文件的大小?
以下是客户发布的代码、是否有针对此问题的任何建议?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
您好、专家、
我的客户生成的 bin 文件最大为600M 字节,太大,无法使用,bin 文件包括初始化 RAM 值的信息, 导致如此大尺寸的原因是什么?是否有任何方法可以删除 bin 文件中的 RAM 信息,因为这些信息从未用于减小 bin 文件的大小?
以下是客户发布的代码、是否有针对此问题的任何建议?
当我构建项目时、不会生成 bin 文件。 因此、我不确定我提出的解决方案是否能够解决问题。 但我有足够的信心提出这一建议。
在 C 源文件 f2838x_cpu1_allocat_ecat_TO_cm.c 中,更改此代码中的第一行...
uint32_t IPC_RAM_C28[64]={0}; #pragma DATA_SECTION (IPC_RAM_C28、"MSGRAM_CPU_TO_CM_RT")
(笑声) 至...
uint32_t IPC_RAM_C28[64]; #pragma DATA_SECTION (IPC_RAM_C28、"MSGRAM_CPU_TO_CM_RT")
请注意阵列 IPC_RAM_C28未初始化的情况。
链接器命令文件包含此相关行...
MSGRAM_CM_TO_CPU_RT:> CMTOCPURAM_RT,type=NOINIT
由于数组 IPC_RAM_C28是该输入段中的唯一变量、因此此行会有效地分配该变量。 根据当前定义、数组 IPC_RAM_C28会进行初始化、因此无法放置在具有特殊属性 type=NOINIT 的输出段中。 不支持该组合。 我怀疑您不打算对该数组进行初始化。 通过删除={0}、不再对其进行初始化。
有关将初始化变量与 NOINIT 段组合在一起所导致问题的另一个示例、请参阅 此论坛主题。
创建 bin 文件时忽略未初始化的段、这可能是您对包含数组 IPC_RAM_C28的段的预期值。
[引用 user="StrongZhang "]我的客户生成的 bin 文件最大为600M 字节
当阵列 IPC_RAM_C28错误地初始化时、这会有效地创建一个初始化段、该段在存储器中与所有其他初始化段相隔很长的距离。 无论大小如何、bin 文件表示存储器中的间隙的唯一方法是将其填充为0。 一个副作用是 bin 文件可能非常大。
谢谢、此致、
乔治