아래설정은 기본적으로 DM8148로 SDK기준으로 작성했기때문에, TI BSP에 따라
달라질수 있겠다.
- HDMI (DM816x AM389x DM814x AM387x)
- HDMI Kernel 설정 및 모듈
- sysfs 설정방법
- VPSS (HDVPSS) (DM814X AM387X) 관련사항 설정
만약 Display0 or 1 ( VOUTx) 변경하고 싶다면, 아래와 같이 sysfs을 이용하여, 변경해주자.
sysfs : display0
아래와 같이 shell program을 수정을하여, LCD or HDMI Mode로 수정을 하자.
$ vi dm8148/targetfs/etc/rc5.d/S01load-hd-firmware.sh #!/bin/sh # # manage HDVICP2 and HDVPSS Engine firmware PATH=$PATH:/usr/share/ti/ti-media-controller-utils HDVICP2_ID=1 HDVPSS_ID=2 configure_lcd() { echo "Configuring fb0 to LCD" echo 1:dvo2 > /sys/devices/platform/vpss/graphics0/nodes echo 0 > /sys/devices/platform/vpss/display1/enabled echo 33500,800/164/89/10,480/10/23/10,1 > /sys/devices/platform/vpss/display1/timings echo triplediscrete,rgb888 > /sys/devices/platform/vpss/display1/output echo 1 > /sys/devices/platform/vpss/display1/enabled fbset -xres 800 -yres 480 -vxres 800 -vyres 480 } case "$1" in start) echo "Loading HDVICP2 Firmware" prcm_config_app s depmod -a modprobe syslink until [[ -e /dev/syslinkipc_ProcMgr && -e /dev/syslinkipc_ClientNotifyMgr ]] do sleep 0.5 done firmware_loader $HDVICP2_ID /usr/share/ti/ti-media-controller-utils/dm814x_hdvicp.xem3 start echo "Loading HDVPSS Firmware" firmware_loader $HDVPSS_ID /usr/share/ti/ti-media-controller-utils/dm814x_hdvpss.xem3 start modprobe vpss sbufaddr=0xBFB00000 mode=hdmi:1080p-60 i2c_mode=1 #modprobe vpss sbufaddr=0xBFB00000 mode=hdmi:720p-60 i2c_mode=1 modprobe ti81xxfb vram=0:24M,1:16M,2:6M modprobe ti81xxhdmi modprobe tlc59108 ;; stop) echo "Unloading HDVICP2 Firmware" firmware_loader $HDVICP2_ID /usr/share/ti/ti-media-controller-utils/dm814x_hdvicp.xem3 stop echo "Unloading HDVPSS Firmware" rmmod tlc59108 rmmod ti81xxhdmi rmmod ti81xxfb rmmod vpss firmware_loader $HDVPSS_ID /usr/share/ti/ti-media-controller-utils/dm814x_hdvpss.xem3 stop rm /tmp/firmware.$HDVPSS_ID rmmod syslink ;; *) echo "Usage: /etc/init.d/load-hd-firmware.sh {start|stop}" exit 1 ;; esac exit 0
- 실제 수정 및 TEST
$ cd etc/rc5.d $ vi S01load-hd-firmware.sh PATH=$PATH:/usr/share/ti/ti-media-controller-utils HDVICP2_ID=1 HDVPSS_ID=2 .... case "$1" in start) depmod -a echo "Loading HDVICP2 Firmware" prcm_config_app s depmod -a modprobe syslink until [[ -e /dev/syslinkipc_ProcMgr && -e /dev/syslinkipc_ClientNotifyMgr ]] do sleep 0.5 done #firmware_loader $HDVICP2_ID /usr/share/ti/ti-media-controller-utils/dm814x_hdvicp.xem3 start firmware_loader $HDVICP2_ID /usr/share/ti/ti-media-controller-utils/dm814xbm_m3video_whole_program_debug.xem3 start echo "Loading HDVPSS Firmware" #firmware_loader $HDVPSS_ID /usr/share/ti/ti-media-controller-utils/dm814x_hdvpss.xem3 start firmware_loader $HDVPSS_ID /usr/share/ti/ti-media-controller-utils/dm814xbm_m3vpss_whole_program_debug.xem3 start #modprobe vpss sbufaddr=0xBFB00000 mode=hdmi:1080p-60 i2c_mode=1 modprobe vpss sbufaddr=0xBFB00000 mode=hdmi:720p-60 i2c_mode=1 modprobe ti81xxfb vram=0:24M,1:16M,2:6M modprobe ti81xxhdmi ;; stop) .... *) echo "Usage: /etc/init.d/load-hd-firmware.sh {start|stop}" exit 1 ;; esac $ ls S01load-hd-firmware.sh S10telnetd S99rmnologin S02dbus-1 S20syslog S10dropbear S99gplv3-notice /etc/rc5.d# ls -al drwxr-sr-x 2 root root 672 Dec 30 2015 . drwxr-sr-x 35 root root 5504 Dec 30 2015 .. lrwxrwxrwx 1 root root 29 Dec 31 05:23 S01load-hd-firmware.sh -> ../init.d/load-hd-firmware.sh lrwxrwxrwx 1 root root 16 Dec 30 2015 S02dbus-1 -> ../init.d/dbus-1 lrwxrwxrwx 1 root root 18 Dec 31 05:23 S10dropbear -> ../init.d/dropbear lrwxrwxrwx 1 root root 17 Dec 31 05:22 S10telnetd -> ../init.d/telnetd lrwxrwxrwx 1 root root 16 Dec 31 05:23 S20syslog -> ../init.d/syslog lrwxrwxrwx 1 root root 22 Dec 31 05:22 S99gplv3-notice -> ../init.d/gplv3-notice lrwxrwxrwx 1 root root 19 Dec 31 05:22 S99rmnologin -> ../init.d/rmnologin ~/dm8148/targetfs/etc/rc5.d$ ll 합계 8 drwxr-sr-x 2 jhlee jhlee 4096 12월 15 16:27 ./ drwxr-sr-x 35 jhlee jhlee 4096 12월 15 14:47 ../ lrwxrwxrwx 1 jhlee jhlee 29 12월 31 2012 S01load-hd-firmware.sh -> ../init.d/load-hd-firmware.sh* lrwxrwxrwx 1 root jhlee 16 12월 13 14:42 S02dbus-1 -> ../init.d/dbus-1* lrwxrwxrwx 1 jhlee jhlee 18 12월 31 2012 S10dropbear -> ../init.d/dropbear* lrwxrwxrwx 1 jhlee jhlee 17 12월 31 2012 S10telnetd -> ../init.d/telnetd* lrwxrwxrwx 1 jhlee jhlee 17 12월 31 2012 S20netperf -> ../init.d/netperf* lrwxrwxrwx 1 jhlee jhlee 16 12월 31 2012 S20syslog -> ../init.d/syslog* lrwxrwxrwx 1 jhlee jhlee 16 12월 31 2012 S20thttpd -> ../init.d/thttpd* lrwxrwxrwx 1 jhlee jhlee 18 12월 31 2012 S30pvr-init -> ../init.d/pvr-init* lrwxrwxrwx 1 jhlee jhlee 22 12월 31 2012 S99gplv3-notice -> ../init.d/gplv3-notice* lrwxrwxrwx 1 jhlee jhlee 22 12월 31 2012 S99matrix-gui-e -> ../init.d/matrix-gui-e* lrwxrwxrwx 1 jhlee jhlee 19 12월 31 2012 S99rmnologin -> ../init.d/rmnologin*
- VPSS 설정방법
http://processors.wiki.ti.com/index.php/DM814X_AM387X_VPSS_Video_Driver_User_Guide_PSP_04.01.00.05#SYSFS_Software_Interfaces
- VPSS와 VICP Firmware
다만, TI DSP가 C6xx 이 아닌 ARM의 Cortex-M3을 사용하여 TI용으로 별도로 Build 한 다음 Linux Booting 후에 이부분을 Loading 하는 방식으로 동작이 된다.
http://processors.wiki.ti.com/index.php/EZSDK_Reducing_Size_Of_Media_Controller_Firmware
- HDMI EDID 분석
$ cat /sys/devices/platform/vpss/display0/edid
https://en.wikipedia.org/wiki/Extended_Display_Identification_Data#Enhanced_EDID_.28E-EDID.29
- HDMI 기본 VIDEO TEST
이제 제대로 설정이 되었다면, /dev/fb0, /dev/fb1 /dev/fb2 test
/home/root/dm814x-evm/usr/share/ti/ti-psp-examples/saFbdevDisplayPan를 이용하여 TEST
$ cd ~/dm8148/targetfs // device targetfs 이동 $ cd home/root/dm814x-evm/usr/share/ti/ti-psp-examples $ ls ReadMe minimal_capture saFbdevDisplay saFbdevHdmiDisplay saFbdevScalingDisplay saLoopBackFbdev saMmapDisplay saWatchdog edma_test.ko minimal_playback saFbdevDisplayPan saFbdevMovingDisplay saLoopBack saLoopBackScale saUserptrDisplay
나머지 기능을 프로그램을 이용하여 다양한 TEST도 해보자.
2. DM8167 관련 경우
RDK 관련사항 수정
$ vi ./dvr_rdk/mcfw/src_linux/mcfw_api/ti_vdis.c .... enableConfigExtVideoEncoder = TRUE; ....