Module 5: Installation of Development Tools ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부
주차별목표 툴체인 (Toolchain) 또는크로스컴파일러설치하기 타겟보드와의통신설정하기 기타시스템툴설치하기 2
툴체인 (Toolchain) 이란? 크로스컴파일러를설치해야하는이유 리눅스가설치된가상컴퓨터는 i386 계열의 CPU 를탑재하고있고, 타겟보드는 ARM 계열의 CPU 를탑재하고있음 타겟보드에필요한바이너리파일컴파일은호스트컴퓨터의리눅스에서수행해야하므로호스트컴퓨터에크로스컴파일러 (cross compiler) 설치필요 크로스컴파일러는종종툴체인 (toolchain) 이라고부르며혼용해서사용 3
툴체인 (Toolchain) 설치하기 -DVD 디스크이용 DVD 디스크를이용한툴체인설치 툴체인프로그램은업체에서제공하는개발용 DVD 에들어있음 VirtualBox 에서 DVD 장치연결 4
툴체인 (Toolchain) 설치하기 -DVD 디스크이용 DVD 디스크를이용한툴체인설치 DVD 디스크에들어있는타겟보드용파일 5
툴체인 (Toolchain) 설치하기 -DVD 디스크이용 DVD 디스크를이용한툴체인설치 호스트컴퓨터에삽입된 DVD 디스크가리눅스에마운트된상태 6
툴체인 (Toolchain) 설치하기 -DVD 디스크이용 DVD 디스크를이용한툴체인설치 터미널창에서툴체인설치파일이들어있는 toolchain 디렉토리로이동 tar 명령어를이용하여툴체인파일을 /opt 디렉토리로압축을풀면툴체인이설치됨 # cd /media/achro-210t-s1314/toolchain # tar xvfj arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 C /opt 7
툴체인 (Toolchain) 설치하기 -DVD 디스크이용 DVD 디스크를이용한툴체인설치 툴체인설치를위해압축파일풀기 8
툴체인 (Toolchain) 설치하기 -DVD 디스크이용 DVD 디스크를이용한툴체인설치 설치된툴체인에대한주요실행파일들은 /opt/toolchains/arm-2009q3/bin 디렉토리에들어있음 Achro-210T 타겟보드에필요한 C 프로그램을컴파일하기위한크로스컴파일러 : arm-linux-gcc 9
툴체인 (Toolchain) 설치하기 -ISO 파일이용 ISO 파일을이용한툴체인설치 타겟보드용 DVD 디스크의변환된 ISO 파일 10
툴체인 (Toolchain) 설치하기 -ISO 파일이용 ISO 파일을이용한툴체인설치 설치된툴체인파일확인 11
툴체인 (Toolchain) 설치하기 -ISO 파일이용 ISO 파일을이용한툴체인설치 VirtualBox 관리자에서공유폴더확인 12
툴체인 (Toolchain) 설치하기 -ISO 파일이용 ISO 파일을이용한툴체인설치 VirtualBox 관리자를통해공유된폴더마운트하기 13
툴체인 (Toolchain) 설치하기 -ISO 파일이용 ISO 파일을이용한툴체인설치 타겟보드용 ISO 파일마운트하기 14
툴체인 (Toolchain) 설치하기 -ISO 파일이용 ISO 파일을이용한툴체인설치 툴체인파일확인 15
툴체인 (Toolchain) 설치하기 -ISO 파일이용 ISO 파일을이용한툴체인설치 이후설치하는과정은 DVD 디스크로설치하는경우와동일 root@esp:~# cd /root/achro-210t/toolchain/ 툴체인설치파일이있는위치로이동 root@esp:~/achro-210t/toolchain# ls 파일목록확인 README.txt arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linuxgnu.tar.bz2 root@esp:~/achro-210t/toolchain# tar xvfj arm-2009q3-67-arm-nonelinux-gnueabi-i686-pc-linux-gnu.tar.bz2 C /opt 압축풀기 root@esp:~/achro-210t/toolchain# cd /opt/toolchains/arm-2009q3/bin 설치된툴체인의실행파일이있는위치로이동 root@esp:/opt/toolchains/arm-2009q3/bin# ls 설치파일 ( 크로스컴파일러 : arm-linux-gcc) 확인 arm-linux-addr2line arm-none-linux-gnueabi-addr2line arm-linux-ar arm-none-linux-gnueabi-ar ( 생략 ) 16
툴체인 (Toolchain) 설치하기 - 환경변수설정 환경변수설정 크로스컴파일러로사용되는명령어 ( 예 : arm-linux-gcc) 들이명령어라인상에서자동으로실행되도록환경변수 PATH 에크로스컴파일러가들어있는디렉토리등록 root@esp:~# vi /root/.bashrc 파일을연후 G 를눌러파일의맨뒤로이동한다 # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. # See /usr/share/doc/bash-doc/examples in the bash-doc package. if [ -f ~/.bash_aliases ]; then. ~/.bash_aliases fi # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). #if [ -f /etc/bash_completion ] &&! shopt -oq posix; then #. /etc/bash_completion #fi export PATH=$PATH:/opt/toolchains/arm-2009q3/bin 경로를추가한다. 17
툴체인 (Toolchain) 설치하기 - 환경변수설정 환경변수설정 환경변수업데이트및확인하기 root@esp:~# source /root/.bashrc root@esp:~# which arm-linux-gcc /opt/toolchains/arm-2009q3/bin/arm-linux-gcc root@esp:~# 18
툴체인 (Toolchain) 설치확인하기 툴체인설치확인 Test File 작성 root@esp:~# vi hello.c /* File Name : hello.c */ #include <stdio.h> int main(int argc, char **argv) { printf("welcome to the Embedded Class!!!\n"); return 0; } 19
툴체인 (Toolchain) 설치확인하기 툴체인설치확인 Test File 컴파일및확인 root@esp:~# mkdir /root/work 작업디렉토리생성 root@esp:~# cd /root/work 작업디렉토리로이동 root@esp:~/work# gcc hello.c o hello.i386 호스트용으로컴파일 root@esp:~/work# arm-linux-gcc hello.c o hello.arm 타겟용으로컴파일 root@esp:~/work#./hello.i386 호스트 (i386 머신 ) 에서정상적으로실행됨 Welcome to the Embedded Class!!! root@esp:~/work#./hello.arm ARM 용으로컴파일된이미지는호스트 (i386) 에서실행되지않음 bash:./hello.arm: 바이너리파일을실행할수없음 root@esp:~/work# file hello.i386 파일속성알아보기 hello.i386: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped root@esp:~/work# file hello.arm 파일속성알아보기 hello.arm: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped 20
기타시스템툴설치하기 - 리눅스 USB 개발라이브러리 리눅스 USB 개발라이브러리 호스트시스템에서사용하는 USB 드라이버패키지 (libusb-dev) 를우분투홈페이지에서다운로드 root@esp:~# apt-get install libusb-dev 설치화면 21
기타시스템툴설치하기 -USB 다운로드툴 USB 다운로드툴설치 Achro-210T 는 USB 를통해서부트로더, 커널등의이미지를다운로드받을수있음 일반적으로 USB 전송속도는이더넷에비해서빠르며사용이편리 root@esp:~# mkdir /root/download 이전에생성했다면건너뛰기 root@esp:~# cp /root/achro-210t/utilities/linux/smdk-usbdl/smdk-usbdl.tar.gz ~/download root@esp:~# cd ~/download download 디렉토리로이동 root@esp:~# tar xvfz smdk-usbdl.tar.gz 압축풀기 root@esp:~# cd dltools USB 개발툴설치디렉토리로이동 root@esp:~# ls dltool.c Makefile readme.txt smdk-usbdl root@esp:~# cp a smdk_usbdl /usr/bin 툴을시스템디렉토리 (/usr/bin) 으로복사 22
기타시스템툴설치하기 -bl1 툴 bl1 툴설치 부트로더중부팅에필요한부트로더 1(BL1) 을생성하는유틸리티만들기 root@esp:~# cp ~/achro-210t/utilities/linux/makechecksum/makechecksum.tar.gz ~/download 파일복사 root@esp:~# cd /root/download download 디렉토리로이동 root@esp:~# tar xvfz makechecksum.tar.gz 압축풀기 root@esp:~# cd makechecksum BL1 툴이들어있는디렉토리로이동 root@esp:~# cp a makechecksum /usr/bin BL1 툴을시스템디렉토리로복사 23
타겟보드와의통신설정하기 호스트컴퓨터와타겟보드간의통신 RS-232C 를이용한직렬통신 주로호스트컴퓨터에서타겟보드를모니터링하거나제어하는데사용됨 간단한파일을주고받는데사용됨 이더넷을이용한통신 리눅스기반의직렬통신프로그램 미니컴은호스트컴퓨터와 Achro-210T 타겟보드간에직렬통신을가능케해주는가상터미널소프트웨어 24
타겟보드와의통신설정하기 리눅스기반의직렬통신프로그램 미니컴설치 root@esp:~# apt-get install minicom 미니컴설치패키지목록을읽는중입니다... 완료의존성트리를만드는중입니다상태정보를읽는중입니다... 완료다음패키지를더설치할것입니다 : lrzsz 다음새패키지를설치할것입니다 : lrzsz minicom 0 개업그레이드, 2 개새로설치, 0 개지우기및 243 개업그레이드안함. 412k 바이트아카이브를받아야합니다. 이작업후 1,470k 바이트의디스크공간을더사용하게됩니다. 계속하시겠습니까 [Y/n]? y 받기 :1 http://kr.archive.ubuntu.com/ubuntu/ lucid/universe lrzsz 0.12.21-5 [99.9kB] ( 생략 ) 25
타겟보드와의통신설정하기 리눅스기반의직렬통신프로그램 미니컴에서사용할직렬통신환경설정 미니컴설정모드로실행 root@esp:~# minicom -s 미니컴설정모드 26
타겟보드와의통신설정하기 리눅스기반의직렬통신프로그램 미니컴환경설정선택창에서화살표키를사용하여 Serial port setup 을선택 27
타겟보드와의통신설정하기 리눅스기반의직렬통신프로그램 미니컴환경설정 컴퓨터의장치관리자화면에서 포트 (COM & LPT) 를확인 28
타겟보드와의통신설정하기 리눅스기반의직렬통신프로그램 미니컴환경설정 가상머신관리자의 [ 장치 ] - [USB 장치 ] 메뉴를보면포트에서확인한 USB-to-serial 케이블명을선택 해당장치는호스트컴퓨터가아닌가상머신에서실행되고있는리눅스에서사용하게됨 리눅스에서인식한장치파일을확인 root@esp:~# ls l /dev/ttyusb* 0 crw-rw---- 1 root dialout 188, 0 2014-03-15 16:52 /dev/ttyusb0 29
타겟보드와의통신설정하기 리눅스기반의직렬통신프로그램 미니컴환경설정 미니컴통신설정화면에서 A 를눌러직렬장치명을입력한후엔터키누름 미니컴통신설정화면에서 E 를눌러통신속도설정을진행 통신속도는 115200, Data bit 는 8, Stop bit 는 1 로, parity 는 NO 로설정 E 를눌러통신속도를맞추고 L, V, W 를차례로눌러나머지부분을맞추거나 Q 를눌러서한번에설정 미니컴통신설정화면에서 F 를눌러 Hardware Flow Control 을 No 로설정 미니컴통신설정화면에서 G 를눌러 Software Flow Control 을 No 로설정 설정이완료되면엔터키를눌러상위메뉴로이동 현재의설정값을상시이용할수있도록저장하기위해서화살표키를이용하여 Save setup as dfl 를선택 Enter 를눌러설정된값을저장후 Exit 을선택하여설정마침 30
타겟보드와의통신설정하기 리눅스기반의직렬통신프로그램 임베디드장치연결후전원을인가하여미니컴동작확인 31
타겟보드와의통신설정하기 NFS 실습 준비사항 LAN 크로스케이블 리눅스가설치된호스트컴퓨터 Achro-210T 실습보드 ( 이하타겟보드라는용어와혼용해서사용함 ) 호스트컴퓨터와타겟보드를 NFS 로연결하기위해서는네트워크상에서서로인지할수있는 IP 주소를할당 호스트컴퓨터와타겟보드의 IP 주소 32
타겟보드와의통신설정하기 NFS 실습 33 호스트컴퓨터 IP 주소설정 ( 명령어이용 ) # ifconfig eth1 192.168.10.100 호스트컴퓨터 IP주소설정 (Xwindow 이용 아래의내용으로설정 ) DEVICE : eth1 IP : 192.168.10.100 NETMASK : 255.255.255.0 타겟보드 IP 주소설정 Achro210T login: root login[99]: root login on 'ttysac0' root@achro210t:~# ifconfig eth0 192.168.10.110 root@achro210t:~# ifconfig eth0 eth0 Link encap:ethernet HWaddr BA:B0:BE:AD:00:00 inet addr:192.168.10.110 Bcast:192.168.10.255 Mask:255.255.255.0 ( 생략 )
타겟보드와의통신설정하기 NFS 실습 호스트컴퓨터에서 NFS 로공유할디렉토리를지정 root@esp:~# vi /etc/exports # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv4 /root *(rw,sync,no_root_squash,no_subtree_check) 설정파일입력후 NFS 데몬재시작 root@esp:~# service nfs-kernel-server restart 34
타겟보드와의통신설정하기 NFS 실습 타겟보드에서마운트지점생성및마운트하기 root@achro210t:~# mkdir /root/nfs root@achro210t:~# mount -t nfs o nolock 192.168.10.100:/root /root/nfs root@achro210t:~# df Filesystem Size Used Available Use% Mounted on /dev/root 250.4M 17.6M 219.8M 7% / tmpfs 192.5M 0 192.5M 0% /dev/shm tmpfs 192.5M 8.0K 192.5M 0% /tmp 192.168.10.100:/root 28.3G 8.0G 18.8G 30% /root/nfs root@achro210t:~# 이전단계에서생성한 Test File 실행해보기 root@achro210t:~# cd /root/nfs/work root@achro210t:~/nfs/work#./hello.arm 크로스컴파일된파일실행하기 Welcome to the Embedded Class!!! 35
타겟보드와의통신설정하기 NFS 실습 마운트해제하기 root@achro210t:~/nfs# cd root@achro210t:~# umount /root/nfs NFS 오류상황대처하기 호스트컴퓨터와타겟보드가네트워크케이블로잘연결되어있는지확인 호스트와타겟보드를직접연결하는경우는크로스네트워크케이블을사용하고있는지확인 호스트컴퓨터와타겟보드에네트워크주소가같은네트워크단의주소로할당되어있는지확인 가상 PC 를사용하는경우타겟보드에물리적으로연결되는네트워크포트가가상 PC 설정창에서정상적으로연결되어있는지확인한다. 호스트컴퓨터에서 NFS 서버가정상적으로실행되고있는지확인 호스트컴퓨터의방화벽 ( 보안수준 ) 을확인 NFS 연결시 RPM timeout 의메시지가출력되면서연결되지않는경우는클라이언트 PC 의보안때문 36