Odroid C2에서 Linux 커널을 컴파일하고 다음을 사용하여 DVB-T 드라이버를 설치하려고 합니다.미디어 구축. 나는 공식적으로 설명된 단계를 따랐다.위키피디아그리고법정. 포럼에 따르면 Device Drivers -> Amlogic Device Drivers -> Multimedia Support
백포트된 media_build DVB-T 드라이버를 사용하려면 이를 모듈로 컴파일해야 합니다.
먼저 Linux 소스 코드를 얻었습니다.
git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidc2-3.14.y
그런 다음 Odroid C2의 구성을 설정했습니다.
make odroidc2_defconfig
마지막으로 다음 단계에 따라 커널을 컴파일하고 V4L 종속성을 비활성화했습니다.
$make menuconfig
Device Drivers
Amlogic Device Drivers
ION Support
ION memory management support = no
Amlogic ion video support
videobuf2-ion video device support = no
Amlogic ion video devic support = no
V4L2 Video Support
Amlogic v4l video device support = no
Amlogic v4l video2 device support = no
Amlogic Camera Support
Amlogic Platform Capture Driver = no
Multimedia support = m
이 구성은 오류 없이 컴파일되며 그런 다음 media_build 드라이버를 컴파일하고 설치할 수 있습니다. 문제는 이 구성에서 Odroid C2가 하드웨어 디코딩을 통해 Kodi에서 비디오 파일을 재생할 수 없다는 것입니다. 내 인상은 amlogic 하드웨어 디코딩에 필요한 종속성을 비활성화했다는 것입니다. 구성을 수정하고 이전에 모듈로 비활성화했던 모든 종속성을 표시해 보았습니다. 불행하게도 이 구성을 사용하면 커널을 컴파일할 수 없으며 다음 오류로 인해 컴파일이 실패합니다.
drivers/built-in.o: In function `v4l2_device_release':
odroid-battery.c:(.text+0x1731c0): undefined reference to
`media_device_unregister_entity'
odroid-battery.c:(.text+0x1731c0): relocation truncated to fit:
R_AARCH64_CALL26 against undefined symbol `media_device_unregister_entity'
drivers/built-in.o: In function `__video_register_device':
odroid-battery.c:(.text+0x173c4c): undefined reference to
`media_device_register_entity'
odroid-battery.c:(.text+0x173c4c): relocation truncated to fit:
R_AARCH64_CALL26 against undefined symbol `media_device_register_entity'
drivers/built-in.o: In function `v4l2_device_register_subdev':
odroid-battery.c:(.text+0x1797b0): undefined reference to
`media_device_register_entity'
odroid-battery.c:(.text+0x1797b0): relocation truncated to fit:
R_AARCH64_CALL26 against undefined symbol `media_device_register_entity'
drivers/built-in.o: In function `v4l2_device_unregister_subdev':
odroid-battery.c:(.text+0x179a58): undefined reference to
`media_entity_remove_links'
odroid-battery.c:(.text+0x179a58): relocation truncated to fit:
R_AARCH64_CALL26 against undefined symbol `media_entity_remove_links'
odroid-battery.c:(.text+0x179a60): undefined reference to
`media_device_unregister_entity'
odroid-battery.c:(.text+0x179a60): relocation truncated to fit:
R_AARCH64_CALL26 against undefined symbol `media_device_unregister_entity'
drivers/built-in.o: In function `subdev_close':
odroid-battery.c:(.text+0x180c10): undefined reference to `media_entity_put'
odroid-battery.c:(.text+0x180c10): relocation truncated to fit:
R_AARCH64_CALL26 against undefined symbol `media_entity_put'
drivers/built-in.o: In function `subdev_open':
odroid-battery.c:(.text+0x1814f4): undefined reference to `media_entity_get'
odroid-battery.c:(.text+0x1814f4): relocation truncated to fit:
R_AARCH64_CALL26 against undefined symbol `media_entity_get'
odroid-battery.c:(.text+0x181540): undefined reference to `media_entity_put'
odroid-battery.c:(.text+0x181540): relocation truncated to fit:
R_AARCH64_CALL26 against undefined symbol `media_entity_put'
Makefile:831: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1
멀티미디어 지원이 포함된 커널을 모듈로 컴파일하고 비디오 파일에 대한 하드웨어 디코딩을 계속 사용할 수 있는 방법은 무엇입니까?
답변1
마침내 작동하게 되었습니다. 스크립트, 패치 및 지침이 포함된 git 저장소를 만들었습니다. 누구든지 이 문제를 다루고 있다면 클론해 주세요.이 저장소다음 단계를 수행합니다(이 내용은 저장소의 추가 정보에도 설명되어 있습니다).
리눅스
Hardkernel Linux 저장소 복제
git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidc2-3.14.y
cd linux
AML 비디오 드라이버를 모듈로 컴파일할 수 있는 패치를 적용합니다(저는LibreELEC media_build 버전)
patch -p1 < ../odroidC2-kernel/allow_amlvideodri_as_module.patch
기본 Odroid C2 구성 적용
make odroidc2_defconfig
이제 구성을 수정하세요.
make menuconfig
다음 값을 설정합니다(선택하려면 Y를 누르고, 삭제하려면 N을 누르고, 모듈로 선택하려면 M을 누르세요).
Device Drivers
Amlogic Device Drivers
ION Support
ION memory management support = Yes
Amlogic ion video support
videobuf2-ion video device support = M
Amlogic ion video devic support = no
V4L2 Video Support
Amlogic v4l video device support = M
Amlogic v4l video2 device support = no
Amlogic Camera Support
Amlogic Platform Capture Driver = no
Multimedia support = M
커널 컴파일
make -j5 LOCALVERSION=""
LOCALVERSION 매개변수는 커널 이름에 "+" 기호를 피하기 위한 것입니다. 성공적인 컴파일 후 모듈, 커널을 설치하고 시스템을 다시 시작하십시오.
sudo make modules_install
sudo cp -f arch/arm64/boot/Image arch/arm64/boot/dts/meson64_odroidc2.dtb /media/boot/
sudo sync
sudo reboot
미디어 구축
media_build 저장소를 복제하고 빌드해 보세요.
git clone https://git.linuxtv.org/media_build.git
cd media_build
./build
빌드 명령이 실패할 수 있습니다. 이 오류를 무시하고 다음 단계를 계속하십시오. 다음 스크립트도 다음에서 영감을 받았습니다.LibreELEC media_build 버전미디어 모듈에 비디오 드라이버만 포함되어 있습니다.
../odroidC2-kernel/add_video_driver_module.sh
잠재적인 컴파일 문제를 방지하려면 원격 컨트롤러 지원과 불필요한 USB 어댑터를 비활성화해 보십시오. 다음을 실행해 보세요.
make menuconfig
다음과 유사한 오류가 발생할 수 있습니다.
./Kconfig:694: syntax error
./Kconfig:693: unknown option "Enable"
./Kconfig:694: unknown option "which"
파일을 편집 v4l/Kconfig
하고 오류에 인쇄된 줄을 공백에 맞춰야 합니다. 이 줄은 이전 줄과 일치해야 합니다. 그런 다음 다시 실행하십시오 make menuconfig
. 이 단계를 여러 번 수행해야 할 수도 있습니다.
오류 대신 메뉴가 표시되면 다음과 같이 구성을 수정할 수 있습니다.
Remote Controller support = no
Multimedia support
Media USB Adapters
## Disable all driver you don't need ##
다음 패치를 적용하세요
patch -p1 < ../odroidC2-kernel/warning.patch
오류를 방지하고 커널을 컴파일하려면 다음과 같이 변경하십시오.
sed -i 's/#define NEED_PM_RUNTIME_GET 1/\/\/#define NEED_PM_RUNTIME_GET 1/g' v4l/config-compat.h
make -j5
아마도 성공하려면 이전 단계(sed 및 make)를 여러 번 실행해야 할 것입니다.
컴파일이 완료되면 모듈을 설치하고 시스템을 다시 시작합니다.
sudo make install
sudo reboot
마지막 단계는 시작 시 로드되도록 amlvideodri
모듈을 추가하는 것입니다./etc/modules
sudo echo "amlvideodri" >> /etc/modules
그게 다야. 이제 Kodi에서 DVB-T TV 및 하드웨어 가속 비디오를 즐길 수 있습니다.