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/C66XCODES:用于从 Linux 用户空间写入 DSP IPCGRx 寄存器的 mmap 函数。

Guru**** 2562190 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/612851/linux-c66xcodecs-mmap-function-to-write-into-dsp-ipcgrx-registers-from-linux-userspace

器件型号:C66XCODES
Thread 中讨论的其他器件:SYSBIOS

工具/软件:Linux

您好,  

正在尝试使用 IPCGRx 从 ARM 触发 DSP 中断。  使用 mmap 函数 am 尝试从 Linux 用户空间修改 ipcgrx 中断位。

mmap 将成功返回虚拟空间地址,页面大小为4098。 当我尝试写入寄存器时、会出现以下错误。

未处理的故障:在 bb6f7d240的非线性获取(ox1818)上的外部中止

总线错误。

正在尝试类似这样的东西-请查看以下主题-  

当我尝试访问寄存器地址时、会出现上述错误。

e2e.ti.com/.../503640

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

    出现这种情况的一个原因可能是缺少功能时钟。 您能否验证 DSP 是否已正确初始化?

    另一个更可能的原因是您尝试通过用户空间访问 IPC 寄存器。 它们需要特权模式才能访问它们。 换句话说、您需要从内核空间执行这些设置。

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

    Yordan,您好!

    感谢您的快速响应。

    出现这种情况的一个原因可能是缺少功能时钟。 您能否验证 DSP 是否已正确初始化?

    我已启用 DSP 时钟功能(SysBIOS 配置中的配置中的默认时钟选项)。 是否还有其它时钟功能要使用?

    另一个更可能的原因是您尝试通过用户空间访问 IPC 寄存器。

    mmap 的主要功能是通过用户空间中的虚拟映射内存访问设备内存。 另一个选项是 ioremap、它是内核空间功能。 因为我的目标是从 userspace 访问它、所以我尝试使用 mmap。

     它们需要特权模式才能访问它们

    我的代码仅以 root 身份运行。

    换句话说、您需要从内核空间执行这些设置。  

    什么类型的设置? 您能否指定它、我无法找到任何此类示例。  

    有没有可用于 ARM-DSP 中断机制的示例代码?

     

    谢谢、此致、  

    Vinodh

     

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有更新? 仅当我尝试访问芯片寄存器时,才会遇到此问题,但使用相同的代码可以访问其它内存区域。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将对此进行研究。 很抱歉耽误你的时间。

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

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

    [报价]我的代码仅以 root 用户身份运行。

    这不是我的意思。 内核会锁定设备的某些部分以使用驱动程序、您无法从用户空间访问这些部分。
    您将需要修改相应的内核驱动程序、以便从用户空间执行您尝试执行的配置。

    没有现成可用的 Linux 示例。 一个用于 ARM-DSP 通信的示例代码是 IPC。

    此致、
    Yordan