서브버전 사용법

linux 2011. 9. 21. 11:16

서브버전 설치하는건 알아서 하시고.

 

1. 프로젝트 생성

  svnadmin create --fs-type fsfs project

 

2. 디렉토리 생성

  svn mkdir svn://svn/project/trunk

  svn mkdir svn://svn/project/branches

  svn mkdir svn://svn/project/tag

 

3. import

  svn import project svn://svn/project/trunk

 

4. check out

  svn co svn://svn/project/trunk ./project

 

5. update

  svn up

 

6. dump

  svnadmin dump [svn directory] > backup.dump

  svnadmin dump -r 10 [svn directory] > backup.dump

  svnadmin dump -r 10:20 [svn directory] > backup.dump


#!/bin/sh

cd /home/svn

for list in $(ls)
do
    echo $list
    svnadmin dump $list > ../svn_backup/$list.dump
done

7. restore

  svnadmin create tset

  svnadmin load test --fource-uuid < test.dump


 #!/bin/sh

for list in $(ls *.dump)
do
    TARGET=`echo $list|cut -f1 -d.`
    echo "RESTORE $TARGET"
    svnadmin create /home/svn/$TARGET
    svnadmin load /home/svn/$TARGET --force-uuid < $list
done


8. revision 번호만 따오는 법

 TARGET_RELEASE:=-r$(shell LC_ALL=C LANG=C svn info | awk '/Revision/ { print $$2 }')

 

 

블로그 이미지

김유석0

,

삼바 마운트 하는법

linux 2011. 9. 21. 11:15

윈도우 공유 디렉토리를 Linux PC 에 마운트 시키는 방법.

 

1. 마운트 명령 사용
 

 

sudo mount -t cifs //192.168.1.250/rnd /home/poplinux/samba -o username=kay.kim,password=kay.kim,iocharset=euc-kr,rw,setuids,uid=1000

 

  cifs : 인터넷 파일 시스템

  //192.168.1.250/rnd : 마운트 하고 싶은 디렉토리 위치

  /home/poplinux/samba : 마운트할 위치

  -o : 이거 이하로는 옵션

  username:kay.kim : 삼바 디렉토리 사용자명

  password:kay.kim : 삼바 디렉토리 비밀번호

  iocharset=euc-kr : euc-kr 캐릭터 코드 사용

  rw : 읽고 쓰고 가능.

  setuids : 모름

  uid=1000 : 마운트할 삼바 디렉토리의 권한을 uid 1000 으로 지정. 참고로 uid 1000 은 내 계정(poplinux) 의 uid임

 

2. /etc/fstab 등록

 

 # /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda1 during installation
UUID=1251eddf-bb2d-4249-828f-cb05d6686f55 /                     ext4    errors=remount-ro 0       1
# /home was on /dev/sda2 during installation
UUID=617694d7-93e6-4042-b549-bd8789bb75ea /home           ext4    defaults        0       2
# swap was on /dev/sda3 during installation
UUID=23621cd0-1719-44df-9f68-38999496a3c8 none                swap    sw              0       0
//192.168.1.250/rnd /home/poplinux/samba                         smbfs   username=kay.kim,password=kay.kim,rw,setuids,uid=1000,iocharset=euc-kr  0   0
                                                                                                                    

'linux' 카테고리의 다른 글

windows hosts 파일 위치  (0) 2011.09.21
서브버전 사용법  (0) 2011.09.21
BuildRoot 시스템  (0) 2011.09.21
윈도우 공유 디렉토리를 리눅스에서 마운트 하는 법  (0) 2011.03.25
media player 개발  (0) 2011.02.07
블로그 이미지

김유석0

,

BuildRoot 시스템

linux 2011. 9. 21. 10:17
넥스지는 프로젝트 개발시 BuildRoot System 을 사용한다. 

 BuildRoot System 은 개발프로젝트 관리를 위한 프레임 웍이라고 볼 수 있는데 간단히 설명하면 하위 디렉토리에 필요한 팩키지 소스를 등록하고 그 팩키지를 컴파일하기 위한 룰을 체계적으로 관리하기 위한 툴이라고 생각하면 된다.

 크게 보면 디렉토리 구성은 아래와 같다. 

   build_mips/{프로젝트}/{소스}
   local/{ROOT 프로젝트명}/{ROOT 설정파일}
   package/{프로젝트}/{프로젝트용 makefile}

 예를 들어 
  개발 프로젝트 : OCTEON SoC based project
  사용할 소스    : libpcap-1.1.1
 
 이라고 할때 디렉토리 구성은 아래처럼 된다. 

  build_mips/libpcap-1.1.1
  local/octeon
  package/libpcap

