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