7710 프로그램을 컴파일하는 방법을 기술하고 있다.
예전의 DACS1000(SD), DAC5000(HD) 에서는 ST 의 라이브러리인 STR1.96 을 사용했었다. 쓰는 동안 별 탈이 없었기 때문에… -_-;
그런데, 7710 으로 올라오면서 기존의 STR1.96 으로 컴파일이 안된다. 아직 정확한 원인을 알 수 없지만 말이다.

기존의 사용하던 5517ref 소스 대신에 7710ref 프로그램이 나왔다. ref 라고하는 것은 레퍼런스 코드라고 생각하면 된다. 즉 라이브러리가 생성되는 코드이다.
7710ref 디렉토리를 볼 것 같으면 다음과 같다.

  1. bin : 컴파일 환경설정을 위한 .bat 파일들
  2. config : 부팅을 위한 .cfg 파일들
  3. docs : 각 모듈별 문서들이 .pdf 형식으로 나뉘어져 있다
  4. include : include 파일들
  5. lib : src 디렉토리를 컴파일하면, 각 모듈별로 .lib 파일이 생성된다
  6. make : 컴파일을 위한 각 옵션을 조절할 수 있는 make 설정파일이 있다
  7. singappl : 싱가포르 프로그램으로 예전 brick 소스에 가깝다
  8. src : 각 모듈별 파일들
  9. testapp : 각 테스트 프로그램들

준비운동하기

컴파일을 위해서는 ST20R2.1.2 를 설치해야 한다. 서버의 '프로젝트 → sw → HD → 진행중프로젝트 → 7710' 아래에 가면, 인스톨(.exe)파일이 있으니 설치하면 된다. 설치후에는 c:\STM\ST20R2.1.2 에 설치된다.
기준이 되는 디렉토리는 c:\STM 이다.

여기에 앞에서 압축을 푼 7710ref 를 복사한다. 또한 가장 중요한 프로그램인 DACS7000 을 복사한다.
그러면, STM 디렉토리에는

  1. 7710ref : 7710 기본 라이브러리를 생성하는 소스 프로그램 (5517ref 와 같다고 봄)
  2. DACS7000 : 메인 소스 프로그램
  3. ST20R2.1.2 : ST OS 라이브러리(정상적인 컴파일을 위해 반드시 필요)

있다.

ST20R2.1.2\bin 아래에 ST20.bat 파일을 7710ref\bin 아래에 복사한다.

환경설정을 위해서 7710ref\bin 아래에 있는 setup.bat 파일을 다음과 같이 수정한다.

@echo off
rem Perform the following steps when modifying this file to setup the build
rem environment:
 
rem 1. Set the following variable to point to the top level of the 7710 tree.
rem    NOTE: Use forward slashes and do not include a trailing slash.
 
set STi7710ROOT=C:/stm/7710ref       <<------ 경로에 맞게 수정
 
rem 2. Set the following variable to point to the location of your own
rem    targets.cfg file.
rem    NOTE: Use forward slashes and do not include a trailing slash.
rem    NOTE: This is the location of the targets.cfg shipped with the release
rem          which has no targets defined. If you provide your own, remember
rem          to delete the targets.cfg from this location.
 
set DVD_TARGET_PATH=%STi7710ROOT%/config/platform
 
rem 3. Add the location of the 7710 bin directory to the front of your
rem    path.
rem    NOTE: Use backward slashes and do not include a trailing slash.
 
set PATH=%STi7710ROOT%/bin;%PATH%
 
 
echo Using 7710 root: %STi7710ROOT%
set DVD_MAKE=%STi7710ROOT%/make
set DVD_ROOT=%STi7710ROOT%/src
set DVD_EXPORTS=%STi7710ROOT%/lib
 
rem See the release notes for descripton of these build options
set DVD_TRANSPORT=stpti4
set DVD_PLATFORM=mb391
set DVD_SERVICE=DVB
set DVD_FRONTEND=7710
set DVD_BACKEND=7710
set DVD_DEPENDS=yes
 