libpcap-1.1.1 의 다운로드 사이트 정보 및 configure 옵션에 대한 설정은 package/libpcap/libpcap.mk 에 기술하게 된다.

 이렇게 준비한후 make 를 실행하면 우선 필요한 팩키지를 각 사이트로부터 다운로드 받고 자동으로 configure 를 실행한후 rootfile system 에 결과물을 복사한후 kernel 과 rootfs 를 하나로 합쳐서 결과 이미지를 만들어 내게 된다. 

 BuildRoot 시스템을 사용하면 장,단점은 다음과 같다.
 장점
  1. 모든 프로젝트 소스에 같은 환경 설정을 적용하는 것이 쉽다.
  2. SoC BSP 공급자 입장에서 SDK 제공시 편리하다. 
  3. 프로젝트 소스의 업데이트가 편리하다. 

 단점
  1. 프로젝트 전체의 크기가 너무 방대하다. 
  2. 빌드시마다 프로젝트에 관련된 소스를 해당 사이트로부터 다운로드 받고 자신이 적용한 패치를 적용해야하며(자동화 되어 있지만) 컴파일을 새로 해야 한다. 
  3. 프로젝트 빌드 과정이 너무 방대하므로 철저한 관리가 어렵다.
  4. 각 오픈소스의 신버전이 나올때마다 바로 적용해서 업데이트 해야 하는 프로젝트라면 모르겠지만 그렇지 않은 경우라면 오버헤드가 크다. 
 

 BuildRoot 형태의 프로젝트 관리는 SoC 제작사가 BSP 를 배포할 때는 유용한 방식이라고 생각한다. 

 하지만 개발사의 입장에서는 각종 공용 library 를 매번 컴파일하거나 소스레벨로 프로젝트를 들고 다닐 필요가 없으므로 괜한 오버헤드 및 관리상의 문제점만 발생시킨다고 생각된다. 

 이건 추론이지만, 처음 프로젝트를 시작하였을 때 아마, 플랫폼 개발 경험이나 프로젝트 관리에 대한 경험을 가진 분이 안 계셨던 것으로 생각된다. 그래서 BSP 로 제공한 BuildRoot 에다 일부 소스만 추가하는 형태로 시작한 것이 아닌가 한다. 

 결론은

   BSP 제공하는 입장이라면 BuildRoot 를 통해서 제공하는 것이 유리하고
   BSP 를 사용하여 실제 개발을 하는 입장이라면 BSP 를 바탕으로 새로 프로젝트 관리툴을 구축하여 사용하는 것이 유리하다.

 입니다. 


BuildRoot 홈페이지
  http://buildroot.uclibc.org/



 


 

  
 

'linux' 카테고리의 다른 글

서브버전 사용법  (0) 2011.09.21
삼바 마운트 하는법  (0) 2011.09.21
윈도우 공유 디렉토리를 리눅스에서 마운트 하는 법  (0) 2011.03.25
media player 개발  (0) 2011.02.07
X window programming site  (0) 2011.01.10
블로그 이미지

김유석0

,

윈도우 공유 디렉토리를 Linux PC 에 마운트 시키는 방법.

1. 마운트 명령 사용

sudo mount -t cifs //192.168.1.250/rnd /home/poplinux/samba -o username=kay.kim,password=kay.kim,iocharset=euc-kr,rw,setuids,uid=1000

  cifs : 인터넷 파일 시스템
   //192.168.1.250/rnd : 마운트 하고 싶은 디렉토리 위치
   /home/poplinux/samba : 마운트할 위치
   -o : 이거 이하로는 옵션
   username:kay.kim : 삼바 디렉토리 사용자명
   password:kay.kim : 삼바 디렉토리 비밀번호
   iocharset=euc-kr : euc-kr 캐릭터 코드 사용
   rw : 읽고 쓰고 가능.
   setuids : 모름
   uid=1000 : 마운트할 삼바 디렉토리의 권한을 uid 1000 으로 지정. 참고로 uid 1000 은 내 계정(poplinux) 의 uid임

2. /etc/fstab 등록

 # /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda1 during installation
UUID=1251eddf-bb2d-4249-828f-cb05d6686f55 /                     ext4    errors=remount-ro 0       1
# /home was on /dev/sda2 during installation
UUID=617694d7-93e6-4042-b549-bd8789bb75ea /home           ext4    defaults        0       2
# swap was on /dev/sda3 during installation
UUID=23621cd0-1719-44df-9f68-38999496a3c8 none                swap    sw              0       0
//192.168.1.250/rnd /home/poplinux/samba                         smbfs   username=kay.kim,password=kay.kim,rw,setuids,uid=1000,iocharset=euc-kr  0   0

