DM368 EVM에서 제공하는 evmdm368_test에는 여러기능을 시험 해볼 수 있는 소스코드가 있다.
그중. Video Colorbar를 LCD에 출력할 수 있는 시험을 하는 lcd Project는 Video0 window에 컬러
바를 출력해준다. DM368-EVM과 같이 YCC422 인터페이스라면 Test Code로 타켓보드를 검증 할 수
있으나 Parallel RGB 인터페이스를 사용한다면 정확한 색감을 얻기 위해서는 변환을 해줘야 한다.
아래 소스는 RGB 0x00XXXXXX (XX:R, XX:G, XX:B)로 원하는 색을 넣으면 YCrCb로 변환하는 소스다.

 Uint32 CVT_RGB_to_YCbCr(Uint32 RGB)
{
  Uint32 Red = 0, Green = 0, Blue = 0;
 int Y = 0, Cb = 0, Cr = 0;
 Uint32 YCbCr = 0;

 Red = (RGB & 0x00FF0000) >> 16;
 Green = (RGB & 0x0000FF00) >> 8;
 Blue = (RGB & 0x000000FF);

 Y  = (int)(((19595 * Red) >> 16) + ((38470 * Green) >> 16) + ((7471  * Blue) >> 16));
 Cb = (int)( -((11059 * Red) >> 16) - ((21709 * Green) >> 16) + ((32768 * Blue) >> 16) + 128 );
 Cr = (int)(((32768 * Red) >> 16) - ((27439 * Green) >> 16) - ((5329  * Blue) >> 16) + 128 );

 Y  = (int)((Y  > 0) ? Y  : 0);  Y  = (int)((Y  < 255) ? Y  : 255);
 Cb = (int)((Cb > 0) ? Cb : 0);  Cb = (int)((Cb < 255) ? Cb : 255);
 Cr = (int)((Cr > 0) ? Cr : 0);  Cr = (int)((Cr < 255) ? Cr : 255);

  YCbCr = 0;
 YCbCr |= (Y << 24);
 YCbCr |= (Cr << 16);
 YCbCr |= (Y << 8);
 YCbCr |= (Cb);

 return YCbCr;
}


lcd_colorbars() 에서 plot(O,O,0x00FF0000) 형식으로 RGB 값을 입력하고,
plot()에서 *addr = CVT_RGB_to_YCbCr(pixeldata); 로 변환해서 넘겨주면 된다.
Posted by 다크쌍피


DM368(5)-EVM 보드를 사용해서 개발하였을 경우 기본 디버깅 콘솔을 UART0로 사용하게 되어 있다.
이를 UART1으로 사용하기 위해서는 다음과 같이 수정해 주면 된다.
* dvsdk_dm368-evm_4_02_00_06 기준

/include/configs/davinci_dm365evm.h

:
#define CONFIG_SYS_NS16550_COM1  0x01c20000
#define CONFIG_SYS_NS16550_COM2  0x01D06000
#define CONFIG_SYS_NS16550_CLK  121500000
#define CONFIG_CONS_INDEX  2   // 1: UART0, 2:UART1

/drivers/serial/serial.c 에서 UART 클락 설정.

static int calc_divisor (NS16550_t port)
{
:
:
#ifdef CONFIG_APTIX
#define MODE_X_DIV 13
#else
#define MODE_X_DIV 16
#endif

#define PLL1_PLLM    *(volatile unsigned int *)0x01c40910
#define PLL1_PREDIV  *(volatile unsigned int *)0x01c40914
#define PLL1_POSTDIV *(volatile unsigned int *)0x01C40928
#define PLL1_DIV4    *(volatile unsigned char *)0x01c40960
#define SYS_PERI_CLKCTL *(volatile unsigned int *)0x01C40048
 unsigned int pll1_clk;
    pll1_clk = ((PLL1_PLLM & 0x1ff) *2 *24) / ((PLL1_PREDIV & 0x1F) + 1)/((PLL1_POSTDIV & 0x1F) + 1);

 return ((pll1_clk*(1000000/(PLL1_DIV4+1))) + (gd->baudrate * (MODE_X_DIV / 2))) /
  (MODE_X_DIV * gd->baudrate);
}


/arch/arm/cpu/arm926ejs/davinci/dm365.c

 

