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.

[参考译文] AM2612-Q1:使用 2 个内核时映射文件中的数据地址变化

Guru**** 2797785 points

Other Parts Discussed in Thread: AM2612, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1614989/am2612-q1-data-address-changes-in-map-file-when-using-2-core

器件型号: AM2612-Q1
Thread 中讨论的其他器件: AM2612SysConfig

我的工程使用了 AM2612 的两个内核 (R5FSS0-0 和 R5FSS0-1)。  在内核 R5FSS0-1 编译完成后、将修改映射文件 (r5fss0-0.Release.map) 中的一个变量(名为 g_stShmRData)地址。 变量 g_stShmRData 是两个内核之间的共享存储器。

 

解决方案 要修改(仅编译内核 R5FSS0-0):

变量 g_stShmRData 为 0x70170000。

之后 要修改(内核 R5FSS0-0 编译完成):

变量 g_stShmRData 为 0x40。 此地址位于 TCMA 中。 TCMA 的长度等于变量 g_stShmRData 的长度。

 

以下是我的 问题

问题 1:这种现象是否合理? 如果没有、应如何调查和纠正?

问题 2:鉴于当前的 syscfg 版本:sysconfig_1.22.0 和 SDK 版本:mcu_plus_sdk_am261x_10_00_01_10、不支持配置存储器区域的 Page 属性(用于修改链接器文件)。 有没有其他的方法?

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

    尊敬的 Alpha Han:

    让我从我这边检查一下、然后返回给您。

    此致、

    Aswin

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

    您好、Alpha Han、

    问题 1:这种现象是否合理? 如果没有、应如何调查和更正?

    这不是预期现象。 我尝试使用 ipc_notify_echo 示例中的共享变量复制此问题、但无法复制该问题。 我使用了前面提到的相同 SDK 和 SysConfig 版本。 客户是否可以共享发生此问题的项目。

    问题 2:鉴于当前的 syscfg 版本:sysconfig_1.22.0、SDK 版本:mcu_plus_sdk_am261x_10_00_01_10、不支持配置存储器区域的 Page 属性(用于修改链接器文件)。 是否有其他方法?

    这是关于为链接器脚本中的存储器区域配置 R/W/X 权限吗? 如果是、这可通过 SysConfig 完成。 请参阅存储器区域的属性部分。

    此致、

    Aswin

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

    尊敬的 Aswin:

    我认为客户想在 OCRAM 中 core0 和 core1 之间定义一个共享变量、

    他们是否可以使用以下定义:

    Volatile int shared_var1 __attribute__((location (0x70050000)))= 0
    Volatile int shared_var2 __attribute__((location (0x70060000)))= 0
    BRS
    Shuqing
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Shuquing、  

    我尝试了这个方法。  
    请查看我的地图文件屏幕截图。 左侧是 core0-0、右侧是 core0-1。

    在链接器脚本中、我定义了一个存储器区域。 对两个链接器文件都执行此操作。

    我还附上了工程的 zip 文件。 请参阅 这两个工程中的文件 ipc_notify_echo.c。

    e2e.ti.com/.../ipc_5F00_notify_5F00_echo_5F00_am261x_2D00_lp.zip

    此致、

    Aswin

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

    尊敬的 Aswin:

    我们发现如果禁用 Optishare、结果会符合预期(core0 和 core1 可以使用我们定义的共享变量)

    但如果我们启用它、结果不是预期结果(core1 和 core0 之间的共享变量没有相同的地址)

    然后、我们查看 Optishare 概念 :AM261x MCU+ SDK:Optishare

    但我们可能对这一点有错误的理解、从 AM261x MCU+ SDK:Optishare、我的理解是、如果我们要实现应该启用 Optishare 的共享变量(这与测试结果不同)、您能解释一下吗?

    BRS

    Shuqing

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

    尊敬的 Shuqing

    我的理解是、如果我们要实现共享变量、我们应该启用 Optishare(这与测试结果不同)、您能帮助解释一下吗?

    要共享变量、无需启用 optishare。  

    使用 optishare 的场景如下所示、

    假设内核 0 正在使用一些库/函数。 还有一个内核 1 使用相同的库/函数。 如果没有 optishare、这些库将被放置在存储器中两次、因为两个内核都需要它。 由于冗余、这会导致存储器浪费。 但是、如果启用了 optishare、那么该库只会放置一次存储器、两个内核将访问相同的代码。

    这一想法显示在这张图中。

    此致、

    Aswin