블로그 이미지
frostguy

카테고리

분류 전체보기 (48)
사진 (3)
Study (40)
IT (3)
Total143,121
Today8
Yesterday28

'pxa320tku'에 해당되는 글 4건

  1. 2008.12.15 OpenCV Cross Compile (2)
  2. 2008.11.29 PXA320TKU 에 Web Server 설치하기 (1)
  3. 2008.11.25 PXA320TKU NFS Mount
  4. 2008.11.21 PXA320TKU Boot Screen 교체하기
1. OpenCV 1.0 download & 압축 해제

[root@localhost OpenCV]# wget http://downloads.sourceforge.net/opencvlibrary/opencv-1.0.0.tar.gz
[root@localhost OpenCV]# tar xvfz opencv-1.0.0.tar.gz


2. CrossCompile 을 하기 위하여 configure 설정 
[root@localhost opencv-1.0.0]# ./configure CXX=/usr/local/arm-linux-4.1.1/bin/arm-linux-g++ --host=arm-linux --target=arm-linux --without-gtk --without-gthread --without-libjpeg --without-zlib --without-libpng --without-libtiff --without-libjasper --without-ffmpeg --without-raw1394 --without-v4l2 --without-python --prefix=/Project/OpenCV/usr

CXX=/usr/local/arm-linux-4.1.1/bin/arm-linux-g++  -> Arm Compiler 의 위치를 지정

--host=arm-linux --target=arm-linux ->Target Board 의 시스템을 지정

--without-gtk --without-gthread --without-libjpeg --without-zlib --without-libpng --without-libtiff --without-libjasper --without-ffmpeg --without-raw1394 --without-v4l2 --without-python -> 위의 라이브러리들을 컴파일시에 포함하지 않도록

--prefix=/Project/OpenCV/usr -> make install 을 입력하였을 경우 설치될 경로를 지정한다. prefix 옵션을 주지 않아도 되지만 그러면 파일복사와 심볼릭 링크를 만들어 주어야 하므로 왠만하면 써 주자~

3. /etc/ld.so.conf 에 prefix 에 준 경로를 포함해 준다
 /Project/OpenCV/usr/ 추가
[root@localhost opencv-1.0.0]#  ldconfig -v 

4. 환경 변수에 아래의 내용을 추가
export LD_LIBRARY_PATH = /Project/OpenCV/usr/lib 
export PKG_CONFIG_PATH =/Project/OpenCV/usr/lib/pkgconfig

5. Include 와 Library 의 경로 확인
[root@localhost opencv-1.0.0]# pkg-config --libs opencv
-L/Project/OpenCV/usr/lib -lcxcore -lcv -lhighgui -lcvaux 
[root@localhost opencv-1.0.0]# pkg-config --cflags opencv
-l /Project/OpenCV/usr/opencv/include/opencv

6. 예제 코드를 컴파일 해본다
[root@localhost opencv-1.0.0]# arm-linux-gcc -I/Project/OpenCV/arm/include/opencv -L/Project/OpenCV/arm/lib -lcxcore -lcv -lhighgui -lcvaux -lml ex1.c -o ex1


Reference : http://cafe.naver.com/opencv/1556
                 http://apollo.upc.es/humanoide/trac/wiki/OpenCv
