Chapter. 3 Development Environment Settings Professor. Jaeheung, Lee
목차 개발환경 JTAG Bootp TFTP NFS 1
개발환경 기본구성 JTAG RS-232 Ethernet Host System Target System 2
개발환경 개발환경구성요소 Host System Target System을개발하기위한환경을제공하는시스템교차개발환경제공 Cross Compiler, Monitor, Debugger 등을제공 ToolChain을이용한코드생성 JTAG(Jflash-Xscale) 을운용하기위한환경제공 Boot Loader용터미널환경제공 Target System or Device 개발하고자하는 Embedded System Board 3
개발환경 개발환경구성요소 cont d Backend Host System 과 Target System 간통신을위한매개체 Serial Port (RS-232) : Minicom( 터미널 ) 을통해 Target System 과통신 Parallel Port (JTAG) : JTAG 을통해 Flash Memory 에 Fusing 할수있는통신채널제공 Ethernet : zimage, root file system image 등을 Host System 에서 Target System 으로다운로딩할수있는통신채널제공 Target Terminal Target System의상황을 Host Terminal에표시해주는프로그램 Bootload의상황을모니터링 Linux가적재된후에 Target System의 Console로사용 4
개발환경 Target System HBE-EMPOS II H/W 사양 5
개발환경 Target System HBE-EMPOS II S/W 사양 6
개발환경 Target System 구성품확인 Power Cable Serial Cable LAN Cable JTAG Cable 7
개발환경 Target System 을위한 Terminal 환경 Windows Hyper Terminal 사용 Linux - Minicom Minicom (Target 용 ) JTAG RS-232 Host 용 Terminal Ethernet Host System Target System 8
개발환경 Minicom 실행및설정 Host System 에서 Minicom 실행 # minicom -s Serial Port Setup 항목선택 9
개발환경 Minicom 실행및설정 cont d A : COM 포트설정 /dev/ttys0 : COM1, /dev/ttys1 : COM2 시스템에따라달라질수있음 E : Baudrate, Data, Bits 설정 Baudrate : 115200, Data : 8, Parity : NO, Stop : 1 설정이끝나면 Enter 키를누르고상위메뉴로빠져나옴 10
개발환경 Minicom 실행및설정 cont d 모든설정이완료되었으면 Save setup as dfl 을선택 저장이완료되면 Exit 항목을선택하여종료 이후 Minicom 프로그램이실행되는 Host System 은 Target System 의 Console 역할을하게됨 11
JTAG JTAG 이란? Joint Test Access Group JTAG 프로세서의상태와관계없이디바이스의모든외부핀을구동시키거나값을읽어들일수있는기능을제공 디바이스내에서모든외부와의연결점을가로챔 각각의셀은시리얼 Shift-Register(Boundary-Scan Register) 를형성하기위해서로연결 전체적인인터페이스는 5 개의핀 (TDI, TMS, TCK, ntrst, TDO) 에의해제어 회로의배선과소자의전기적연결상태 TEST 디바이스간의연결상태 TEST S/W 입장에서 Flash Memory Fusing 용도로많이사용 12
JTAG Boundary-Scan Test Interface JTAG Diagram CELL 회로의배선과소자의전기적연결상태 Test Digital Chip 디바이스간의연결상태 Test Registers TAP Flash Memory Fusing 13
JTAG Boundary-Scan Test Interface JTAG Diagram CPU inb(base_address+1) outb(base_address+n, DATA) n:0,2 Parallel Port logic Address Decoder BASE_ADDRESS 278 378 3bc BASE_ADDRESS : Data Register BASE_ADDRESS + 2 : Control Register BASE_ADDRESS + 1 : Status Register C1 S3 C2 C3 C0 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 S6 S7 S5 S4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Address Line : Data Line : Control Line : Decoder : Base address~+2 안의주소에만반응 Register : data, control, status 의세가지가있음 Data register Control register Status register 14
JTAG Jflash JTAG Flash Programming Utility PATH 설정 # mkdir /usr/local/jtag # mount /mnt/cdrom # cd /mnt/cdrom/tools/jtag # cp Jflash-Xscale.tar.gz /usr/local/jtag # cd /usr/local/jtag # tar xvfz Jflash-Xscale.tar.gz # cd Jflash-Xscale # make # vi ~/.bash_profile export PATH=$PATH:/usr/loca/jtag/Jflash-Xscale:$PATH # source ~/.bash_profile 15
Bootp Bootp TCP/IP 상에서자동부팅을위한최초의표준 디스크장치가없는클라이언트를위한프로토콜 UDP 와 TFTP 프로토콜사용 Host 와 Target 보드간접속을연결하고각종정보들을가져오기위한준비절차라고할수있음 나중에 TFTP 를통해데이터전송이이루어짐 Bootp 설정시필요한데몬 : inetd, bootpd RS-232 Ethernet 필요한 Configuration File : inetd.conf, bootptab, hosts, services Host System Target System 16
Bootp Bootp protocol Bootp Request : Target board 가 host 에게 IP 를요구 IP 요청 packet 을생성하여호스트에전송 Bootp Reply : Host 는 Target 보드의 IP 주소를전달 IP 요청 Packet을 inetd가수신 inetd는 bootpd에게 IP요청 Packet을넘김 IP 응답 Packet을 bootpd는 bootptab을참조하여 IP응답 Packet을전달 Bootp Reply Bootp Request Host System Target System 17
Bootp Bootp Packet Format 300 bytes 0 7 8 15 16 23 24 31bit Opcode 1=Request,2=Rep Number of seconds Hardware type 1 = Ethernet Transaction ID Client IP address Your IP address Server IP address Gageway IP address Client hardware address (16bytes) Server Hostname (64bytes) Boot filename (128bytes) Vendor-specific information (64bytes) bootp 메시지는고정길이필드 ( 총 300 바이트 ) 사용 : Request 와 Reply 가같은양식을사용 OP-code : message type 1=Request, 2=Reply Hardware type : 1= 10 Base Ethernet Hardware address Length(6=ethernet) Unused Hop count 18
Bootp Bootp Packet Format cont d Hardware address Length : 6 = 10 Base Ethernet HOP count : 클라이언트에서 0 으로 Setting, Gateway 에의해임의로사용 Transaction ID : 32bit 정수 (Random), client 가 set, server 가 return client 는 Request 와 Reply 가같은지를확인 Number of Second : Client 가 bootstrap 을시도한시간을 set Secondary Server 는이시간을참고하여일정시간이경과할때까지응답하지않음 Client IP Address : Client 가자기자신의 IP 를알면넣고모르면 0.0.0.0 Your IP Address : Client IP 주소가 0 이면 server 가 IP 주소를채움 Server IP Address : server 에의해채워짐 Gateway IP Address : Proxy server 를사용할경우 Proxy server 의라우터 IP Address 를보충 19
Bootp Bootp Packet Format cont d Client Hardware Address : Client 는반드시 Setting, Ethernet Mac Address 와동일 Server Host Name : Client 는 Option 으로원하는서버지정가능만일 0 이면임의서버, 0 이아니면특정서버지정 Boot Filename : client 는일반적인 Boot Filename 기술서버가응답시 (Reply) Boot file 의실제경로제공 Vendor-specific information : bootp 의확장과추가적인 Parameter 에사용 Bootp Reply Port 67, IP 0.0.0.0 Bootp Request Port 68, IP 211.104.101.228 Host System Target System 20
Bootp Bootpd & inetd 모든 TCP/IP 통신의시작은 inetd 슈퍼서버를통해관리 Bootp Request : Target System이 Host System에게 IP주소를요구 Bootp Reply : Host system은 Target System의 IP주소를전달 bootpd inetd tftpd telnetd ftpd inetd : TCP/IP 를통하여통신을하고자할때이를관리하는데몬. TCP/IP 와관련된프로토콜은항상 inetd 로부터각각의해당되는 TCP/IP 관련데몬을호출한다. 21
Bootp Bootp 와관련된데몬 Bootpd bootpd 프로세스는자신의구성파일 (bootptab) 을읽어서해당 MAC address 를가진항목이있는가를확인하고, 항목이존재한다면응답패킷을구성 이때몇가지의정보가 Host System 으로부터 Target System 으로전송되며그목록은다음과같음 sm : Local LAN 의서브넷마스크 hd : host directory ht : LAN 의하드웨어형태 ha : Target System 의이더넷 MAC Address 22
Bootp Bootp 와관련된데몬 Inetd inetd 프로세스는 Target System 에서보낸패킷을검출하여 bootpd 데몬을요청하면해당 bootpd 데몬이호출되도록해주는역할 inetd.conf 에설정된데몬들 (tftp, bootp, telnet, ftp 등 ) 을관리 대부분의네트워크서버들은 Request 를기다리며대기하고있는서브프로세스들을가지고있지않음 그래서이러한작업은 inetd 이대신수행하는데, inetd 은 inetd.conf 에설정된모든네트워크포트들을듣고 (listen) 있다가 Request 가오면해당하는서버를가동하는역할을수행 23
Bootp Bootp 설치확인및미설치시설치 # rpm qa grep bootp # mount /mnt/cdrom # cd /mnt/cdrom/tools/bootp # rpm ivh bootp-2.4.3-7.i386.rpm 리눅스패키지명령어 rpm qa ( 데몬이름 ) : 설치확인 rpm ivh ( 파일이름 ) : 설치과정을확인하면서설치 rpm e ( 파일이름 ) : 기존의설치된데몬삭제 주의 : 서로의존성이있는데몬들은최하위의존데몬부터삭제 24
Bootp Bootp 환경설정파일 inetd.conf # cd /etc # vi inetd.conf tftp dgram udp wait /usr/sbin/in.tftpd bootps dgram udp wait /usr/sbin/tcpd Hosts # cd /etc # vi hosts 127.0.0.1 localhost.localdomain localhost 211.104.101.227 linux 192.168.0.7 EMPOS hosts 파일은사용하고있는 Target System의 IP주소를포함 host의이름은 bootptab에있는 host 이름과같음 25
Bootp Bootp 환경설정파일 services # cd /etc # vi services bootps 67/tcp # bootp server tftp 69/udp # tftp server services 파일은사용하고있는네트워크서버들의데이터방식과포트를설정 26
Bootp Bootp 환경설정파일 bootptab # cd /etc # vi bootptab.default:/ hd=/tftpboot:bf=null:\ ip=192.168.0.7:\ sm=255.255.255.0 Empos:ht=1:ha=0x000BA8030158:tc=.default hd : Host Directory sm : 서브넷마스크 ha : Ethernet 의하드웨어주소를포함 0x000BA8030158 : Target System Ethernet MAC Address 27
Bootp Bootp 환경설정파일 bootp # cd /etc/xinet.d # vi bootp service bootps { disable = no flags = REUSE NAMEINARGS socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/bootpd server_args = -s } # service xinetd restart 28
TFTP Server 로부터필요한 File 을읽어와자신의 Memory 에 Load 시킬때필요한 Protocol 장점 단점 Flash Memory 에맞도록설계된단순한 Protocol Disk 없는 System 의가동프로세서에이용 UDP 를이용하여 Client 와 Server 사이의통신 Booting 에필요한간단한 Program 과 BOOTP, RARP, TFTP 만탑재한시스템에서많이이용되며펌웨어자동업그레이드에이용가능 시스템이단순하고간단함 어떤형태의전달서비스상에서도동작이가능 시스템가격이저렴 정보보호기능이없음 Data 에대한보장성이없음 29
TFTP TFTP 패킷형식 IP Datagram UDP Datagram IP Header UDP Header TFTP Message 20bytes 8bytes =<512bytes 512 bytes의 Data Block을전송각 Block은아주간단한 4bytes 헤더와연결 Block의전송번호는항상 1부터시작 ASCII 또는 Binary 전송을지원 Remote File을 Read하거나 Write할때사용 No Checksum 높은처리율보다는간단함을강조한프로토콜 30
TFTP TFTP 패킷형식 FTP TCP IP TFTP UDP Message Format IP Header UDP Header 20 8 IP datagram UDP datagram TFTP message OP Code RRQ WRQ Data ACK Error Value 1 2 3 4 5 OP Code(1, 2) Data (3) ACK (4) Error (5) File name Block 번호 Block 번호 2 2 Error 번호 0 mode 0 2 n 1 n 1 전송 Data 2 2 0-512 Error Message 2 2 n 1 0 31
TFTP TFTP 설치확인및미설치시설치 # rpm qa grep tftp # mount /mnt/cdrom # cd /mnt/cdrom/tools/tftp # rpm ivh tftp-server-0.29-3.i386.rpm 32
TFTP TFTP 환경설정 # cd /etc/xinet.d # vi tftp service bootps { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/bootpd server_args = -s } # service xinetd restart 33
TFTP TFTP 를이용한 Bootloader Downloading TFTP 이용시해당파일을 /tftpboot 디렉토리에복사 # cd /home/working/empos_boot-20031022/ # cp empos_boot( 부트로더파일 ) /tftpboot TFTP 명령을이용하여 Target System에 Bootloader 다운로딩 Bootloader의 flash 명령을이용하여메모리에 Write # tftp empos_boot booter # flash booter 34
NFS NFS 란? SUN 사가개발한 RPC(Remote Procedure Call) 기반시스템 Remote Computer 의파일을마치자신의컴퓨터에있는것처럼이용 Server/Client 기반응용프로그램 File System 이존재하지않는 Client 시스템에서원격의 Host 시스템에서설정된일부디렉터리를이용 임베디드시스템개발시많이이용됨 /root /bin /lib /etc /bin /lib /sbin /root /bin /lib /sbin NFS Server /net /kernel /arch /mm /driver /exam NFS Client /mm /driver /exam Host File System 35
NFS NFS 구성도 User Process local file access NFS client NFS server local file access Kernel TCP/UDP IP client kernel TCP/UDP IP UDP port 2049 server kernel local disk local disk 36
NFS 장점 개발호스트에서작업한것을 NFS 시스템을이용하여 Target Board 의리눅스상에서 mount 시켜사용하면 download 할필요가없음 개발호스트상의파일이 Target Board 의리눅스파일시스템위에서접근이가능하고실행이가능 램디스크상에서올리기에너무큰파일도 NFS 상에서는호스트의기억용량에의존하기때문에쉽게처리가능 단점 특수파일은 NFS 에연결된디렉토리에만들수없음. 예 : 장치파일 읽고쓰는속도가빠른파일로는사용이곤란. 예 : 멀티미디어파일 37
NFS TFTP/NFS 를이용한부팅시나리오 Target RAM RAM Host 1.TFTP request Flash memory 부트로더 4. 커널분기 5. 분기및커널압축해제 Linux 커널 2.TFTP reply ( 압축커널만 ) 3. 압축커널다운로드 압축커널이미지 6. NFS Root FS 마운트 Host Hard Disk (File System) 38
NFS NFS 서버설정 /etc/hosts 파일의내용에추가할사항 타겟보드에할당할 IP <tab> 이름 /etc/exports 파일의내용에추가할사항 /home/nfs <tab> 보드 IP[ 또는 *](rw,no_root_squash) 예 ) /home/nfs *(rw, no_root_squash, no_all_squash) 또는 /home/nfs 203.247.100.101(rw, no_root_squash, no_all_squash) /usr/sbin/lokkit security level을 high로둔상태에서 Customize를선택 (* 표시 ) eth0를선택 (* 표시 ) 후종료 39
NFS NFS 서버측설정 NFS 디렉토리생성및권한설정 # mkdir /home/nfs # chmod 777 nfs # chgrp nobody nfs NFS 환경설정 # vi /etc/exports /home/nfs TS_IP(rw,no_root_squash,no_all_squash) # service nfs restart 혹은 /etc/rc.d/init.d/nfs restart TS_IP : Target System IP 괄호안문장들은띄어쓰기가없어야함 40
NFS NFS 파일공유 Test Host System # cd /home/nfs # vi nfs_testfile.c #include <stdio.h> # arm-linux-gcc o nfs_testfile nfs_testfile.c Target System # mkdir /mnt/nfs # mount t nfs HOST_IP:/home/nfs /mnt/nfs # cd /mnt/nfs # ls /mnt/nfs #./nfs_testfile 41