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.

[参考译文] CCS/AM5728:从 L2 SRAM 执行 DSP 代码

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/837670/ccs-am5728-dsp-code-execution-from-l2-sram

我尝试将一些代码从 OCM 移动到 L2 SRAM。 我更改了缓存配置、以便将其设置为128KB 的 L2SRAM 和128KB 的缓存。 我的程序编译链接、映射文件看起来正确、elf 文件看起来正确、但我的程序无法运行。

如果我将堆栈移动到 L2SRAM、程序将运行。

由于我使用 L2 SRAM 的前32KB、0x800000h 至0x807FFF 作为与 A15的共享存储器、因此我将 L2SRAM .text 段链接到0x808000开始。 我在本节中的代码少于128KB。

是否必须设置权限位才能从 L2SRAM 中执行? 我在手册中没有看到任何内容。

我不明白为什么这不起作用。

谢谢

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

    您好!

    您在 linker.cmd 和.cfg (如果有)文件中进行了此重映射、对吧? 请参阅

    此致、
    Yordan

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

    这是我的链接器命令文件的简要示例。 出于安全原因、删除了某些段并更改了函数名称。

    存储器

       NEARRAM:origin = 0x40400000、length = 0x200
       RAM:origin = 0x40400400,length = 0x17fc00
       SHAREDRAM:origin = 0x800000,length = 0x8000
       L2SRAM:origin = 0x808000、length = 0x20000

    部分

       vecs:> NEARRAM
       .rodata:> RAM
       .neeardata:> RAM
       .bss:> RAM
       .const:> RAM
       .fardata:> RAM
       .switch:> RAM
       .stack:> RAM (高)
       .far:> RAM
       .data:> RAM
       .Group:> L2SRAM
       {
          my_functions.obj (.text:my_function_1)
          my_functions.obj (.text:my_function_2)
          my_functions.obj (.text:my_function_3)
          my_functions.obj (.text:my_function_4)  
       }
       .text:> RAM

    当我的某些代码链接到 L2SRAM 时、如上所示、程序无法运行

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

    您好!

    我不会看到这个 linker.cmd 文件有任何错误。 它与.cmd 文件创建指南()不冲突

    您是否有与 linker.cmd 定义相冲突的额外.cfg 文件? 此外、在您的 c 代码中、是否有任何可能与.cmd 映射冲突的预处理器指令(主要是定义)?

    此致、

    Yordan