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.

请教C6743 DSP在CCS3.3环境下编译程序出现问题(CMD文件如下): can't allocate .far, size 00027540 (page 0) in DSP2RAM (avail: 00020000)

error: can't allocate .far, size 00027540 (page 0) in DSP2RAM (avail:
00020000)
>> error: can't allocate .text, size 000082a0 (page 0) in L1PRAM (avail:
00007fff)

CMD文件如下:

-l rts64plus_eh.lib
-l C6747bsl.lib

-c
-stack 0x00002000 /* Stack Size */
-heap 0x00002000 /* Heap Size */

MEMORY
{


DSP1RAM: o = 0x11820000 l = 0x00020000
L1PRAM: o = 0x11E00000 l = 0x00007fff
L1DRAM: o = 0x00F00000 l = 0x00007fff
DSP2RAM: o = 0x00820000 l = 0x00020000

}

SECTIONS
{
.bss > DSP2RAM
.cinit > DSP2RAM
.cio > DSP2RAM
.const > DSP2RAM
.stack > DSP2RAM
.sysmem > DSP2RAM
.data > DSP2RAM
.switch > DSP2RAM
.far > DSP2RAM
.src_data > DSP2RAM
.vectors > L1PRAM
.text > L1PRAM
}

  • 看一下spru186和spru187文档的linker章节,学习一下cmd文件的结构。

    上面信息告诉你空间放不下了,不明白上面怎么会把.text放到L1P,这里上电时是Cache,另外也没见加外部内存,程序大了放不下,就要放到外部内存了。

    yinglan li 说:
    .vectors > L1PRAM
    .text > L1PRAM

     

  • 您好,谢谢您的回复。

    还想请问下:

    1 L1P 、L1D这两个是不是不能作为映射存储器出现在CMD中???

    2 C6743的L2 RAM有两段地址:0x0082 0000-0x0083 FFFF,0x1182 0000-0x1183 FFFF,这两段是同一个物理内存吗?可不可以同时在这两段地址里放不同的程序???

    3 有没有具体的说明哪个段放在DSP内存,哪个段可以放在外部内存???

  • L1P、L1D这两个RAM不能存放程序吗?那C6743的内部RAM就只能用128K的L2RAM吗???搞不懂,还望赐教

  • yinglan li 说:

    您好,谢谢您的回复。

    还想请问下:

    1 L1P 、L1D这两个是不是不能作为映射存储器出现在CMD中???

    : 最好不要,因为一般来说不会放东西上去的。而且存在于cmd当中,还要当心误放。

    2 C6743的L2 RAM有两段地址:0x0082 0000-0x0083 FFFF,0x1182 0000-0x1183 FFFF,这两段是同一个物理内存吗?可不可以同时在这两段地址里放不同的程序???

    :是同一段物理内存。

    3 有没有具体的说明哪个段放在DSP内存,哪个段可以放在外部内存???

    :原则是片上内存快,放访问频繁的段或代码,访问少的放片外。

  • yinglan li 说:

    L1P、L1D这两个RAM不能存放程序吗?那C6743的内部RAM就只能用128K的L2RAM吗???搞不懂,还望赐教

    你可以做个简单的实验,看能否下载成功就知道能不能放了。

    不是完全不能放后,需要在程序里自己处理,因为默认状态是CACHE,不可访问的。

x 出现错误。请重试或与管理员联系。