am335x-pru0-fw 有什么作用?

am335x-pru0-fw 有什么作用?

当我启动 BeagleBone Black 时,出现以下错误。这到底是什么意思?am335x-pru0-fw到底要做什么?

内核版本:

$ uname -a
Linux arm 4.1.15-ti-rt-r40 #1 SMP PREEMPT RT Fri Jan 8 09:44:57 UTC 2016 armv7l armv7l armv7l GNU/Linux

dmesg日志:

[   21.428541]  remoteproc1: Direct firmware load for am335x-pru0-fw failed with error -2
[   21.428582]  remoteproc1: failed to load am335x-pru0-fw
[   21.445653]  remoteproc1: Direct firmware load for am335x-pru0-fw failed with error -2
[   21.445674]  remoteproc1: request_firmware failed: -2
[   21.450762] pru-rproc 4a334000.pru0: rproc_boot failed
[   21.594364] pru-rproc: probe of 4a334000.pru0 failed with error -2

我正在尝试将 adau1761 音频编解码器与 BeagleBone Black 集成。我创建了一个声卡。但无法播放任何声音。上述错误与此有关吗?

答案1

内核日志消息

这些内核日志消息由 PRU 的 Remoteproc 驱动程序(通过 pruss 或 pru_rproc)打印出来,并且驱动程序正在尝试加载 PRU 固件,理想情况下该固件应位于 /lib/firmware。

PRU 不应干扰您正在使用的 I2S 总线。实际上,它们甚至没有启动,因为没有固件可以加载到它们上。

如果您仍然想删除内核日志中的这些消息,只需在 /etc/modprobe.d/fbdev-blacklist.conf 文件中添加以下行:

blacklist pru_rproc 
blacklist pruss_intc
blacklist pruss

使用I2S总线

我实际上并没有研究过 I2s,但我可以根据我所读到的内容向您建议一些内容:

现在,要使用 I2S 总线,您需要在右侧引脚上使用正确的复用器模式。

  • 首先,您可能不应该禁用 HDMI。主处理单元实际上使用此 I2S 总线将音频传输到 HDMI 芯片。您只需在从 ARM 到 HDMI 芯片的路线之间使用该总线。如果禁用 HDMI,ARM 可能不会将音频数据输出到 I2S 总线上,对于 ARM 来说,HDMI 是唯一的用户。

  • 请使用此描述来决定您希望在板上使用哪些引脚。

在此输入图像描述

  • 一旦您知道您想要使用的引脚,请使用 这张表在这里决定这些引脚上的多路复用器模式。我没有仔细看过你的覆盖源,我也不是这方面的专家,但请检查两次你的覆盖源中是否有正确的多路复用模式。

然后你可以使用类似的东西:

$ cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pins

查看引脚上产生的多路复用器。

编辑 :

  • 请更新到最新的内核,这通常会有很大帮助。您可以使用 apt-get 来完成此操作,这将使 beaglebone 上的配置和数据保持完整。

  • 如果您特别不想要实时内核,请使用非 RT 版本

相关内容