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
BeagleBone Black에 adau1761 오디오 코덱을 통합하려고 합니다. 사운드카드를 만들었습니다. 하지만 소리가 재생되지 않습니다. 위의 오류가 이것과 관련이 있습니까?
답변1
커널 로그 메시지
이러한 커널 로그 메시지는 PRU의 Remoteproc 드라이버(pruss 또는 pru_rproc를 통해)에 의해 인쇄되며 드라이버는 이상적으로 /lib/firmware에 있어야 하는 PRU 펌웨어를 로드하려고 시도합니다.
PRU는 사용 중인 I2S 버스를 방해해서는 안 됩니다. 실제로 로드할 펌웨어가 없기 때문에 부팅조차 되지 않습니다.
커널 로그에서 이러한 메시지를 제거하려면 /etc/modprobe.d/fbdev-blacklist.conf 파일에 다음 줄을 추가하면 됩니다.
blacklist pru_rproc
blacklist pruss_intc
blacklist pruss
I2S 버스 사용
실제로 I2를 조사한 적은 없지만 읽은 내용을 바탕으로 몇 가지 제안을 드릴 수 있습니다.
이제 I2S 버스를 사용하려면 올바른 핀에서 올바른 멀티플렉서 모드를 사용해야 합니다.
우선, HDMI를 비활성화하면 안 됩니다. 메인 처리 장치는 실제로 이 I2S 버스를 사용하여 오디오를 HDMI 칩으로 전송합니다. ARM에서 HDMI 칩으로 가는 경로에서만 이 버스를 사용해야 합니다. HDMI가 비활성화되면 ARM은 HDMI가 유일한 사용자인 I2S 버스로 오디오 데이터를 출력하지 못할 수 있습니다.
이 설명을 사용하여 보드에 사용할 핀을 결정하세요.
- 어떤 핀을 사용하고 싶은지 알고 나면 다음을 사용하세요. 이 테이블은 여기 있어요이 핀의 멀티플렉서 모드를 결정합니다. 나는 귀하의 적용 범위 소스를 주의 깊게 살펴보지 않았으며 이에 대한 전문가는 아니지만 귀하의 적용 범위 소스에 올바른 다중화 패턴이 있는지 두 번 확인하십시오.
그런 다음 다음과 같은 것을 사용할 수 있습니다.
$ cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pins
핀의 결과 멀티플렉서를 살펴보십시오.
편집하다:
최신 커널로 업데이트하십시오. 이는 일반적으로 많은 도움이 됩니다. 비글본의 구성과 데이터를 그대로 유지하는 apt-get을 사용하여 이 작업을 수행할 수 있습니다.
특별히 실시간 커널을 원하지 않는다면 비 RT 버전을 사용하세요.