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.

[参考译文] AM68:C7x 共享 L2 链接器配置

Guru**** 2689895 points

Other Parts Discussed in Thread: AM68

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1598456/am68-c7x-shared-l2-linker-configuration

器件型号: AM68

大家好、我的 AM68 具有 2 个 C7x DSP 内核和 1MB 共享 L2 存储器。  我想将 1/2 的 L2 存储器专门用于每个内核、用作代码和数据空间。

在工程 1 中、我具有:
#define _CORE_L2_space Core1_L2SRAM     

在工程 2 中、我具有:
#define _CORE_L2_space Core2_L2SRAM     

Core1_L2SRAM 定义为 L2 的低 0x80000 字节、Core2_L2SRAM 是高 0x80000 字节。

我使用宏:
#define DATA_SECTION INT    pragma (SET_DATA_SECTION(“.L2_DATA")“))
将函数放入 L2 存储器中。

链接器:
.L2_代码:        >__CORE_L2_SPACE

编译器生成的、map 文件 (Code Composer 12.6) 看起来正确 — 内核 1 在下部获取代码、内核 2 在上部获取代码。

当我尝试通过 Blackhawk USB 调试器加载时收到错误:
C71X_1:文件加载程序:验证失败:地址 0x0000000064880000 处的值不匹配请验证目标存储器和存储器映射。
C71X_1:GEL:文件:C:\Code\XM1_DSP\XM1\DSP\C71_2\Debug\C71_2.out:发生数据验证错误、文件加载失败。

此地址由我定义为内核 2 的 L2 段的开头。

这是什么意思?  我已经四处浏览过、但在设置中的任何位置都找不到引用的 GEL 文件。
此外、如果我在内核 2 上使用如下所示的复制表:
.L2_代码:        load =__core_DDR_space、run =__core_L2_space、table (BINIT)
.map 再次看起来正确、我可以在 DDR 空间中看到.binit 段。  调试器将加载此文件、但运行时内核崩溃。

您能解释一下我还需要做些什么来配置 L2 存储器吗?

谢谢、
马特

 

 

 

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

    尊敬的 Matt:
    请共享更新后的链接器脚本和 xml 文件。 我会从我的身边检查这个,然后回来给你。 在修改链接器脚本之前、您能否确认设置是否按预期运行。 此外、请分享正在使用的 SDK 版本。

     我已经浏览过、但在设置中的任何位置都找不到引用的 GEL 文件。

    GEL 文件位于/ti/ccs1281/ccs/ccs_base/emulation/gel。

    C71X_1:GEL:文件:C:\code\XM1_DSP\XM1\DSP\C71_2\Debug\C71_2.out:发生数据验证错误、文件加载失败。

    有关数据验证错误、请参阅此常见问题解答“>e2e.ti.com/.../faq-ccs-why-am-i-getting-a-data-verification-error-when-i-load-my-program"。“。

    此致、
    Ben Eapen Thomas

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

    您好 Ben、

    在文件 /linker_c7x_freertos_common.inc 中、我们更改/添加了:
    /*------------------------------------------------------------------------ */
    /*存储器映射*/
    /*------------------------------------------------------------------------ */

    移动数据

    /*==================== C7x L2 SRAM ==================== */
    Core1_L2SRAM (RWX):origin = 0x64810000 长度= 0x00070000
    Core2_L2SRAM (RWX):origin = 0x64880000 length = 0x00080000
    /*================= J721S2 DDR 位置============== */
    /* DDR 存储器映射包含在 memory_map_ddr.cmd 中*/
    }

    然后链接代码或数据段、如下所示:
    RL2_DATA:load =__core_DDR_space、run =__core_L2_space、table (BINIT)
    L2_code:load =__core_DDR_space、run =__core_L2_space、table (BINIT)
    (这会生成,但在运行时崩溃)

    如果我们使用
    RL2_DATA:l>__CORE_L2_SPACE
    L2_code:>__core_DDR_space
    Blackhawk USB 加载会导致错误

    其中、 __core_L2_space 为:
    #define _CORE_L2_space Core2_L2SRAM

    使用 L2 Core1_L2SRAM 段以这种方式为内核 1 生成的代码可以正常工作。

    我们怀疑 DSP Core2 L2 存储器的偏移可能与 Core1 不同。

    谢谢、
    马特

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

    您好、Matthew、
    该问题是由于链接器脚本中分配的存储器不正确所致。 每个 C7X 内核都有自己的专用 L2 存储器。
    供参考、

    1) C7x_0 本地 L2:64800000:6487FFFF
    2) C7x_1 本地 L2:65800000:6587FFFF
    链接器配置似乎使用本地 L2 地址范围。 两个 c7x 内核之间没有共享 L2。 要将共享区域用作 SRAM、可以改用 MSMC。

    此致、
    Ben Eapen Thomas

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

    谢谢 Ben、
    我们也得出了这一结论,它似乎我们正在启动和运行。
    这里有一个有趣的资源:
    \ti\processor-sdk-rtos-j721s2-evm-11_00_00_06\vision_apps\platform\j721s2\rtos\

    以及所有内核的示例链接器.cmd 文件。

    谢谢、
    马特

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

    您好、Matthew、
    感谢您分享此信息。 我将继续结束该主题。
    此致、
    Ben Eapen Thomas