U-Boot 컴파일 시 arm-arago-linux-gnueabi-ld:/home/SourceCode/u-boot/spl/u-boot-spl.lds:1: syntax error

에라가 발생하면서 컴파일이 안될 경우는 home/SourceCode/u-boot/include/configs/davinci_dm365evm.h 파일에

주석 처리를 // 로 하지 않았는지 확인한다. 반드시 주석 처리는 c 스타일인 /* */ 로 처리 해야 한다.

Posted by 다크쌍피

DM368은 OSD 및 Video의 설정 정보를 사용자가 소스코드를 수정 하지 않고, 변경하도록

Sysfs를 통해 제공한다.


해당 경로

 /sys/class/davinci_display/ch0/XXXX : 출력 인터페이스 설정 변경

 /sys/class/graphics/fbx/XXXX : 프레임 버퍼 설정 변경


변경 방법 예제

 $ echo COMPOSITE > /sys/class/davinci_display/ch0/output

 $ echo NTSC > /sys/class/davinci_display/ch0/mode

 $ echo 4 > /sys/class/graphics/fb0/blank : OSD0 Disable

 $ echo 0 > /sys/class/graphics/fb0/blank : OSD0 Enable

                              :


Posted by 다크쌍피

DM368 Output 출력 변경시 서로 다른 해상도를 지원 할 경우 화면이 깨지는 문제점이 존재 한다.

예를 들어 기본 출력이 LCD, 해상도는 800x480이고 Composite의 해상도는 720x480(NTSC) 인 경우 LCD의

화면을 Composite으로 출력시 픽셀이 깨지는 현상이 발생하는데, 이는 OSD0의 프레임 버퍼의 오프셋이

800 픽셀로 설정이 되어서 밀리는 현상 때문이다. 이를 해결하기 위해선 처음 Bootloader의 bootargs 에서

OSD0를 720x480으로 설정 하면 되는데 이러면 LCD에서 80 픽셀이 잘리는 문제점이 발생한다.

이를 해결하는 방법은 fdset 프로그램을 사용하면 해결 할 수 있다.

fdset의 xres 와 yres 에 변경하려고 하는 해상도를 지정해주면 간단히 프레임 버퍼의 해상도를 변경할 수 있다.


LCD(800x480) -> Composite(720x480)으로 변경 시


$ fdset -xres 720 -yres 480


Posted by 다크쌍피

NFS 클라이언트에서 서버로 마운트 시 tmpfs(/dev/shm 인경우) 이 보이지 않는 경우 해결 방법

 

NFS Server의 /etc/exports 의 첫번째 줄에 다음과 같이 추가해준다.

 

/dev/shm *(rw,no_root_squash,no_subtree_check,fsid=1,sync) 

 

 

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

[DM368] OSD 및 Video 설정  (0) 2013.08.20
[DM368] LCD to Composite 해상도 문제.  (0) 2013.08.20
[DM368] NFS Server 설치  (0) 2013.07.02
[DM368] Memory_contigFree> Error  (0) 2012.08.18
[DM368] Busybox tftpd 실행법  (0) 2012.07.03
Posted by 다크쌍피

NFS 서버 설치 하기

1.    크로스 컴파일 및 설치

1.1  libtirpc-0.2.3

$ CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-none-linux-gnueabi --prefix=/home/no1no1no1/temp/nfs

$ make

$ make install

 

1.2 rpcbind-0.2.0

$ cp /home/no1no1no1/temp/nfs/lib/lib* (rpcbind src폴더) // 복사

$ cp -r /home/no1no1no1/temp/nfs/include/tirpc (rpcbind src폴더) // 복사

$ CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-none-linux-gnueabi --prefix=/home/no1no1no1/temp/nfs

$ make

$ make install

 

1.3 pkg-config-0.28

$ CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-none-linux-gnueabi --prefix=/home/no1no1no1/temp/nfs --docdir=/home/no1no1no1/temp/nfs/share/doc/pkg-config-0.28 --with-internal-glib --disable-host-tool

$ CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-none-linux-gnueabi --prefix=/home/no1no1no1/temp/nfs --disable-host-tool

$ make

$ make install

 

1.4 nfs-utils-1.2.7

$ CC=arm-none-linux-gnueabi-gcc CFLAGS="-I/home/no1no1no1/temp/nfs/include" LDFLAGS=-L/home/no1no1no1/temp/nfs/lib ./configure --host=arm-none-linux-gnueabi --prefix=/home/no1no1no1/temp/nfs --disable-nfsv4 --disable-nfsv41 --disable-gss --without-tcp-wrappers

$ make

$ make install

 

 

2.    Linux설정

2.1 Linux kernel 설정

- Kernel Menuconfig

+ File systems ---> [*]Netwok File Systems ---> <*> NFS server support - [*] NFS server support for NFS version 3

 

3.     Root Filesystem  환경 설정

3.1서버 환경설정

/etc/sysconfig/nfs-server 파일을 만들어 주고 내용을 다음과 같이 작성

PORT="2049"

PROCESSES="8"

QUOTAS="no"

KILLDELAY="10"

 

3.2 rpcbind 환경설정

/etc/netconfig 파일을 만들어 주고 내용을 다음과 같이 작성

#

# The network configuration file. This file is currently only used in

# conjunction with the TI-RPC code in the libtirpc library.

#

# Entries consist of:

#

#       <network_id> <semantics> <flags> <protofamily> <protoname> \

#               <device> <nametoaddr_libs>

#

# The <device> and <nametoaddr_libs> fields are always empty in this

# implementation.

#

udp        tpi_clts      v     inet     udp     -       -

tcp        tpi_cots_ord  v     inet     tcp     -       -

udp6       tpi_clts      v     inet6    udp     -       -

tcp6       tpi_cots_ord  v     inet6    tcp     -       -

rawip      tpi_raw       -     inet      -      -       -

local      tpi_cots_ord  -     loopback  -      -       -

unix       tpi_cots_ord  -     loopback  -      -       -

 

3.3 권한 설정

/etc/exports 파일 생성 후 권한 설정.*는 모두, *자리에 ip address 대역을 작성해줘도 된다.

/usr/share/NT_101/nfs/ *(rw,subtree_check,anonuid=99,anongid=99)

 

3.4 tab 파일 생성

만들어 주어야 되는것이 /var/lib/nfs/ 디렉토리를 만들고 etab,rmtab,xtab의 세개의 빈파일을 만들어 줍니다.

 

3.5 서비스 등록

/etc/services 파일에 nfs 포트를 추가한다.

nfs        2049/tcp

nfs        2049/udp 

 

3.6 참고

정상적으로 마운트 후 exports 옵션도 RW로 되어 있는데, Writing Writing 되지 않고 "cp: cannot create regular file "XXXXX": Permission denied" 메시지 발생시

server nfs 폴더 권한 때문에 발생. chmod -R 777 nfsserver_folder

 

3.7 데몬 실행 순서

/usr/sbin/rpcbind

/usr/sbin/nfsd

/usr/sbin/mountd

/usr/sbin/exportfs –r

/usr/sbin/exportfs

 

3.8 client 실행

$ mount –t nfs 192.168.1.168:/ /home/no1no1no1/temp/nfs_c

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

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