/proc/bus/usb/device로 usb의 연결 정보를 확인 할 수 있다.

하지만 proc/bus/usb에 아무 것도 없는 경우가 있는데 이문제는

http://www.linux-usb.org/USB-guide/c607.html 에 보면 파일시스템이

마운트 되지 않았거나, 잘못된 곳에 마운트가 되었다고 한다.


# cat /etc/fstab

명령으로 filesystem 마운트 정보를 확인해본다.

# /etc/fstab: static file system information.
#
# <file system> <mount pt>     <type>   <options>         <dump> <pass>
/dev/root       /              ext2     rw,noauto         0      1
proc            /proc          proc     defaults          0      0
devpts          /dev/pts       devpts   defaults,gid=5,mode=620   0      0
tmpfs           /tmp           tmpfs    defaults          0      0
sysfs           /sys           sysfs    defaults          0      0
usbfs           /proc/bus/usb   usbfs   defaults        0       0


usbfs 가 마운트 안되어 있다면, 위 부분을 적용해 주고 재시작 하면, /proc/bus/usb/device 정보를 확인 할 수 있다.

Posted by 다크쌍피

MAC에서 ssh를 이용하여 sshd에 접속 하는 방법은

Terminal 에서 아래 명령을 입력 하면 된다.


"ssh user@hostname"

ex> $ ssh admin@192.168.1.100 


Posted by 다크쌍피

DM368에서 Codec Engine 디버깅 (export CE_DEBUG=1) 을 하다 보면 아래와 같은 메시지가 발생 하는 경우가 있다.

@14,213,649us: [+7 T:0x4253a490] OM - Memory_contigFree> Error: buffer (addr=1161986048, size=1408) not found in translation cache
이문제는 Config Packge를 잘못 설정 하였을 경우에도 발생을 한다.

DVSDK-Example의 encodedecode를 사용하는 예제를 참고 하였을 경우, 나의 Makefile에서 혹시 라이브러리 참조를

usr/local/dvsdk/dvsdk-demos_4_02_00_01/dm365/encodedecode/encodedecode_config/package/cfg/encodedecode_xv5T.ov5T

로 설정 해놓진 않았는지 확인 해보고 그렇게 되어있다면, 나의 프로그램 폴더의 하위 폴더에 컴파일된 ov5T 파일로 참조하도록 수정하면 해결이 가능하다.

Ex)


Makefile


   :

VIDEO_LIBS = \
    $(LIB_DIR)/dark2pee.a \
    $(ROOTDIR)/Newbroad/Project/NT101/PSP/ipphone/video/video_config/package/cfg/video_xv5T.ov5T \
    $(ROOTDIR)/dmai_2_20_00_15/packages/ti/sdo/dmai/lib/dmai_linux_dm365.a470MV \
    $(ROOTDIR)/codec-engine_2_26_02_11/packages/ti/sdo/ce/image1/lib/release/imgdec1.av5T \
    $(ROOTDIR)/codec-engine_2_26_02_11/packages/ti/sdo/ce/image1/lib/release/imgenc1.av5T \
    $(ROOTDIR)/codec-engine_2_26_02_11/packages/ti/sdo/ce/image/lib/release/image.av5T \

  :


Posted by 다크쌍피

Embedded LInux 의 네트워크 관련 설정은 "/etc/sysctl.conf" 에서 설정한다.

없으면 만들어 주면 된다.





# net.ipv4.tcp_keepalive_probes=2
net.ipv4.tcp_keepalive_time=10
# net.ipv4.tcp_keepalive_intvl = 10

# disable ipv6
net.ipv6.conf.all.disable_ipv6=1


Posted by 다크쌍피

Get / Put  둘다 실행 하는 명령어..

/tmp/ : 해당 폴더

-c : PUT도 가능하게..

* tftpd or udpsvd 프로그램을 실행 시켜보면 해당 옵션이 확인 가능함.

 

$ udpsvd -vE 0.0.0.0 69 tftpd -c /tmp/ 

 

Posted by 다크쌍피