'linux' 카테고리의 다른 글

삼바 마운트 하는법  (0) 2011.09.21
BuildRoot 시스템  (0) 2011.09.21
media player 개발  (0) 2011.02.07
X window programming site  (0) 2011.01.10
VLC player  (0) 2011.01.04
블로그 이미지

김유석0

,

media player 개발

linux 2011. 2. 7. 10:24
windows H.264 player 를 개발해야 합니다.

어떤 언어로 개발을 해야 할지 고민이 너무 많습니다.

 windows 기반에서 개발을 해 본 적이 없는 것이 가장 큰 문제인데 일단 시작해 보자는 생각으로 비트 컴퓨터에 수강을 등록하였습니다.

 java 로 하는 것이 가장 유리할 것 같은데 참조할 open source 프로젝트인 VLC 가 java 기반이 아니어서 우선은 VC++ 을 한 번 해보자 하는 생각으로 학원을 등록하였습니다.

 학원을 등록한 후에 웹서핑을 다시 해 보니 갑자기 java H.264 관련 내용이 눈에 확확 들어옵니다. VC++ 로 시작한 것이 살짝 후회가 되네요.


'linux' 카테고리의 다른 글

BuildRoot 시스템  (0) 2011.09.21
윈도우 공유 디렉토리를 리눅스에서 마운트 하는 법  (0) 2011.03.25
X window programming site  (0) 2011.01.10
VLC player  (0) 2011.01.04
subversion  (0) 2011.01.04
블로그 이미지

김유석0

,

X window programming site

linux 2011. 1. 10. 11:40
KLDP
 - http://wiki.kldp.org/wiki.php/LinuxdocSgml/X-Window-Programming-KLDP

'linux' 카테고리의 다른 글

윈도우 공유 디렉토리를 리눅스에서 마운트 하는 법  (0) 2011.03.25
media player 개발  (0) 2011.02.07
VLC player  (0) 2011.01.04
subversion  (0) 2011.01.04
vplay  (0) 2010.10.08
블로그 이미지

김유석0

,

VLC player

linux 2011. 1. 4. 19:57
경기도 개발과제로 4CH 차량용 DVR 을 개발중에 있습니다.

모든 국책이 그렇겠지만 마감 며칠을 앞두고 급하게 개발을 진행하고 있습니다.

원래 이러면 안되지만 제가 있는 조직이 워낙 일정관리가 안되는 조직이라 이런일이 발생하는 군요.

우선 업무 분장을 다음과 같이 나눴습니다.

김무겸 : DVR app 개발
김유석 : VLC player 개발 환경 구축 및 1차 컴파일 테스트. 이후에는 김무겸씨와 함께 VLC 수정
김영태 : 차눈-I 프로젝트 GPS 버전 RTC 드라이버 수정

데모를 위해서 VLC 플레이어를 수정해야 합니다

1. VLC 플레이어 소스 받기
  다음 사이트에서 VLC 소스를 받았습니다.
 
  http://www.videolan.org/vlc/download-sources.html
 
  소스명은 vlc-1.0.2.tar.bz2 입니다.

2. subversion 등록하기
  개발시에는 무조건 서브버전을 사용합니다.

3. dbus lib 설치
   sudo aptitude install libdbus-1-dev libmad0-dev libavcodec-dev libavformat-dev libswscale-dev libpostproc-dev libxcb-shm0-dev libxcb-xv0-dev libxcb-keysyms1-dev liblua5.1-0-dev lua50 liba52-0.7.4-dev libqt4-dev libsdl-dev libsdl-image1.2-dev libfribidi-dev libgcrypt-dev

4. configure
   이번 프로젝트에서는 QT 나 skin2 를 사용할 예정이 아니므로 비활성화 시켰습니다.
  ./configure --prefix=$PWD/output --disable-qt4 --disable-skins2 --enable-xosd --with-x --enable-debug

5. make
  make

6. install
  make install


=======================
디버깅 및 분석
=======================

아래 문서 참조하시면 좀 더 편할 겁니다.

http://wiki.videolan.org/Documentation:Hacker%27s_Guide




모든 app 의 시작은 main() 입니다. vlc 에서는 다음 파일에서 부터 시작합니다.

vlc.c:main()

main() 을 살펴보면 처음부분은 모두 환경 정리하는 코드입니다.

로케일, 인터럽트 핸들링 등등 그 이후에 src/control/core.c:libvlc_new() 를 호출합니다. 이 함수가 참 중요한 함수로 생각됩니다.

