DM368에서 Colorkey 값을 설정하여 OSD0 에 설정된 키값에 Tranparency 값을 적용하는 방법은 다음과 같다.


1. bootargs 수정


video=davincifb:vid0=OFF:vid1=OFF:osd1=0x0x8


2. /drivers/media/video/davinci/davinci_osd.c 수정


static void _davinci_disp_enable_color_key(enum davinci_osd_layer osdwin,
                       unsigned colorkey,
                       enum davinci_pix_format pixfmt)
{
    switch (pixfmt) {
    case PIXFMT_1BPP:
    case PIXFMT_2BPP:
    case PIXFMT_4BPP:
    case PIXFMT_8BPP:
        if (cpu_is_davinci_dm355() || cpu_is_davinci_dm365()) {
            printk("$[%s] (%s) PIXFMT_1~8, colorkey = 0x%x \r\n", __FILE__, __func__, colorkey);
            switch (osdwin) {
            case OSDWIN_OSD0:
                osd_merge(OSD_TRANSPBMPIDX_BMP0,
                      colorkey <<
                      OSD_TRANSPBMPIDX_BMP0_SHIFT,
                      OSD_TRANSPBMPIDX);
                break;
            case OSDWIN_OSD1:
                osd_merge(OSD_TRANSPBMPIDX_BMP1,
                      colorkey <<
                      OSD_TRANSPBMPIDX_BMP1_SHIFT,
                      OSD_TRANSPBMPIDX);
                break;
            }
        }
        break;
    case PIXFMT_RGB565:
        if (cpu_is_davinci_dm644x()) {
            osd_write(colorkey & OSD_TRANSPVAL_RGBTRANS,
                  OSD_TRANSPVAL);
        } else if (cpu_is_davinci_dm355() || cpu_is_davinci_dm365()) {
            osd_write(colorkey & OSD_TRANSPVALL_RGBL,
                  OSD_TRANSPVALL);
        }
        break;
    case PIXFMT_YCbCrI:
    case PIXFMT_YCrCbI:
        if (cpu_is_davinci_dm355() || cpu_is_davinci_dm365())
            osd_merge(OSD_TRANSPVALU_Y, colorkey, OSD_TRANSPVALU);
        break;
    case PIXFMT_RGB888:
        if (cpu_is_davinci_dm355() || cpu_is_davinci_dm365()) {
            osd_write(colorkey & OSD_TRANSPVALL_RGBL,
                  OSD_TRANSPVALL);
            osd_merge(OSD_TRANSPVALU_RGBU, colorkey >> 16,
                  OSD_TRANSPVALU);
        }
        break;
    default:
        break;
    }

    switch (osdwin) {
    case OSDWIN_OSD0:
        osd_set(OSD_OSDWIN0MD_TE0, OSD_OSDWIN0MD);
        break;
    case OSDWIN_OSD1:
        osd_set(OSD_OSDWIN1MD_TE1, OSD_OSDWIN1MD);
        break;
    }
}
 


3. 어플리케이션 에서 설정 예제


#include <video/davincifb_ioctl.h>

