4/12/2017

AM437x-EVM-GP HDMI 설정

1. AM437x-EVM 관련정보

AM437x-EVM을 빌려서 , 집에서 가지고 놀게 되었지만, TI에서 제공되는 자료가 거의 오픈이 되어서 너무 좋고, 설정하기도 편하다.
역시 BeagleBone Board에 보다 성능이 좋다.

  • AM437x EVM 
  http://processors.wiki.ti.com/index.php/AM437X_EVM_Boards


1.1 AM437x-EVM 의 HDMI 설정 및 분석

AM437x인 경우 기본적으로 HDMI Host controller 가 존재하지 않아 Silicon Image사의Chip 인 Sil9022A을 이용하여
HDMI를 전송을 하고 있으며, 이를 설정하기 위해서는 Device Tree 설정파일인 DTB만 변경하면된다.



  • DSS( Display Subsystem)의 역할 
AM437x 에서 Video Display 관련부분의 Hardware Interface이며, Pin Description을 보면
기존에 사용하던 모든이 Hsync와 Vsync, Pixel Clock 및 Data0~23, En 로 기본구성이 되어있다.

많이 사용되어지고 있는 MIPI DSI는 구현이 되어있지 않다고 되어있다.
ERRATA에 보면 DSS에 많은 제약이 있음을 알게된다. (해상도 및 memory bandwidth )

관련자료
  http://www.ti.com/lit/ug/spruhl7f/spruhl7f.pdf

1.2 AM437x EVM  HDMI HW 관련 정보 
VIDEO는 현재 24bit가 아닌 16Bit만을 사용하고 있으며, AUDIO를 구조도 동일하다.
VIDEO 같은 경우는 LCD모드와 크게 별반 차이가 없다고 생각하면 되겠다.

  1. DSS, 영상 Data(AM437X_LCD_DATA0~15) -> Buffer Chip(SN74LVC32244ZKE,SN74LVC244A )  전압 3.3V변화 및 Buffer
  2. 변경된 DATA -> Sil9022A 연결 
  3. McASP -> Buffer Chip 전압 변경 
  4. 변경된 DATA -> Sil9022A 연결 

관련자료 
  http://processors.wiki.ti.com/images/9/95/Am437x_gp_evm_3k0006_schematic_rev1_4a.pdf
  http://processors.wiki.ti.com/index.php/AM437X_EVM_Boards



1.2 AM437x의 EVM Software 및 관련 설명서 
TI에서 EVM의 간단한 설명서 및 사용법 쉽게 파악가능하다
BSP를 Download 가능하며, Image를 가지고 쉽게 Write를 하여 SD Boot로 TEST 가능.

관련자료
  http://www.ti.com/tool/tmdsevm437x#descriptionArea

처음 회로도를 보고, LCD와 HDMI 동시 출력이 가능할 것이라고 생각을 했지만,
지원이 되지 않는다고 TI에서 명시를 해주고 있다. 이부분은 시간이 나면 다시 확인해봐야겠지만,
현재 시간이 없어 추후 회로도에서 TI Buffer chip 3개 부분을 다시 잘 보면 되겠다.

Memory bandwidth 제한으로 인하여 HD급 영상만 720p@60 재생이 되며,
AM437x 현재 Sigle output으로  LCD or HDMI 를 동시에 출력이 불가능하다고 한다.


  • 일반적인 HDMI 설정변경

 Device Tree인 *.dtb를 이용하여 변경을 하면된다고 한다.

관련자료
  http://processors.wiki.ti.com/index.php/Linux_Core_DSS_User%27s_Guide#AM4_Boards


1.3 AM437x EVM GP HDMI 설정 

위에서 설명했듯이 기본으로 제공해주는 Device Tree 인 파일인 DTB 파일을 찾아 변경을 해주면된다.

  • prebuilt-Image 의 Device Tree 설정확인 
    아래의 두개의 Device Tree 설정을 쉽게 확인가능, 이를 적용하자

$ ./board-support/prebuilt-images
$ ls 
MLO-am437x-evm          am437x-gp-evm.dtb  am43x-epos-evm-hdmi.dtb  u-boot-am437x-evm.img      uEnv.txt
am437x-gp-evm-hdmi.dtb  am437x-sk-evm.dtb  am43x-epos-evm.dtb       u-boot-spl.bin-am437x-evm  zImage-am437x-evm.bin


  • Kernel Device Tree 설정 확인 
     Device Tree 좀 더 변경하고자 한다면 아래에서 확인

$ cd ./board-support/linux*
$ vi arch/arm/boot/dts/am437x-gp-evm-hdmi.dts // device tree 설정확인 
....


  • AM437x Device Tree 관련내용 
  AM437x Device Tree MMC BOOT관련내용. (UBoot의 환경설정에서 변경)

Uboot Script 과 Kernel Device Tree
  http://ahyuo79.blogspot.kr/2015/08/am437x-kernel-device-tree.html


2. UBOOT 설정 변경

현재 AM437x는 bootz라는 command를 이용하여 zImage와 *.dtb 을 booting한다.
uboot에서 findfdt 에서 fdtfile을 직접 변경하거나, board_name을 변경한다면
dtb 설정이 변경이 된다.

이 부분은 상위  device tree 부분을 참조


3. Sys File 변경 및 Uboot 설정변경


$ fbset  // display 해상도 확인 
$ fbset -i // display 해상도 확인 


  http://e2e.ti.com/support/arm/sitara_arm/f/791/p/551865/2017650
  http://processors.wiki.ti.com/index.php/Matrix_Users_Guide#I_don.27t_want_Matrix_to_run_on_boot_up
  https://e2e.ti.com/support/arm/sitara_arm/f/791/p/358458/1258352#1258352
  http://processors.wiki.ti.com/index.php/DSS2_SYSFS_Examples#SYSFS_Entries_for_FB


4. AM437x EVM Devic 확인사항 

 ....
omap_i2c 44e0b000.i2c: bus 0 rev0.12 at 100 kHz  // 아래 driver 는 I2C로 설정 
sii9022 1-003b: sil9022 HDMI Chip version = b0
....