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.

[参考译文] 编译器/CCCStudio-C2000:引用.H0SARAM$heap部分链接失败

Guru**** 2465890 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/656806/compiler-ccstudio-c2000-linking-fails-with-reference-to-section-h0saram-heap

部件号:CCStudio-C2000

工具/软件:TI C/C++编译器

你好。

编译器抱怨程序的可用内存不足。  我尝试删除各种函数,数组等,但没有结果。  查看.map文件显示,H0SRAM从0x003f8000开始,长度为0x0.2万,左边为0x19d (参见下文)。  显示的错误如下。  如果剩余0x19d字节,如何耗尽可用内存?  更重要的是,如何解决此编译/链接器问题?

"./myfilecfg.cmd",第387行:错误#1.0099万-D:程序不适合
可用内存。区域的照射行程定位和对齐/阻止失败
".H0SARAM$heap"大小0x200第1页。 可用内存范围:
H0SARAM大小:0x2000未使用:0x19d最大孔:0x19d
错误#1.001万:链接时发生错误;未生成"820-0264-A10.out
链接>

>>编译失败
gmake:***[820-0264-A10.Out ]错误1
gmake:target `all' not remake because of errors.

内存配置

名称使用的原点长度未使用的属性填充
---------------- ----------------- ------------------- ----------------- ----------------- --------
第0页:
H0SARAM 0万00 000020000万02000 0000000020亿00 000020000万02000 RWIX0.2万 RWIX
L1SARAM_A 0.9万 000000ff 0.0023万 000000dc RWIX
OTP 003d780万 00040万 0000万 0000.04万 RWIX
CRC 003d800万 0000.1万 0000万 0000.0001万 RWIX
begin_flash 003d800.1万 0000.2万 0000.2万 0000万 RWIX
FLASH_BJ_APPLICATION 003d8003 0001dffc 0001c180 00001e7c000001e7c RWIX
Flash_a_bootloader 003f6000 00001f80 000000008万00000 00001f800万 00001f80 RWIX0.0001万 RWIX
CSV_RSVD 003f7f8000万 0000007600万 0000000万 0000.0076万 RWIX
密码003f7ff800万 0000000.8万 0000万 00000008 RWIX
BootROM 003ff00000000 00000fc000000000 00000fc0 RWIX

第1页:
M0SARAM 0.004万 000003c0 000000000万00 000003c00.0003万c0 RWIX
M1SARAM 0.0004万00 000004000万00400 000000004亿00 000004000万00400 RWIX0.04万 RWIX
DEV_EMU 0.0008万80 000001808万00180 000000d21.8亿d2 000000ae200万ae RWIX
flash_regs 0万a80 000000608000万60 000000086000万08 000000580.8万00058 RWIX0.0058万 RWIX
CSM 0万ae0 000000100万10 000000101万00010 000000000.001万 00000000 RWIX00000000 RWIX
XINTF 0万b20 000000202万00020 000000000.002万 00000000 RWIX00000000 RWIX
CPU_TIMER000000 00000c0万 000000800万 0000000.8万 0000万 RWIX
PIE_CTRL 0万ce0 00000020000000020 0000001a 0.0006万 RWIX
PIEVECT 0万d00 000001000.0001万00 000001000.0001万00 000000000万00000 RWIX0万 RWIX
ECANA 0.006万00 000000400万00040 000000340.004万 00000034 0000000c00000034 0000000c RWIX0万 RWIX
ECANA LAM 0.006万40 000000404万00040 000000400.4亿40 000000004万00000 RWIX0万 RWIX
ECANA_MOTS 0.006万80 000000408万00040 000000400.4亿40 000000004万00000 RWIX0万 RWIX
ECANA MOTO 0.006万c0 000000400万40 000000404万00040 000000000.004万 00000000 RWIX00000000 RWIX
ECANA_MBOX 0.0061万00 000001000万00100 000001001亿00 000000000万00000 RWIX0万 RWIX
系统0.007万10 000000201万00020 000000200.2亿20 000000002万00000 RWIX0万 RWIX
SPIA 0.007万40 000000104万00010 000000100.1亿10 000000001万00000 RWIX0万 RWIX
scia 0.007万50 000000105万00010 000000100.1亿10 000000001万00000 RWIX0万 RWIX
XINTRUPT 0.007万70 000000107万00010 000000100.1亿10 000000001万00000 RWIX0万 RWIX
GPIOMUX 0.007万c0 000000200万20 000000202万00020 000000000.002万 00000000 RWIX00000000 RWIX
GPIODAT 0.007万e0 000000200万20 000000202万00020 000000000.002万 00000000 RWIX00000000 RWIX
ADC 0.0071万00 000000200万00020 0000001a0.002万 0000001a 000000060000001 00000006 RWIX0.0006万 RWIX
eva 0.0074万00 000000400万00040 000000320.004万 00000032 0000000e00000032 0000000e RWIX0万 RWIX
EVB 0.0075万00 000000400万00040 000000320.004万 00000032 0000000e00000032 0000000e RWIX0万 RWIX
scib 0.0077万50 000000105万00010 000000100.1亿10 000000001万00000 RWIX0万 RWIX
MCBSPA 0.0078万00 000000400万00040 000000250.004万 00000025 0000001b00000025 0000001b RWIX0.0001万 RWIX
LSARAM 0.008万00 000010000万01000 00000db40.1万 00000db4 0000024c0万 0000024c RWIX40000024 RWIX
L1SARAM_B 0.91万 00000f00 00000f00000000f00 000000000万00000 RWIX0万 RWIX
ZONE6_ASRAM 10万 0003ffff 0001aba8 00025457800025457 RWIX
CSM_PWL 003f7ff800万 0000000.8万 0000.0008万 00000000 RWIX
H0SARAM 003f800万 0000.2万 0.0001万e63 0000019d30000019d RWIX

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hoan Chau 说:
    如果剩余0x19d字节,如何耗尽可用内存?[/QUOT]

    H0SARAM$heap部分的大小为0x200,大于第1页上内存范围H0SARAM中的0x19d。

    Hoan Chau 说:
    如何解决此编译/链接器问题?[/QUOT]

    内存范围LSARAM剩余0x24c。 如果在您的系统中有意义,请尝试将.H0SARAM$heap放在那里。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢,George。 听起来是一个很好的建议,可能有一天会有用。 对于此问题,我发现声明的大数组没有 #pragma data_section,然后将其放在片上内存中。 这导致了H0SARAM错误。 例如,
    //#pragma data_section(FuelSamp,"ramdata");//注释后表示FuelSamp将放置在片上RAM上。
    Int32 FuelSamp[FUEL SAMP_LEN];
    #pragma data_section应用于这些有问题的数组后,应用程序编译时不会出现H0SARAM错误。