void fb_init(void){
    int fbfd;
    char enable = 1;
    vpbe_bitmap_blend_params_t blendparam = {
    .colorkey = 0x0/*0x000000:Black, Transparency RGB Color값을 설정*/,
    .enable_colorkeying = 1,
    .bf = 0,
    };
    vpbe_backg_color_t backg = {
    .clut_select = 0,
    .color_offset = 255,
    };

    fbfd = open("/dev/fb0",O_RDWR);
    if (fbfd < 0){
    perror("Failed to open the framebuffer device");
    exit(-1);
    }

    if (ioctl(fbfd,FBIO_ENABLE_DISABLE_WIN,
        &enable) < 0){
        perror("Failed to enable the OSD window");
        exit(-1);
    }
    if (ioctl(fbfd,FBIO_SET_BACKG_COLOR,
        &backg) < 0){
        perror("Failed to enable the OSD window: set background color");
        exit(-1);
    }

    if (ioctl(fbfd,FBIO_SET_BITMAP_BLEND_FACTOR,
        &blendparam) < 0){
        perror("Failed to set the blending factor");
        exit(-1);
    }

    close(fbfd);


Posted by 다크쌍피
Programming & Tools/Linux2012. 5. 30. 12:48

Linux Kernel 을 디버깅 하다보면 printk의 레벨이 지정되어 있는 것을 볼 수 있는데,

이를 콘솔로 출력하기 위한 설정 명령은 다음과 같다.


echo 8 > /proc/sys/kernel/printk

 

echo 다음이 해당 등급이며 그 등급에 따른 내용은 아래와 같다.


There are eight possible loglevel strings, defined in the header <linux/kernel.h>; we list them in order of decreasing severity:

KERN_EMERG

Used for emergency messages, usually those that precede a crash.

KERN_ALERT

A situation requiring immediate action.

KERN_CRIT

Critical conditions, often related to serious hardware or software failures.

KERN_ERR

Used to report error conditions; device drivers often use KERN_ERR to report hardware difficulties.

KERN_WARNING

Warnings about problematic situations that do not, in themselves, create serious problems with the system.

KERN_NOTICE

Situations that are normal, but still worthy of note. A number of security-related conditions are reported at this level.

KERN_INFO

Informational messages. Many drivers print information about the hardware they find at startup time at this level.

KERN_DEBUG

Used for debugging messages.

Each string (in the macro expansion) represents an integer in angle brackets. Integers range from 0 to 7, with smaller values representing higher priorities.


참조 : http://www.makelinux.net/ldd3/chp-4-sect-2


Posted by 다크쌍피

Linux 로고를 LCD 사이즈에 맞게 변경하고 보면 왼쪽 상단에 커서가 깜빡이는

것 을 볼 수 있다. 이를 제거 하기위해서는 커널소스를 수정하면된다.


1. 수정 파일 : drivers/video/console/bitblit.c
2. 수정 내용 :


static void bit_cursor(struct vc_data *vc, struct fb_info *info, int mode,
               int softback_lines, int fg, int bg)
{
    struct fb_cursor cursor;
    struct fbcon_ops *ops = info->fbcon_par;
    unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
    int w = DIV_ROUND_UP(vc->vc_font.width, 8), c;
    int y = real_y(ops->p, vc->vc_y);
    int attribute, use_sw = (vc->vc_cursor_type & 0x10);
    int err = 1;
    char *src;

#ifdef NT_101_BOARD
    // For Remove Linux Boot Logo Cursor
    return;
#endif//NT_101_BOARD

    cursor.set = 0;

    if (softback_lines) {
        if (y + softback_lines >= vc->vc_rows) {
            mode = CM_ERASE;
            ops->cursor_flash = 0;
            return;
        } else
            y += softback_lines;
    } 
                  :
                  :


Posted by 다크쌍피

TI Progress bar 화면을 수정하고 Serial이 아닌 LCD로 TTY로 출력된

Login : 프롬프트를 화면에서 제거 하는 방법



$ vi etc/inittab


제일 마지막 라인인 아래 부분을 주석 처리

# 1:2345:respawn:/sbin/getty 38400 tty1



Posted by 다크쌍피
Programming & Tools/Linux2012. 5. 16. 02:26

Ubuntu 10.4에서 한글 입력 설정 방법

1. Menu Application -> Ubuntu Software Center -> ibus search

2. 목록에서 Hangul engine for IBus 선택 후 Install

3. Meny System -> Preferences -> IBus Preferences -> Input Method tab -> Select an input method -> korea -> Hangul

4. Ununtu restart

Posted by 다크쌍피
Programming & Tools/Linux2012. 5. 2. 00:58

Linux를 설치 후 ssh을 통해서 접속 시 .bashrc가 실행이 안되는 문제가 발생하면

.bash_profile을 아래와 같이 수정해 주면 된다.

 

/home/계정 $  vi .bash_profile

 

# 마지막 줄에 추가

 

if [ -f ~/.bashrc ]; then 
 
. ~/.
bashrc 
fi 
 

 

Posted by 다크쌍피

 CCS 3.3에서 DM368 을 사용하기위한 JTAG 환경설정.

 아래 순서대로 설치한다.

 

1. CCS 3.3 설치 

 

 

    별도 수정없이 Next로 끝까지 설정한다. 

 

 

2. 드라이버 설치 

 

 

 

  Next로 끝까지 설치. 

 

 

3. Service Release 설치 

 

 

 

  Next 버튼으로 끝까지 설치

 

 

4. Code Generation Tools 설치

 

 

 

 

    * 반드시 Destination Foler를 CCS가 설치된 위의 경로로 설치해야 한다.

 

        나머지는 모두 Next 버튼으로 설치한다. 

 

5. CSP 설치 

 

 

 

    Next 버튼을 이용하여 끝까지 설치.

 

 

6. Driver 설치 

  1) XDS510 USB JTAG을 PC에 연결한다. 

  2) Driver를 아래 경로를 지정하여 설치한다.

 

 

 