rem tuner driver settings for 299, 360, 297/297J tuners
set DVD_STTUNER_USE_SAT=YES
set DVD_STTUNER_USE_TER=YES
set DVD_STTUNER_USE_CAB=YES
set DVD_STTUNER_BUILD_299=YES
set DVD_STTUNER_BUILD_DUAL299STEM=YES
set DVD_STTUNER_BUILD_360=YES
set DVD_STTUNER_DRV_CAB_EXTTUNERS=YES
set DVD_STTUNER_DRV_CAB_STV0297=YES
set DVD_STTUNER_DRV_CAB_STV0297J=YES
set DVD_STTUNER_BLOCK_SYNC_MODE_SELECT=YES
 
rem enable audio wa
set ST_7710_CUT1_WORKAROUND=1
 
 
rem set the following for 299/6K NIM tuner
set TESTAPP_TUNER_TYPE=STTUNER_TUNER_STB6000
 
 
rem video memory injection settings
set TESTAPP_VID_INJECTION=MEMORY
set TESTAPP_VID_FILENAME=susie.m1v
 
 
rem set TESTAPP_TSIN_CONFIG=TSIN0_NORMAL (OR) TESTAPP_TSIN_CONFIG=TSIN1_NORMAL
rem If this variable is not set, TSMERGER will operate in bypass mode. Affects all tests using tsmerger.
set TESTAPP_TSIN_CONFIG=TSIN1_NORMAL
 
 
rem set epld for stem mode to use db499, not set if db580 nim will be used
set TESTAPP_EPLD_DB499=1
 
 
rem set DEBUG to 1 as default to support boot from flash / will be investigated later.
set DEBUG=1
 
 
rem set TESTAPP_SWITCH_HD_MODES=1
rem If this variable is set, HD format will be periodically switched between 1080I, 720P & 480P in testapp1
rem Otherwise, output will be set to TESTAPP_HD_FORMAT format
 
 
set DVD_APPLIC=TESTTOOL
set DVD_REF=%STi7710ROOT%/testapps/testapp1
set DVD_IO=UART         <<------ 추가
 
goto Done
 
echo This setup.bat file must be edited to reflect the installation location
echo in order to work. Please read the instructions in the setup.bat file.
 
echo This script is being run as:
echo %0%
 
:Done

위에서 주석이 달린 부분을 수정해주면 된다.

컴파일 하기

DACS7000을 컴파일해보자. 프롬프트 창을 열고, 다음과 같이 입력한다.

>cd \
>cd stm\7710ref\bin
>setup.bat
>st20.bat
>cd ..
>cd ..
>cd DACS7000
>gmake

위와 같이 컴파일하면 된다.

7710ref 라이브러리 만들기

>cd \
>cd stm\7710ref\bin
>setup.bat
>st20.bat
>cd ..
>cd src
>gmake clean
>gmake 

컴파일이 성공적으로 끝났다면, lib 디렉토리 아래에 stapi_stpti4.lib 파일이 생성되었을 것이다.(파일 이름이 바뀌었다!!) 이 파일을 DACS7000\lib 아래에 복사한다.

몇 가지 염두할 점들

2005. 10. 21 현재, 7710 CUT 3.1 에 맞춰 나온 S/W 가 7710M6minus.zip 이다. 몇가지 수정사항이 가해져야 한다.
BSI FTP 에서 다운로드한 stvtg 디렉토리와 tsmerge.c 파일을 복사해야 한다.

  1. BSI FTP 사이트에서 7710M6minus.zip, stvtg.zip, tsmerge.c 다운로드 받는다.
  2. 7710M6minus.zip 압축을 푼다. 풀면, 7710ref-SNAP2005.10.071-DVB.zip 파일이 나온다.
  3. 7710ref-SNAP2005.10.071-DVB.zip 압축을 풀면, 7710ref 가 나온다.
  4. 앞에서 받은 stvtg.zip 을 풀어서, 7710ref/src 아래에 복사한다. 이때 이전 디렉토리는 이름을 바꾼다.(stvtg.old)
  5. temerge.c 역시 7710ref/testapps/shared/7710 아래에 복사한다. 이전 파일은 이름을 바꾼다.

