500 likes | 789 Views
개발 환경 구축. PXA255-Pro3. 구성품 확인 : JTAG Cable, Parallel Cable, Serial Cable, Ethernet Cross Cable, Power Cable, CD, Bluetooth. VMware 문제. 네트워크문제 “# vi / etc / sysconfig /network-scripts/ifcfg-eth0 ” 마지막줄에 check_link_down () { return 1; } 변경한 후 reboot. Contents. Cross 개발 환경 구축
E N D
PXA255-Pro3 • 구성품 확인:JTAG Cable, Parallel Cable, Serial Cable, Ethernet Cross Cable, Power Cable, CD, Bluetooth
VMware 문제 • 네트워크문제 • “# vi /etc/sysconfig/network-scripts/ifcfg-eth0” • 마지막줄에check_link_down () { return 1; } • 변경한 후 reboot
Contents • Cross 개발 환경 구축 • Cross 개발 환경이란 • Tool Chain 이란 • Tool Chain 설치하기 • 설치 점검 • Host와 Target간의 통신 환경 설정 • Minicom • TFTP • NFS
Cross 개발 환경 구축 • Cross 개발 환경이란? • 휴대폰과 같은 임베디드 기기의 개발은 프로그램을 실행하는 환경과 프로그램을 개발하는 환경이 다름 • 개발할 때와 실행할 때의 환경이 다른 경우를 “Cross 개발” 이라고 함 • Host System • 프로그램을 개발하는 PC 기반의 시스템 • Target System • Host에서 완성된 프로그램(어플리케이션)이 실행되는 시스템
Cross 개발 환경 구축 • Tool Chain 이란? • Target System의 소프트웨어 개발을 하기 위한 Host System의 Compile환경 • Intel 계열 시스템 기반에서 ARM계열 코드를 생성하기 위해서는 Cross Compile 환경이 필요 • 각종 Source를 Compile 하고 Build하여 실행 Binary를 생성하는데 필요한 각종 Utility 및 Library의 모음
Cross 개발 환경 구축 • Tool Chain 설치 (준비) • 설치 준비 • HUINS에서 제공한 CD와 Host • Host : linux가 설치되어 있는 PC • CD 안에 arm-cross-compiler.tar.bz2파일
Cross 개발 환경 구축 • Tool Chain 설치 (1) • HUINS에서 제공하는 CD를 삽입하고 CD-ROM을 mount한다. • CD를 넣으면 자동으로 mount가 됨. • mount가 되지 않았을 경우 아래와 같이 실행 Read only option CD-ROM device name CD-ROM 장치를 /mnt/cdrom 디렉토리에 mount
Cross 개발 환경 구축 • Tool Chain 설치 (2) • cd 명령을 이용하여 mount 된 CD-ROM 으로 이동한다. • ls 명령을 치면 CD의 내용을 볼 수 있음 Tool Chain file
Cross 개발 환경 구축 • Tool Chain 설치 (3) • cp 명령을 이용하여 Tool Chain 파일을 /usr/local/으로 copy • ls 명령으로 copy가 잘 되어 있는지 확인 후 /usr/local/ 디렉토리로 이동
Cross 개발 환경 구축 • Tool Chain 설치 (4) • tar 명령을 이용하여 압축을 풀면 Tool Chain은 자동으로 설치됨. • 설치 후 ls 명령으로 잘 설치 되었는지 확인 j 옵션은 bunzip2의 확장자를 가진 압출 파일을 풀 때 사용 Bunzip2로 압축된 파일은 bz2라는 확장자를 가진다.
Cross 개발 환경 구축 • Tool Chain 설치 (5) • 다음으로 path를 잡아주어야 함. • root폴더에 있는 .bashrc 을 vi로 open.
Cross 개발 환경 구축 • Tool Chain 설치 (6) • PATH 를 아래와 같이 설정해줌 /usr/local/arm-linux/bin에 tool chain에서 설치한 여러 compiler가 있음
Cross 개발 환경 구축 • Tool Chain 설치 (7) • 수정된 .bashrc는 source 명령을 사용하여 적용됨
Cross 개발 환경 구축 • Tool Chain 설치 (8) • hello.c 라는 Test file을 만듦
Cross 개발 환경 구축 • Tool Chain 설치 (9) • 설치된 arm용 cross compiler를 이용하여 compile한다. • hello라는 object 파일이 만들어졌는지 확인한다. arm용 cross compiler Hello라는 object file이 생성
Cross 개발 환경 구축 • Tool Chain 설치 (10) • 만들어진 hello object 파일을 실행시켜본다. • 아래 그림처럼 error가 발생하면 설치 성공. • file이라는 명령어를 이용하여 file의 속성을 확인 ARM용 object 파일 의미
Host와 Target간의 통신 • Serial Cable을 이용한통신 Minicom을 이용하여 serial 통신으로hello라는 파일 전송
Host와 Target간의 통신 • Minicom을 이용한 통신 준비 • Host와 Target을 minicom으로 연결하기 위해 아래와 같은 환경 필요 • Serial Cross Cable(9 pins) 1EA • Host: Linux가 설치되어 있는 PC • Target: PXA255-pro 실습보드 • Cross cable의 한쪽은 Host의 COM1에 연결하고고 다른 한쪽은 Target의 COM1 연결한다.
Host와 Target간의 통신 • Minicom – 실행 (1) • 만들어진 hello object 파일을 target에 download하기 위해 minicom이라는 emulator를 이용 • Minicom을 실행하기 전 통신 포트 설정을 해야 함.
Host와 Target간의 통신 • Minicom – 실행 (2) • “Serial port setup”으로 커서를 옮긴 후 Enter를 입력
Host와 Target간의 통신 • Minicom – 실행(3) • COM1은 ttyS0, COM2는 ttyS1로 Linux에서는 표시함. • A를 눌려서 Serial jack이 연결된 포트를 설정. • Host와 Target의 Baud rate는 115200 • Hardware Flow Control은 NO로 설정
Host와 Target간의 통신 • Minicom – 실행(4) • 설정을 default로 저장하고 나옴.
Host와 Target간의 통신 • Minicom – 실행(5) • 설정을 마친 후 target 보드의 전원을 on 시키면 아래와 같은 화면을 보게 됨. Boot loader loading Kernel loading ramdisk loading Kernel uncompressing
Host와 Target간의 통신 • Minicom – 실행(6) • Root를 입력 후 login한다.
Host와 Target간의 통신 • Minicom – 실행(7) • tool chain 설치에서 만들었던 hello라는 object 파일을 host에서 target으로 download하려고 한다. • CTRL과 A를 동시에 누른 후 Z키를 입력하면 아래와 같은 화면이 나옴.
Host와 Target간의 통신 • Minicom – 실행(8) • S를 입력 후 Zmodem을 선택하면 아래와 같은 화면이 나옴.
Host와 Target간의 통신 • Minicom – 실행(9) • Tool chain 설치 시에 만들었던 hello 파일을 선택한 뒤에 enter를 치면 파일이 host로부터 target으로 download됨
Host와 Target간의 통신 • Minicom – 실행(10) • 파일 전송이 성공하면 위와 같은 화면 나옴.
Host와 Target간의 통신 • Minicom – 실행(11) • ls명령을 이용하여 hello 파일이 전송되었는지 확인
Host와 Target간의 통신 • Minicom – 실행(12) • hello 파일을 실행
Host와 Target간의 통신 • Lan Cable을 이용한 통신 Ethernet을 사용한 TFTP, NFS 통신
Host와 Target간의 통신 • TFTP? • TCP 를 사용하여 신뢰성 있는 file 전송을 제공하는 ftp와 달리 UDP를 사용하여 file을 전송하는 protocol • Data 의 전송 중에 오류가 날 확률이 극히 적은 근거리에서 빠르게 file을 전송 받고자 할 경우에 사용 • Embedded system 개발 중 개발한 kernel image나 ramdisk를 boot loader를 통해 target board로 전송하기 위해 많이 사용 • Linux용 TFTP 프로그램 • www.rpmfind.net 에서 tftp로 검색하면 해당 rpm을 받을 수 있음 • 또는 www.huins.com > 고객 지원 >download >임베디드 시스템 게시판에서 받을 수 있음
Host와 Target간의 통신 • BLOB 으로 부팅 (@Target Board) • minicom을 실행 하고 target board에 전원을 인가한다. • BLOB command mode로 target system booting
Host와 Target간의 통신 • BLOB 으로 부팅 (@Target Board) • boot> status • 현재 PXA255-PRO3 보드의 상태를 나타낸다. • boot> set mac_addr • mac address: 01:23:45:67:89:ab • boot> set ip_addr • Newhostip: 192.168.1.200 • Newtargetip: 192.168.1.100
Host와 Target간의 통신 • 설치 확인 (@Host PC) • TFTP rpm을 설치하기 전에 host에 이미 설치가 되어있나 확인 • 설치가 되어 있으면 설치과정 생략 • % rpm –qa | greptftp • 설치 • Host에 설치가 되어있지 않으면 다음과 같이 설치 • % rpm –ivh tftp-0.32-4.i386.rpm tftp-server-0.32-4.i386.rpm
Host와 Target간의 통신 • TFTP Server 구동 (@Host PC) • TFTP Server는 xinetd daemon에서 관리 • TFTP Server를 구동시키기 위해 /etc/xinetd.d/tftp파일을 다음과 같이 설정
Host와 Target간의 통신 • TFTP Server 구동 (@Host PC) • TFTP 설정 파일을 편집한 후에는 xinet daemon에 적용 시키기 위해 xinet daemon을 재 시작 해주어야 함 • # /etc/init.d/xinetd restart • TFTP가 현재 제대로 동작하고 있는가 확인 • # netstat –a | greptftp • tftp가 포함된 행이 보인다면 제대로 동작하고 있는 것
Host와 Target간의 통신 • TFTP Server 구동 (@Host PC) • 파일을 전송할 때 사용하는 디렉토리를 만듦 • # mkdir /tftpboot • CD에서 Kernel Image와 Ramdisk파일을 복사 • # cp /mnt/cdrom/Image/ramdisk_pro3.gz /tftpboot/ • # cp /mnt/cdrom/Image/zImage /tftpboot • tftpboot디렉토리로 이동하여 파일 확인 • # cd /tftpboot • # ls
Host와 Target간의 통신 • Image Download (@Target Board) • Kernel Image Download • boot> tftpzImage kernel • tftp를 이용한 Kernel Image Download • boot> flash kernel • Flash Memory에 kernel을 저장하는 명령 • Ramdisk Image Download • boot> tftp ramdisk_pro3.gz ramdisk • boot> flash ramdisk
Host와 Target간의 통신 • NFS(Network File System)란? • NFS는 파일 시스템의 공유 서버 자원의 공유를 위해 SUN에서 개발 • Server의 자원을 Client가 자신의 자원을 사용하는 것처럼 제공하는 서비스
Host와 Target간의 통신 • NFS– nfs용 공유 disk 만들기 (1) • 공유 할 Directory를 export시켜야 한다.
Host와 Target간의 통신 • NFS – nfs용 공유 disk 만들기(2) • 디렉토리를export 할 수 있도록 vi를 이용하여 /etc/exports 파일을 다음과 같이 편집 Read/ write 암호 인증을 하지 않음
Host와 Target간의 통신 • NFS – nfs용 공유 disk 만들기(3) • nfs데몬을 재 시작한다. • 또는 다음과 같은 명령을 사용해도 된다. • # service nfs restart
Host와 Target간의 통신 • NFS – nfs용 공유 disk 만들기(4) • NFS로 mount시킬 target의 디렉토리를 만듦 • NFS server와 target의 디렉토리를nfs파일 시스템 형으로 mount 시킴 Host IP address
Host와 Target간의 통신 • NFS – nfs용 공유 disk 만들기(5) • 설치가 끝나면 Host의 /home과 Target의 /mnt/nfs는 같은 디렉토리의 의미를 가지게 됨 • Host의 hello라는 파일을 만들면 Target의 /mnt/nfs에서 이 file을 ls명령어로 확인할 수 있음
Host와 Target간의 통신 • NFS – nfs용 공유 disk 만들기(6) • umount명령을 이용하여 mount 해제