7. CCS Setup 

 

 

  위 파일을 실행 시키면 자동으로CCS에 XDS510 USB를 사용하게 설정된다.

  안될 경우 XDS510USB 관련 항목을 선택하여 설치 한다.

 

 

 

Posted by 다크쌍피

DM368 EVM의 SD카르로 부팅을 하면 boot.scr의 bootargv를 통해서 부팅이 진행되는데

이를 변경하기 위해서는 boot.scr을 직접 수정하는 것이 아니고, boot.cmd를 통해서 boot.scr을

생성해야 한다.

 

 

 $ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Execute Boot Script' -d boot.cmd boot.scr

 

 

Posted by 다크쌍피

* DM368에서 Video를 사용하기 위해서는 Virtual Memory와 Pysical Memory를 연동하는 모듈인 CMEM을 사용한다.
이때 물리적인 메모리를 사용하는 크기가 정확하지 않으면 Device 로딩 시 "CMEMK Error: Failed to request_mem_region..." 와 같은 에러 메세지가 출력되며 실행 되지 않는데 이를 해결하는 방법은 uBoot에서 bootargs 항목 중 mem=xxM 값과 /etc/init.d/loadmodule-rc 의 Memory Map이 일치 하여야 한다.

[DM368 EVM 예]

bootargs : mem=60M
loadmodule-rc :
                      # Default DM368 EVM Memory Map
                      #
                      # Start Addr    Size    Description
                      #-------------------------------------------
                      # 0x00001000    32K     ARM TCM memory
                      # 0x80000000    48 MB   Linux
                      # 0x83000000    12 MB   Video driver memory (Linux)
                      # 0x83C00000    68 MB   CMEM
                      # 0x88000000    BOTTOM  ADDRESS

                      load () {
                          modprobe cmemk phys_start=0x83C00000 phys_end=0x88000000 allowOverlap=1 phys
                         _start_1=0x00001000 phys_end_1=0x00008000 pools_1=1x28672 useHeapIfPoolUnavailable=1
                                                                                 :

'Programming & Tools > TMS320DM368' 카테고리의 다른 글

[DM368] CCS 환경설정  (0) 2012.04.30
[DM368] boot.scr 만들기  (0) 2012.04.13
[DM368] NFS Root FileSystem 설정  (0) 2012.03.17
[DM368] Ramdisk 생성  (0) 2012.03.09
[DM368] KSZ8721BL PHY 칩 연결시 uBoot 설정  (0) 2012.02.27
Posted by 다크쌍피
Programming & Tools/Android2012. 3. 23. 11:03
에뮬레이터 실행 시 콘솔 메시지 창에
"Re-installation failed due to different application signatures" 메시지가
뜨고 어플이 실행 안될때 해결 방법
 

에뮬레이터에서
Menu -> Setting -> Applications -> Manage application -> 해당 어플 선택 -> Uninstall  
Posted by 다크쌍피