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.

[参考译文] TMS320F28386D:IPC CM 至 C28x 双向消息队列通信问题:存储器映射

Guru**** 2457760 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1395708/tms320f28386d-issue-with-ipc-cm-to-c28x-bidirectional-message-queue-communication-memory-mapping

器件型号:TMS320F28386D
主题中讨论的其他器件:SysConfig

工具与软件:

大家好、我将根据示例 ipc_ex2_msgqueue_c28x1和 ipc_ex2_msgqueue_cm 测试 C28x 和 CM 之间的 IPC  

当我在消息 RAM 段上定义缓冲区时、如果编译器更改了 ipc.c 缓冲区的位置、它将不起作用

以下是一个无法正常工作的示例的存储器映射:

下面是一个工作示例  

如果编译器首先放置 Put 缓冲区、在"MSGRAM_CPU_TO_CM"开头、则会起作用。  

这对于 cm 和 CPU 都有效、输入/获取缓冲区需要位于段的开头。 我如何强制编译器首先放置 driverlib 的 Push/Get 缓冲区? ipc.c

这是 driverlib 中的错误吗、或者我在构建配置中是否漏掉了某些信息? 我认为 driverlib 应该避免使用段名称并修复内存、否则我必须为我的变量创建一个新段。  

现在我的代码能否正常工作取决于编译器。  

我想您可以复制 ipc_ex2_msgqueue_c28x1.c 中将 ReadData[10]更改为 ReadData[200]的行为、这会将第一个 ReadData 放入存储器中。 示例在读取时会被阻止。

我们应该如何解决此问题? 提前感谢您

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

    您好!

    您能看一下这个主题吗?  https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1292430/tms320f28388d-cpu1-to-cm-ipc-message-queue-problem

    谢谢!

    Ben Collier

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

    尊敬的 Benjamin:  

    感谢您的回答。 很抱歉、我之前不能回答、我在度假。

    是的、这是一个很好的权变措施、修复默认的 MSG_RAM 段并为变量创建新段。

    现在出现的另一个问题是我使用 SysConfig 的 CMD 工具来管理我的 C28x1工程的链接器命令文件。 我没有找到更改默认 msg_ram 段的位置、因此我必须手动创建一个、并禁用 CMD 工具。 (手动意味着使用默认值或复制创建的值、将会看到)

    能够在 SysConfig 的 CMD 工具中执行更高级的操作将会很好、您可以将其作为 未来的改进建议。

    请告诉我您是否有其他解决方案或者我缺少什么。 我正在使用 SysConfig 1.20、未试用1.21。

    再次感谢你

    此致

    Agustin J. Gomez