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.

[参考译文] TMS320F28379D:关于双 CPU F28379D RAM 链接器命令文件中共享 RAM 定义的阐述

Guru**** 2534260 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1562359/tms320f28379d-clarification-on-shared-ram-definition-in-dual-cpu-f28379d-ram-linker-command-files

部件号:TMS320F28379D
主题:C2000WARE 中讨论的其他器件

工具/软件:

您好:

我目前正在研究 F28379D 上的 RAM 管理、并使用 C2000Ware 中的 ram 双 CPU 示例 (C2000Ware_6_00_00_00\driverlib\f2837xd\examples\dual\ram)。 我注意到该工程.cmd每个 CPU 包含三个文件:

  • Headers_nonBIOS_cpuX.cmd

  • RAM_lnk_shared_cpuX.cmd

  • ram_ex1_isr_cpuX.cmd

注释中提到“共享 RAM 区域在 CPU2 和 CPU1 链接器文件中都定义。“

但是、当我查看RAM_lnk_shared_cpu1.cmdRAM_lnk_shared_cpu2.cmd时、我看到两者都包含 完全相同的MEMORY定义 、包括所有 GSX RAM 区域

(例如, RAMGS0   :origin = 0x00C000、length = 0x001000“to"</s>“         RAMGS15      : origin = 0x01B000, length = 0x000FF8  )。

我的问题是: 这是正确的方法、还是链接器命令文件应该反映实际的 RAM 所有权配置? 具体来说:

  1. 我是否应该在 CPU2 链接器文件中仅定义 CPU2 所拥有的 GS RAM 块(例如 GS0、GS14)、并在 CPU1 链接器文件中将它们注释掉?

  2. 或者、我是否还应该在中定义这些 GS RAM 块 两者可兼得 CPU1 和 CPU2 链接器文件(即不要将它们注释掉)、实际所有权仅通过 CPU 系统控制寄存器(例如)进行控制MemCfgRegs.GSxMSEL? 即 CPU2 链接器 cmd 文件中将定义 GS0 和 GS14(无需在 CPU1 链接器 cmd 文件中将它们注释掉)

  3. 还是需要定义 所有 GS RAM 区域 命令文件中保留一个新的 CPU 链接器命令文件、而不管其所有权是什么?

我希望在此澄清打算采取的做法。

以及当我构建“ram"项目“项目时  (C2000Ware_6_00_00_00\driverlib\f2837xd\examples\dual\ram)。 我收到了很多类似的警告(其中一些警告如下所示)。 我不确定是否缺少任何文件?  


[16]“C:/ti/C2000Ware_6_00_00_00/device_support/f2837xd/common/include/F2837xD_Ipc_drivers.h、第 74 行:警告#48-D:宏“ipc_buffer_size"的“的重新定义不兼容(在“C2000Ware_6_00_00_00/driverlib/f2837xd/driverlib/ipc.h"的“的第 89 行声明)


[55]“C":“:/ti/C2000Ware_6_00_00_00/device_support/f2837xd/common/include/F2837xD_Ipc_drivers.h、第 238 行:警告#48-D:重新定义的宏“C1C2_BROM_BOOTMODE_FROM_SCI"(“(在(在的第 201 行声明)不兼容

谢谢您、
Vijaymahantesh V Surkod

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的问题是: 这是正确的方法、还是链接器命令文件应该反映实际的 RAM 所有权配置? [/报价]

    有关链接器问题、请参阅此论坛帖子、其中介绍了如何为 CPU1 和 CPU2 定义变量。

     https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1092074/tms320f28377d-cpu1-not-receiving-update-of-shared-arrays-whereas-cpu2-can/4044296#4044296 

    请注意、可以在两个链接器中定义存储器范围、也可以为每个特定的 CPU 二进制文件指定存储器范围。 但是、文件的段部分应仅将段映射到一个特定的存储器范围、CPU1TOCPU2ram 段除外。

    有关 C2000 链接器的更多信息、请参阅此文档: https://software-dl.ti.com/ccs/esd/documents/c2000_c28x-compiler-understanding-linking.html 

    、以及当我构建“ram"项目“项目时  (C2000Ware_6_00_00_00\driverlib\f2837xd\examples\dual\ram)。 我收到了很多类似的警告(其中一些警告如下所示)。 我不确定是否缺少任何文件?

    能否确认是否将位字段与 driverlib 混合? 这是 C2000Ware 中提供的默认工程吗?

    此致、

    Ozino  

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

    您好:

    我已经导入了 driverlib 工程、只是构建了它(无 bitfield)。  

    谢谢你

    Vijaymahantesh V Surkod

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

    您能否确认开箱后的示例是否显示了这些警告。

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

    是的。

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

    尊敬的 Vijay:

    我将此信息转发给 IPC 模块的 driverlib 所有者、以确认您的发现结果。

    此致、

    Ozino

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

    尊敬的 Vijay:
    这个示例确实使用了位域函数。
    预计会出现警告、这是由于 driverlib 头文件和 bitfield 头文件中重新定义了宏命令。 由于这些宏的值相同、因此不会导致任何问题。
    我们将确保在下一个版本中解决这个问题。

    此致、
    Samritha