라이브러리를 만드는 과정에서 아래와 같은 에러가 발생할 것이다.

---- Building stvtg.lib ----
Compiling C:\stm\7710ref\src\stvtg\src/vtg_drv.c
st20cc C:\stm\7710ref\src\stvtg\src/vtg_drv.c -D STVTG_VOS -D STVTG_USE_CLKRV -D STCLKRV_NO_PTI -D BE_7710 -DSTSYS_NO_PRAGMA -DPROCESSOR_C1  -DSTPTI_D
VB_SUPPORT  -DSTVTG_TASK_PRIORITY_IT_PROCESSING=15 -DSTVTG_CLK_HDMI -DSTVTG_HDMI -finl-timeslice -c1 -c -O2 -Dmb391 -DST_7710 -DARCHITECTURE_ST20 -DST
_OS20    -IC:\stm\7710ref\src\stvtg\src/hal -IC:\stm\7710ref\src\stvtg\src -IC:\stm\7710ref\src\stvtg\src/hal -IC:\stm\7710ref\src\stvtg\src/hal/denc
-IC:\stm\7710ref\src\stvtg\src/hal/omega2 -IC:/stm/7710ref/include -IC:/stm/7710ref/src/stvtg -IC:/stm/7710ref/config/chip -IC:/stm/7710ref/config/boa
rd -IC:/stm/7710ref/config/platform -o vtg_drv.tco
Error-st20icc-C:\stm\7710ref\src\stvtg\src\vtg_drv.c(119)- Undeclared name, inventing 'extern int STVTG_TIMING_MODE_1152I50000_48000'
Serious-st20icc-C:\stm\7710ref\src\stvtg\src\vtg_drv.c(119)- Illegal in static integral type initialiser: non constant 'STVTG_TIMING_MODE_1152I50000_4
8000'
st20cc: Error: in attempting to run st20icc
gmake[5]: *** [vtg_drv.tco] Error 1
gmake[5]: Leaving directory `C:/stm/7710ref/src/stvtg/src/objs/ST20'
gmake[4]: *** [default] Error 2
gmake[4]: Leaving directory `C:/stm/7710ref/src/stvtg/src'
gmake[3]: *** [C:\stm\7710ref\src\stvtg/src/objs/ST20/stvtg.lib] Error 2
gmake[3]: Leaving directory `C:/stm/7710ref/src/stvtg/objs/ST20'
gmake[2]: *** [default] Error 2
gmake[2]: Leaving directory `C:/stm/7710ref/src/stvtg'
gmake[1]: *** [stvtg.lib] Error 2
gmake[1]: Leaving directory `C:/STM/7710ref/src/objs/ST20'
gmake: *** [default] Error 2

헤더파일에 define 이 안되어서 발생하는 에러이다. 이럴 때는 include/stvtg.h 파일에 다음과 같이 추가하면 된다.

typedef enum STVTG_TimingMode_e
{
    STVTG_TIMING_MODE_SLAVE,
    STVTG_TIMING_MODE_480I60000_13514,    /* NTSC 60Hz */
    STVTG_TIMING_MODE_480P60000_27027,    /* ATSC 60P */
    STVTG_TIMING_MODE_480P30000_13514,    /* ATSC 30P */
    STVTG_TIMING_MODE_480P24000_10811,    /* ATSC 24P */
    STVTG_TIMING_MODE_480I59940_13500,    /* NTSC, PAL M */
    STVTG_TIMING_MODE_480P59940_27000,    /* ATSC 60P/1.001 */
    STVTG_TIMING_MODE_480P29970_13500,    /* ATSC 30P/1.001 */
    STVTG_TIMING_MODE_480P23976_10800,    /* ATSC 24P/1.001 */
    STVTG_TIMING_MODE_480I60000_12285,    /* NTSC 60Hz square */
    STVTG_TIMING_MODE_480P60000_24570,    /* ATSC 60P square */
    STVTG_TIMING_MODE_480P30000_12285,    /* ATSC 30P square */
    STVTG_TIMING_MODE_480P24000_9828 ,    /* ATSC 24P square */
    STVTG_TIMING_MODE_480I59940_12273,    /* NTSC square, PAL M square */
    STVTG_TIMING_MODE_480P59940_24545,    /* ATSC 60P/1.001 square */
    STVTG_TIMING_MODE_480P29970_12273,    /* ATSC 30P/1.001 square  */
    STVTG_TIMING_MODE_480P23976_9818 ,    /* ATSC 24P/1.001 square */
    STVTG_TIMING_MODE_576I50000_13500,    /* PAL B,D,G,H,I,N, SECAM */
    STVTG_TIMING_MODE_576I50000_14750,    /* PAL B,D,G,H,I,N, SECAM square */
    STVTG_TIMING_MODE_1080P60000_148500,  /* SMPTE 274M #1  P60 */
    STVTG_TIMING_MODE_1080P59940_148352,  /* SMPTE 274M #2  P60 /1.001 */
    STVTG_TIMING_MODE_1080P50000_148500,  /* SMPTE 274M #3  P50 */
    STVTG_TIMING_MODE_1080I60000_74250,   /* EIA770.3 #3 I60 = SMPTE274M #4 I60 */
    STVTG_TIMING_MODE_1080I59940_74176,   /* EIA770.3 #4 I60 /1.001 = SMPTE274M #5 I60 /1.001 */
    STVTG_TIMING_MODE_1080I50000_74250,   /* SMPTE 295M #2  I50 */
    STVTG_TIMING_MODE_1080I50000_74250_1, /* SMPTE 274M   I50 */
    STVTG_TIMING_MODE_1080P30000_74250,   /* SMPTE 274M #7  P30 */
    STVTG_TIMING_MODE_1080P29970_74176,   /* SMPTE 274M #8  P30 /1.001 */
    STVTG_TIMING_MODE_1080P25000_74250,   /* SMPTE 274M #9  P25 */
    STVTG_TIMING_MODE_1080P24000_74250,   /* SMPTE 274M #10 P24 */
    STVTG_TIMING_MODE_1080P23976_74176,   /* SMPTE 274M #11 P24 /1.001 */
    STVTG_TIMING_MODE_1035I60000_74250,   /* SMPTE 240M #1  I60 */
    STVTG_TIMING_MODE_1035I59940_74176,   /* SMPTE 240M #2  I60 /1.001 */
    STVTG_TIMING_MODE_720P60000_74250,    /* EIA770.3 #1 P60 = SMPTE 296M #1 P60 */
    STVTG_TIMING_MODE_720P59940_74176,    /* EIA770.3 #2 P60 /1.001= SMPTE 296M #2 P60 /1.001 */
    STVTG_TIMING_MODE_720P30000_37125,    /* ATSC 720x1280 30P */
    STVTG_TIMING_MODE_720P29970_37088,    /* ATSC 720x1280 30P/1.001 */
    STVTG_TIMING_MODE_720P24000_29700,    /* ATSC 720x1280 24P */
    STVTG_TIMING_MODE_720P23976_29670,    /* ATSC 720x1280 24P/1.001 */
    STVTG_TIMING_MODE_1080I50000_72000,   /* AS 4933-1 200x 1080i(1250) */
    STVTG_TIMING_MODE_720P50000_74250,
    STVTG_TIMING_MODE_1152I50000_74250,
    STVTG_TIMING_MODE_576P50000_27000,  /*Australian mode*/
    STVTG_TIMING_MODE_1152I50000_48000,       <<<<<-------   추가할 것!!!
    STVTG_TIMING_MODE_COUNT             /* must stay last */
} STVTG_TimingMode_t;
  • computer/digitalarena/7710_컴파일하기.txt
  • Last modified: 3 years ago
  • by likewind