//pcap library (libpcap)
$ CC=arm-none-linux-gnueabi-gcc ac_cv_linux_vers=2 ./configure --host=arm-none-linux-gnueabi --prefix=/home/no1no1no1/temp/tcpdump --with-pcap=linux
$ make
$ make install


// tcpdump
$ CC=arm-none-linux-gnueabi-gcc ac_cv_linux_vers=2 ./configure --host=arm-none-linux-gnueabi --prefix=/home/no1no1no1/temp/tcpdump --with-pcap=linux
$ make
$ make install



/* --prefix 항목이 설치 되는 위치 인데.. 이게 지정이 않되어 있으면 아래와 같은 에러가 발생.*/
no1no1no1@ipphone-dev-ubuntu:~/MoIP_Capture_Agent/src/tcpdump/tcpdump-4.3.0$ CC=arm-none-linux-gnueabi-gcc LD=arm-none-linux-gnueabi-ld ac_cv_linux_vers=2  ./configure --host=arm-none-linux-gnueabi --with-pcap=linux
configure: WARNING: If you wanted to set the --build type, don't use --host.
    If a cross compiler is detected then cross compile mode will be used.
checking build system type... i686-pc-linux-gnu
checking host system type... arm-none-linux-gnueabi
checking for arm-none-linux-gnueabi-gcc... arm-none-linux-gnueabi-gcc
checking for C compiler default output file name... a.out
                           :
                           :
checking for local pcap library... not found
checking for arm-none-linux-gnueabi-pcap-config... no
checking for pcap-config... no
checking for main in -lpcap... nno
configure: error: see the INSTALL doc for more info

/* --width-pcap=null 로 입력 했을 때 문제점.*/
tcpdump를 실행 하면 "live packet capture not supported on this system" 로 실행이 안됨.

Posted by 다크쌍피

DM368에서 Venc1_delete() 시 Memory Buffer Leak 현상 발생 시 해결 방안.


$ export CE_DEBUG=1 

로 코덱엔진 디버깅 메시지를 켰을때 아래와 같은 메시지가 발생하면.

@28,717,119us: [+7 T:0x453d7460 S:0x453d674c] OM - Memory_contigFree> Error: buffer (addr=1258430464, size=48) not found in translation cache


cfg 파일 (ex> encodedecode.cfg) 파일 마지막에 아래 내용 추가.

xdc.useModule('ti.sdo.ce.osal.linux.Settings').maxCbListSize = 200;  // default size is 100


Posted by 다크쌍피

* uboot에서 설정한 항목을 Linux 커널로 넘겨서 Kernel에 적용 시키는 방법


DM368 EVM에서는 MAC Address를 EEPROM에 저장하고 이를 Kernel에서도 사용하게

되어있다. 하지만 우리는 NAND Flash만 사용하므로 MAC을 NAND에 저장하고 이를 사용해야 한다.

NAND에 저장해서 이를 사용하는 방법은 여러가지가 있겠지만, 간단히 사용하기 위해서 다음과 같은

방법도 있음을 알자.


1. u-boot의 bootargs 내용에 "... board-dm365-evm.nt101_mac=0a:0a:0a:01:02:03 .." 내용을 추가한 후 저장한다.


2. Linux kernel의 /NT101_linux_psp3_01/arch/arm/mach-davinci/board-dm365-evm.c 파일에 아래 내용을 추가한다.


 static char *nt101_mac = "";
 module_param(nt101_mac, charp, S_IRUGO);


3. static char nt101_mac 에 0a:0a:0a:01:02:03 이 파라미터로 넘어 온다.

 

4. 파라미터로 넘어 온 값을 사용한다.

 

Posted by 다크쌍피

RGB888 to RGB565 Define


#define _MODE_555_RGB16BIT(r,g,b) ((b%32) + ((g%32) << 5) + ((r%32) << 10)) //convert 24->16bits
#define _MODE_565_RGB16BIT(r,g,b) ((b%32) + ((g%64) << 6) + ((r%32) << 11)) //convert 24->16bits
#define _RGB16BIT(r,g,b) ((b%32) + ((g%32) << 5) + ((r%32) << 10)) //builds 16bit color



Posted by 다크쌍피

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 다크쌍피