libvlc_new() ===
 libvlc_new() 로 들어가면 libvlc_InternalCreate(); 를 호출하여 libvlc_init_t 구조체를 생성하는데 이 구조체가 참 중요한 역활을 할 것으로 추정합니다. 어떤 역활을 하는지는 나중에 살펴보면 알겠지요.

 libvlc_InternalInit() 를 호출하여 이전에 생성한 구조체들을 초기화 하거나 CPU 가 무엇인지등을 체크하고 옵션을 파싱하는 등의 역활을 수행합니다.

__vlc_object_create() : vlc 오브젝트를 생성하고 초기화 해 줍니다.

==========================================
libvlc_new()
  vlc app 을 위한 각종 자료구조등을 생성하는 역활을 합니다. 이 함수 시작하면 다음 문장이 있는데 vlc 에서 중요하게 사용되는 internal instance 를 생성하는 역활을 수행합니다.

    libvlc_int_t *p_libvlc_int = libvlc_InternalCreate(); => 요 함수 통과하면 instance 생성하고 기본값으로 설정해 줍니다.

   그러고 나서 libvlc_InternalInit() 를 호출해서 필요한 설정값을 제대로 채워서 만들어 줍니다.

   방금전에 말한 요함수 libvlc_InternalInit() 요거 소스 살펴보면 딱 감이 옵니다. 아주 중요한 함수입니다.


 

1. 윈도우 생성용 함수
CreateWindow()
이 함수에서 기본창을 생성해 줍니다.

2. 윈도우에 영상을 그리는 함수
DisplayVideo()
이 함수가 계속 호출되면서 영상을 해당 윈도우에 그려 줍니다.
 

'linux' 카테고리의 다른 글

media player 개발  (0) 2011.02.07
X window programming site  (0) 2011.01.10
subversion  (0) 2011.01.04
vplay  (0) 2010.10.08
오디오 코덱 드라이버 개발할 때 업무 순서  (0) 2010.10.08
블로그 이미지

김유석0

,

subversion

linux 2011. 1. 4. 19:49
- 서브버전 설치
  sudo aptitude install subversion

- init script 설정
  /etc/init.d/svnserve 생성

svnserve


init script 생성후, 링크 걸어줌.

  sudo ln -s /etc/init.d/svnserve ./S99svnserve


- 에디터설정

  .bashrc 에 아래 라인 추가

  export SVN_EDITOR=vim


- 서비스 시작
  svnserve -d -r /home/svn 혹은, sudo /etc/init.d/svnserve restart

- 저장소 생성
  svnadmin create vlc_player --fs-type fsfs

- 암호 설정
  vi /home/svn/vlc_player/conf/passwd

    [user]
    poplinux = !poplinux

- 설정
  vi /home/svn/vlc_player/svnserve.conf
 
  uncomment below line
    auth-access = write   

   uncomment below line
    password-db = passwd   



- 저장소 디렉토리 생성
  svn mkdir svn://svn/vlc_player/trunk  
  svn mkdir svn://svn/vlc_player/branches
  svn mkdir svn://svn/vlc_player/tag

  위와 같이 저장소 디렉토리 생성하면, 아래와 같이 'yes', 'no' 를 선택하라는 메시지가 뜨는데, 아무리 해도 입력이 안되는 경우가 있다. 


인증 영역(realm): <svn://xxx.xxx.xxx.xxx:3690> xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxx
'xxxxx'의 암호: 
-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:
   <svn://xxx.xxx.xxx.xxx:3690> xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxx
can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.
You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/home/xxxxx/.subversion/servers'.
-----------------------------------------------------------------------

Store password unencrypted (yes/no)? 

 이럴때는 아래와 같이 설정 파일을 수정하면 된다. 

  ./subversion/servers 파일에서

  [global]

  store-passwords = yes 

  store-plaintext-passwords = yes 



- 최초 데이터 올리기
  svn import [data] svn://svn/vlc_player/trunk


- 바이너리 파일도 등록하기

  --no-ignore 옵션 사용하면 됨. 


- svn 정보 없이 데이터 내려 받기
  svn export svn://svn/vlc_player/trunk ./test






'linux' 카테고리의 다른 글

X window programming site  (0) 2011.01.10
VLC player  (0) 2011.01.04
vplay  (0) 2010.10.08
오디오 코덱 드라이버 개발할 때 업무 순서  (0) 2010.10.08
WM8731 driver  (0) 2010.10.08
블로그 이미지

김유석0

,

vplay

linux 2010. 10. 8. 12:00

 wav record, play 소스입니다. 출처는 uClinux.org 입니다. 

 제가 오디오 코덱 개발시에 주로 사용해는 app 입니다.

