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.

[参考译文] Linux/TMS320DM8148:在 A8将 Fb0器件映射到 DSP 内核发送的指针位置后、无法从 DSP 内核读取数据。

Guru**** 2560840 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/599853/linux-tms320dm8148-not-able-to-read-data-from-dsp-core-after-a8-mmap-the-fb0-device-on-pointer-location-sent-by-the-dsp-core

器件型号:TMS320DM8148

工具/软件:Linux

我使用共享存储器区域 Syslink 将指针发送到 A8内核。 我从 DSP 或 A8存储的数据可以在其中一个内核上读取,但一旦我进行 mmap,我就无法从一个内核读取数据并查看其他内核上的更新。

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

    您好!

    您能告诉我更多详细信息吗?  

    数据存储是否位于存储器的保留部分? 高速缓存已对齐? (用于 ARM 和 DSP)

    -如果从 Linux 到物理地址的 mmap,是否设置 O_SYNC 位?

    -尝试读取时 DSP 内核是否仍在运行? 还是完成了处理? 我看到当 DSP 退出任务时、内存被覆盖或复位。 解决这个问题的方法是、当我有一个短时间运行的应用程序时、在代码的末尾有一个 while (1)用于调试。  

    Dan

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

    Dan、您好!

    感谢您的回复,


    实际上,我不熟悉这一点,我正在附加我的 DSP Cnfg 文件和我在 fromware 加载程序文件中所做的更改。

    我实际上会禁用该共享区域中的缓存。 我在0x96C00000处使用指针。

    是的、我尝试使用 O_SYNC 位、但结果相同。

    是的、我之前在 DSP 任务的末尾添加了断点、因此在执行处理后它不会完成。

    我要做的是在 DSP 端初始化一个指针数组,该数组的地址位于共享区域、

    然后用一些值将其发送到 A8,直到此时,我能够从两侧看到更新。

    只要我将指针映射到 Fb0,并从 A8端读取,所有值都为零,但 DSP 会显示上一个值。

    然后我从 A8更改值并打印缓冲区,它在 A8端更新,但 DSP 值保持不变。

    如果您可以帮助我解决此问题,我将从很长一段时间内搜索解决方案。 如果您可以与我共享您的样片文件,可能会有所帮助。

    BR

    Ammar Zafar

    e2e.ti.com/.../memsegdef_5F00_default.ce2e.ti.com/.../Dsp.cfg

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dan、
    是否有任何解决方案?

    BR
    Ammar