void davinci_enable_uart0(void)
{
 lpsc_on(DAVINCI_LPSC_UART1);

 

Posted by 다크쌍피

DM368에 XDS510을 연결한 후 Reset과 Test는 되는데 CCS에서 gel 파일을 로드하여 Connect (Alt + C) 할때
아래 Error Message가 발생한다면 다음과 같이 처리가 가능하다.


 1. Target 보드에 전원을 인가한다.
 2. Bootloader 가 있다면 Boot모드로 진입하여 Kernel을 실행하지 않는다.
 3. 전원인가 후 10초정도 지난다음 Target 보드에 JTAG을 연결한다.
 4. JTAG의 USB 케이블을 PC에 연결한다.

 * 위의 에러메세지는 일반적으로 파워 문제로 인해서 발생한다. 그래서 먼저 보드에 전원을 인가 후 JTAG을
   연결하면 정상동작 한다.


Posted by 다크쌍피

CCS (Code Composer Studio)에서 Memory 혹은 Register에 특정 값을 입력하는 방법은 CCS의 Memory View에서 직접 입력하는 방법이 있고, Command 를 통해서 하는 방법이 있다.
이중 Command를 통해서 입력하는 방법은 아래와 같다.

1. CCS에서 Gel파일을 로드하여 Target 보드와 연결한다.
2. View -> Memory 선택
3. DM368의 GPIO Address 입력 (0x01c67000)

4. Tools -> Command Window 선택
5. Command 창에서 "fill 0x01c67010,1,0xFFFFFFFF" 입력

6. Address 값이 바껴있음.

Command Reference 는 Command 창에서 "help"를 치면 자세히 알 수 있음.

Posted by 다크쌍피

TI 의 장점 중 하나는 자사의 Chip을 이용한 보드 개발 시 해당 Chip의 기능을 Kernel을 올리기 전에 시험해 볼 수 있는 기능을 제공하는 것이다. 이 장점으로 인해서 개발 H/W을 빠르게 검증 할 수 있는것 또한 장점이다.
Kernel을 올리기 전에 보드 검증 시험을 하기위해서는 CCS 환경과 JTAG이 필요 하다.

DM368 EVM 및 자사 개발 보드 검증 환경
CCS : Ver 3.3
JTAG : XDS510 USB
Test Code : http://support.spectrumdigital.com/boards/evmdm368/revg/ 

1. 연결 순서
   가) Terminal을 연결하여 Bootmode로 들어감 (Kernel이 이미 올라간 경우)
   나) JTAG 컨넥터를 타겟 보드에 연결하고 PC와 JTAG을 USB로 연결
        (JTAG이 PC와 연결된 상태에서 타켓 보드의 전원을 인가하면 JTAG이 인식이 안되는 경우가 대부분)
   다) SdConfig를 실행 하여 Emulator -> Reset (Output 창에 아래 메세지가 나오면 정상)
         ** Using emulation application from directory c:\ccstudio_v3.3\drivers
         ** Emulator is reset 
   라) SdConfig의  Emulator -> Test (Output 창에 아래 메세지가 나오면 정상)

 ** Emulator Test **

 $$ EmuProductName=XDS510USB
 $$ EmuPortAddr=0x510 
 $$ EmuPortMode=USB
 $$ ProductId=510
 $$ ProductVersion=84
 ** Emulator Scan Test
   -- Found JTAG IR length of 6
   -- Found 1 JTAG device(s) in the scan chain

   * Reset은 되는데 Emulator Test가 안되어서 H/W에서 Reset Delay를 주어서 해결.
   마) CCS를 실행해서 evmdm368_v1/gel/evmdm368.gel Load
   바) Alt + C 를 이용해서 보드와 연결
   사) 시험하려고 하는 해당 Project를 Open하고 컴파일 한다.
   아) File -> Load Program 으로 컴파일된 파일을 로딩하여 F5 키를 눌러서 실행한다.
Posted by 다크쌍피
TI JTAG인 XD5510 USB의 초기화 및 시험 프로그램인 SdConfig V3.3 및 SdConfigEx v3.3을 사용하다가
보면 결과창인 Output 창의 Dock이 Resize가 안되서 화면에 결과를 볼 수 없는 경우가 발생한다.
이를 해결하기 위해선 레지스트리의 "Bar State-"로 시작하는 내용을 모두 삭제 해주면 된다.

     -My Computer
     -HKEY_CURRENT_USER
      -Software
       -Spectrum Digital
        -SdConfig
         -1.0
          -Bar State-Bar0
          -Bar State-Bar1
          -Bar State-Bar2
          -.....



Posted by 다크쌍피