step 1. config.mk 파일을 수정하셔서 컴파일 환경을 설정한다.
step 2. make


'linux' 카테고리의 다른 글

VLC player  (0) 2011.01.04
subversion  (0) 2011.01.04
오디오 코덱 드라이버 개발할 때 업무 순서  (0) 2010.10.08
WM8731 driver  (0) 2010.10.08
ffmpeg 컴파일  (0) 2010.10.06
블로그 이미지

김유석0

,
 임베디드 보드 개발을 처음 시작하는 개발자의 경우 고참중에 쓸만한 고참이 있을면 처음 과제로 오디오 코덱 드라이버를 개발하거나 수정하는 업무를 줄 것입니다.

 왜냐면 제가 그렇게 하기 때문에. 움하하하하하하

 참고로 제 후배중에 배장규씨한테는 그렇게 했었는데 김무겸씨한테는 일부만 했네요. 미안합니다.

 그건 그렇고 오디오 코덱을 첫 과제로 내 주는 이유는 다음과 같습니다.

  1. 대부분의 오디오 코덱이 제어를 I2C 로 한다.
  2. 데이터 전송을 I2S 로 하는 경우가 많다.
  3. 디바이스 드라이버 샘플 코드가 공개되어 있는 경우가 많으며 비교적 간단하여 이해가 쉽다.
  4. 기능 갯수가 적어서 테스트가 용이하다.

 오디오 코덱을 개발할 때 개발 순서(절차) 를 간단히 정리하면 다음과 같습니다.

  1. 디바이스 드라이버 소스를 제공하는지 부터 확인(중요함)
  2. 데이터 시트 중 스팩 관련된 내용과 pin map 부분 정독. 나머지는 필요할 때마다 꺼내 보면 됨.
  3. main clock, 전원, reset pin 상태를 확인함. 오디오 코덱은 이 세가지만 잘 인가되고 있으면 별 문제 없이 동작됨.
  4. 데이터 시트에서 analog loop-back 모드를 확인하여 analog loop-back 모드로 설정하고 loop-back 기능이 잘 동작되면 코덱 자체(HW) 는 잘 구성되어 있다고 판단함.
 
 여기까지 우선 확인해서 잘 동작되면 약 95% 정도 진행된 것으로 판단하면 됩니다.

 그 다음엔 다음 명령을 사용해서 녹음, 재생을 해 봅니다.

  audio device file name : /dev/dsp
  녹음 : cat /dev/dsp > raw.wav
  재생 : cat raw.wav > /dev/dsp

 여기까지 했을 때 녹음 잘 되고 재생 잘되면 디바이스 드라이버 단까지는 완료된 것으로 판단하시면 됩니다.

 ==================================================================
 디바이스 드라이버 기본 동작까지는 잘 확인하였으니 한 이삼일 동안 데이터 시트 보면서 오디오 코덱의 여러 기능들을 테스트 해 보는 시간을 꼭 가져야 합니다.
 시간을 버리는 것처럼 보일 수도 있지만 이번에 이런걸 해 보아야 application 개발자에게 전달할때 application 을 쉽게 짤 수 있도록 여러 준비를 할 수 있는 토대를 마련할 수 있습니다.

꼭 기억합시다. 플랫폼 개발자는 자기 개발건만 생각하면 안됩니다. H/W, S/W 엔지니어가 쉽게 개발을 할 수 있도록 항상 신경써 주면서 개발해야 합니다.

 이제 디바이스 드라이버 단에 대한 개발은 완료되었으니 application 개발자를 위해 library 를 만들어 주도록 합시다. 

 요즘은 디바이스 드라이버 단독으로 동작하는 경우는 거의 없고 ALSA 나 OSS 같은 프레임 웍에 연동되도록 디바이스 드라이버를 작성하고 있습니다.

 하지만 그렇다 하더라도 "네가 알아서 ALSA, OSS 프레임 웍에 맞게 application 작성해라" 라고 하는 것은 능력없는 플랫폼 개발자나 하는 행동이고 뛰어난 플랫폼 개발자는 application 개발자가 API 만 호출해서 쓸 수 있도록 준비해 줘야 합니다.


 여기까지 개발을 진행하셨다면 여러분은 배장규씨나 김무겸씨 같은 뛰어난 플랫폼 개발자가 되신 겁니다.

 축하 드립니다.

'linux' 카테고리의 다른 글

VLC player  (0) 2011.01.04
subversion  (0) 2011.01.04
vplay  (0) 2010.10.08
WM8731 driver  (0) 2010.10.08
ffmpeg 컴파일  (0) 2010.10.06
블로그 이미지

김유석0

,