Posted by frostguy
  1. GoAhead Webserver 다운로드

    [root@localhost Linux_device_driver]# wget http://data.goahead.com/Software/Webserver/2.1.8/webs218.tar.gz 
    --2008-11-29 22:52:32-- http://data.goahead.com/Software/Webserver/2.1.8/webs218.tar.gz
    Resolving data.goahead.com... 216.211.138.69
    Connecting to data.goahead.com|216.211.138.69|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 847876 (828K) [application/x-gzip]
    Saving to: `webs218.tar.gz' 
    100%[=======================================================================================>] 847,876 41.4K/s in 35s 
    2008-11-29 22:53:07 (23.8 KB/s) - `webs218.tar.gz' saved [847876/847876] 
    
  2. 압축 해제
    [root@localhost tools]# tar xvf webs218.tar.gz 
    

     

  3. Makefile 옵션 변경

    Embedded Board 에서 사용할 것이므로 Cross compile 을 하기 위하여 Makefile 에서 CC, AR 을 크로스 컴파일러로 변경해 준다.

    [root@localhost tools]# cd ws031202/LINUX/
    [root@localhost LINUX]# vim Makefile
    20 AR = arm-linux-ar
    21 CC = arm-linux-gcc
    
    155 .c.o:
    156 $(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<
    
  4. Source Code 수정
[root@localhost LINUX]# vim main.c 
//Home page 를 index.html 로 변경해주어야 한다 
277 if (*url == '\0' || gstrcmp(url, T("/")) == 0) {
278 websRedirect(wp, T("home.asp"));
279 return 1;
280 }
// 아래로 변경
277 if (*url == '\0' || gstrcmp(url, T("/")) == 0) {
278 websRedirect(wp, T("index.html"));
279 return 1;
280 }
5.Make 
[root@localhost LINUX]# make 
[root@localhost LINUX]# ls 
libwebs.a main. main.c main.o Makefile webs 
webs 라는 파일이 생성된 것을 확인 할 수 있다 
생성된 파일 복사 \
[root@localhost LINUX]# cp ./webs $NFS_DIR  
  • 소스 폴더의 최상위 폴더로 이동한 뒤

    [root@localhost ws031202]# cp -Rf ./web $NFS_DIR/ 
    [root@localhost ws031202]# cp $NFS_DIR/web/home.asp index.html 
    
  • Hosts 파일 수정

    Target Board 에서(Minicom)

    [root@WENDERS root]# vim /etc/hosts 
    1# Do not remove the following line, or various programs 
    2 # that require network functionality will fail.
    3 127.0.0.1 aoboard localhost.localdomain localhost 
    //라고 되어 있다 
    1# Do not remove the following line, or various programs 
    2 # that require network functionality will fail.
    #3 127.0.0.1 aoboard localhost.localdomain localhost 
    4. 192.168.1.50 hybus hybus.localdomain hybus
    //로 수정한다. 여기서 192.168.1.50 은 Target Board 의 IP 주소이다.
    

     

  • [root@WENDERS root]# ./webs & 
    

    실행 후 호스트의 Web Browser 에서 192.168.1.50 으로 접속해보면 정상적으로 Web Server 가 작동하는지 확인할 수 있다.

    1. Posted by frostguy

      Target Linux Kernel 설정

      Embedded Linux 의 커널 디렉토리에서 make menuconfig 을 실행한뒤

      Device Drivers -> Network device support -> Ethernet (10 or 100Mbit) -> DM9000 support 와 Ethernet 에 체크

      File System -> Network File systems -> NFS file system support, Provice NFSv3 client support, Root file system on NFS 에 체크

       

      Host PC 설정

      1. exports 설정
       [root@localhost ~]#vi /etc/exports
       /Project/Hybus/Filesystem/rootfs_gtk *(rw,no_root_squash)
      

      Rootfs_gtk 와 * 사이는 공백이 아닌 TAB을 사용한다

      rw,no_root_squash 에서 쉼표 사이에는 공백이 없다

      위와 같은 규칙을 꼭 지켜야만 NFS service 를 재시작할 때 오류가 발생하지 않는다!!!

       

      첫 번째 인자인 /Project/Hybus/Filesystem/rootfs_gtk 는 Target에서 마운트 해서 사용할 공유디렉토리

      두 번째 인자인 *은 access 할 수 있는 client를 지정한다
      *은 모든 사용자이고 사용자 지정을 하려면 ip를 셋팅

      세 번째 인자인 (rw,no_root_squash)는 접근 권한
      읽고/쓰기와 루트권한의 파일을 Access할 수 있는 옵션

       

      2. NFS 데몬을 구동한다

      [root@localhost ~]# service nfs restart
      

       

      지금까지의 셋팅은 NFS를 사용하기 위한 기본 환경설정이었으며

      지금부터 Target Board 의 Root file system 을 NFS 로 사용하기 위한 설정을 해 주어야 한다.

      Root file system 을 NFS 로 사용하면

      Target Board 의 파일 시스템을 사용하는게 아니라 HOST 의 한 지점을 마운트하여 사용하므로 용량의 제약에서 벗어날 수 있게 되며

      컴파일 -> tftp 혹은 minicom 으로의 전송이 아닌 컴파일 후 Host 의 NFS directory 로 복사를 하면 Target 에서 바로 사용할 수 있게 된다.

       

      [root@localhost ~]# source /Project/env/wenders_2.6.sh ; 환경 변수들의 경로가 설정된 Shell 파일 적용 
      [root@localhost ~]# cd $ARM_KDIR ; Target 의 Kernel directory 로 이동 
      [root@localhost linux]# vim arch/arm/configs/WENDERS_NFS_defconfig ; NFS Setting 
      96 # Boot options 
      197 # 
      198 CONFIG_ZBOOT_ROM_TEXT=0x0 
      199 CONFIG_ZBOOT_ROM_BSS=0x0 
      200 CONFIG_CMDLINE="root=/dev/nfs nfsroot=/Project/Hybus/Filesystem/rootfs_gtk ip=192.168.1.50:192.168.1.100::255.255.255.0::eth 1:on console=ttyS0,38400 rw mem=128M " 
      201 # CONFIG_XIP_KERNEL is not set 
      

      200번째 라인의 밑줄 친 경로가 우리가 Target 에서 마운트할 Host 의 NFS dir 경로이다.

      이 경로를 Host 에 맞도록 변경해주고 저장한 뒤  

      [root@localhost linux]# cd $ARM_KDIR 
      [root@localhost linux]# make WENDERS_NFS_defconfig 
      [root@localhost linux]# make 
      [root@localhost linux]# cp $ARM_KDIR/arch/arm/boot/zImage /tftpboot 
      -MINICOM- 
      <blob> tftp zImage 
      <blob> Nandwrite –z 0x80800000 0x00040000 0x00200000
      
      Posted by frostguy
      TAG nfs, pxa320tku

      1. ARM Linux의 Kernel 디렉토리로 간다
      예) /Project/Hybus/Kernel/linux
      2. drivers/video/logo/Kconfig 파일을 수정
      [root@localhost linux]# vim drivers/video/logo/Kconfig 
      21 config LOGO_XHYPER320TKU_CLUT224 
      22     bool "XHYPER320 TKU Linux logo"
      23     depends on LOGO 
      24     default y 
      25 아래 부분을 추가합니다. 
      26 config LOGO_SANGMIN_CLUT224 
      27     bool "Sangmin Boot logo"
      28     depends on LOGO 
      29     default y
      3. drivers/video/logo/Makefile 의 내용을 수정
      [root@localhost linux]# vim drivers/video/logo/Makefile 
      7 obj-$(CONFIG_LOGO_XHYPER320TKU_CLUT224) += logo_xhyper320_clut224.o  
      8 obj-$(CONFIG_LOGO_DEC_CLUT224)      += logo_dec_clut224.o  
      9 obj-$(CONFIG_LOGO_MAC_CLUT224)      += logo_mac_clut224.o 
      10 obj-$(CONFIG_LOGO_PARISC_CLUT224)   += logo_parisc_clut224.o 
      11 obj-$(CONFIG_LOGO_SGI_CLUT224)      += logo_sgi_clut224.o 
      12 obj-$(CONFIG_LOGO_SUN_CLUT224)      += logo_sun_clut224.o 
      13 obj-$(CONFIG_LOGO_SUPERH_MONO)      += logo_superh_mono.o 
      14 obj-$(CONFIG_LOGO_SUPERH_VGA16)     += logo_superh_vga16.o 
      15 obj-$(CONFIG_LOGO_SUPERH_CLUT224)   += logo_superh_clut224.o 
      16 obj-$(CONFIG_LOGO_M32R_CLUT224)     += logo_m32r_clut224.o 
      17 obj-$(CONFIG_LOGO_SANGMIN_CLUT224)  += logo_sangmin_clut224.o # 이부분을 추가합니다.
      

      4. drivers/video/logo/logo.c 의 내용을 수정
      [root@localhost linux]# vim drivers/video/logo/logo.c 
      34 extern const struct linux_logo logo_superh_mono; 
      35 extern const struct linux_logo logo_superh_vga16; 
      36 extern const struct linux_logo logo_superh_clut224; 
      37 extern const struct linux_logo logo_m32r_clut224; 
      38 extern const struct linux_logo logo_sangmin_clut224; // 이 부분을 추가! 
       
      72 #ifdef  CONFIG_LOGO_XHYPER320TKU_CLUT224 
      73         /* Linux logo on XHYPER320TKU */ 
      74         logo = &logo_xhyper320_clut224; 
      75 #endif 
      76 // 아래 부분을 추가합니다  
      77 #ifdef CONFIG_LOGO_SANGMIN_CLUT224 
      78         logo = &logo_sangmin_clut224; 
      79 #endif

      5. make Menuconfig 실행
       자기가 만든 Logo 에 체크 한 뒤 Save & Exit
      Device Drivers -> Grphics support -> Logo configuration -> Sangmin Boot Logo 체크


      6. 이미지 파일을 PPM 파일로 변환하기
      PXA320TKU 보드의 LCD 해상도는  800x480 이므로 우리가 변경할 이미지도 이에 맞게 리사이즈한다.
      [root@localhost Project]# jpegtopnm sangmin.jpg | pnmtoplainpnm > sangmin.ppm 
      jpegtopnm: WRITING PPM FILE
      [root@localhost Project]# pnmquant -fs 223 sangmin.ppm > sangmin_256.ppm
      pnmcolormap: making histogram...
      pnmcolormap: Scanning image 0pnmcolormap: 82333 colors so farpnmcolormap: 82333 colors foundpnmcolormap: choosing 223 colors...
      pnmremap: 223 colors found in colormap
      [root@localhost Project]# pnmnoraw sangmin_256.ppm > logo_sangmin_clut224.ppm
      [root@localhost Project]# cp logo_sangmin_clut224.ppm /Project/Hybus/Kernel/linux/drivers/video/logo/ # 만들어진 파일을 logo 디렉토리에 복사
      

      7. ppm 변환 툴이 없다면..
      [root@localhost linux]#yum install netpbm-progs 명령어로 netpbm tool 을 설치한다 
      


      8. zImage 컴파일
      [root@localhost linux]# make
      ............................................  
      CHK     include/linux/version.hmake[1]: include/asm-arm/mach-types.h is up to date.  
      CHK     include/linux/compile.h  
      CHK     usr/initramfs_list  
      Kernel: arch/arm/boot/Image is ready  
      Kernel: arch/arm/boot/zImage is ready  
      Building modules, stage 2.  
      MODPOST
      [root@localhost linux]# 

      9. 만들어진 zImage 를 /tftpboot 폴더로 복사
      [root@localhost linux]# cp arch/arm/boot/zImage /tftpboot/
      

      10. Minicom 에서 zImage 를 tftp 로 전송 후 Flash 로 Write 한다.
      blob>tftp zImage    -- 커널이미지를 tftp 를 통하여 전송   
      TFTPing zImage   
      *###############################################   
      ################################################   
      ###############################################   
      #################################### OK.   
      received 3749 blocks (1918780 bytes)   
      rx_size=0x1d473c   
      tftp_cmd: file 'zImage' loaded via tftp to address 0x80800000.   
        
      blob> nandwrite -z 0x80800000 0x00040000 0x00200000 -- Flash에 write   
      Write 0x200000 length data from RAM: 0x80800000 to flash: 0x40000   
      Write flash from 0x40000, length 0x200000   
      Erase flash from 0x40000, length 0x200000   
      ................Done   
      Write flash address is aligned to 0x40000, length is aligned to 0x200000   
      ................Done   
        
      blob> boot  -- 리눅스 부팅  
      
      
      Posted by frostguy

      최근에 달린 댓글

      글 보관함