200 likes | 596 Views
임베디드 시스템 소개 -3 - 교차개발환경. Target. Host. Application. Debug Agent. Target Server. SDK ( Software Development kit). GUI. Library. Driver. Application. Core OS. Simulation Environment. Kernel. Hardware. 임베디드 리눅스 개발환경 개념도. 교차개발환경 (1). 교차개발환경 (Cross-Development Environment) 이란 ?
E N D
Target Host Application Debug Agent Target Server SDK ( Software Development kit) GUI Library Driver Application Core OS Simulation Environment Kernel Hardware 임베디드 리눅스 개발환경 개념도
교차개발환경(1) • 교차개발환경(Cross-Development Environment) 이란? • 실제 S/W가 수행될 시스템과 개발하는 시스템이 다른 개발 환경 • 교차개발환경 구성요소 • Target 머신 , Host 머신 • 시리얼 케이블, 이더넷 케이블 • 터미널
교차개발환경(2) • Target 머신 • 개발 대상인 보드나 H/W로 독립된 동작이 되지 않는 머신 • 독립된 동작을 위해서는 커널, 디바이스 드라이버, 응용 프로그램 등이 Host 머신을 통해서 개발된 뒤에 다운로드나 이식이 되어야 함 예) LETOK-850 보드 • Host 머신 • H/W 시스템을 제작한 후, 해당 시스템에서 동작할 S/W를 개발하는 시스템 • 개발된 H/W시스템에 맞는 최적화된 시스템을 설치하여 함 • 교차 컴파일러 (Cross Compiler)- Host 머신에서 동작하나 Target 머신 CPU 의존적인 코드 생성 • 교차 디버거 (Cross Debugger)- Target 머신에서 수행중인 프로그램을 Host 머신에서 관찰, 디버깅이 가능하 게 해줌
교차개발환경(3) • 시리얼 케이블 (Serial Cable) • Host 머신과 Target 머신의 정보 교환 및 상태 파악을 위한 연결에 이용 • Target 머신에 없는 콘솔을 Host 머신을 통해 사용할 수 있게 함 • Host 머신을 이용하여 Target 머신에 명령을 내려보낼 수 있게 함 • Target 머신의 상태와 명령 수행 결과를 Host 머신을 통해 볼 수 있게 함 • 이더넷 케이블 (Ethernet Cable) • Host 머신과 Target 머신의 정보 교환 및 상태 파악을 위한 연결에 이용 • TFTP 등과 같은 프로토콜을 이용하여 고속의 데이터 통신이 가능하게 함 • 커널이나 파일 시스템 이미지 등 대량의 데이터를 내려보내는데 사용 • telnet 등과 같은 응용 프로그램을 이용하여 원격에서 Target 머신을 부팅하거나 이용할 때 사용 • 터미널 (Terminal) • Target 머신의 쉘이나 동작 상태를 보여 줌 • Host 머신을 통해 사용자가 입력한 사항을 보여 줌
Minicom/Hyper-Terminal 설정 • minicom을 환경 설정 모드로 실행 • $minicom -s • 메뉴가 뜨면 “Serial port setup”항목을 선택 • 새로운 메뉴가 뜨면 “A-Serial Device”를 선택하여 직렬 케이블이 연결된 포트를 선택 • /dev/ttyS0 또는 /dev/ttyS1 • “E-bps/Par/Bits”항목을 선택 • Baud Rate(bps) : 57600 bps • Parity : None • Data Bit : 8 bits • Stop Bits : 1 bit • Flow Control : DTR/DSR, RTS/CTS, XON/XOFF, None 중 하나 선택 • 설정이 끝나면 “enter”키를 누른 뒤 ESC를 눌러 저장을 하고 나옴 • Hyper-terminal의 경우 포트 설정에서 위의 설정대로 설정하면 됨
/bin /bin /bin /lib /lib /lib /etc /sbin /sbin /root /root … … … /net /mm NFS Client /mm NFS Server /kernel /driver /driver /arch /exam /exam Host File System NFS(Network File System) • NFS 란? • SUN Microsystem사가 개발한 RPC(Remote Procedure Call) 기반 시스템 • 원격지의 컴퓨터에 있는 파일을 마치 자신의 컴퓨터에 있는 것처럼 이용 • Server/Client 기반 응용 프로그램 • FS이 존재하지 않는 Client 시스템에서 원격의 Host 시스템에서 설정된 일부 디렉터리를 이용 • 임베디드 시스템 개발 시 많이 이용됨
user process local file access NFS server local file access NFS client kernel UDP port 2049 TCP/UDP IP TCP/UDP IP client kernel server kernel local disk local disk NFS(Network File System)(2) • NFS Client/Server 구성도
Target RAM RAM 5. 분기 및 커널압축 해제 Flash memory Linux 커널 1.TFTP request 4.커널분기 Host 부트 로더 압축커널 이미지 6. NFS Root FS 마운트 3.압축커널 다운로드 2.TFTP reply (압축커널만) Host Hard Disk (File System) TFTP/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를 선택(* 표시)후 종료
NFS 서버 설정(2) • % /usr/sbin/ntsysv • 여러 항목 리스트 중에서 nfs를 찾아서 선택(* 표시) • %/etc/init.d/nfs start • 위와 같이 나오면 NFS 설정은 완료되었음
TFTP • Server로 부터 필요한 File을 읽어와 자신의 Memory에 Load 시킬 때 필요한 Protocol • Flash Memory에 맞도록 설계된 단순한 Protocol • Disk 없는 System의 가동 프로세서에 이용 • UDP를 이용하여 Client와 Server 사이의 통신 • Booting에 필요한 간단한 Program과 BOOTP, RARP, TFTP만 탑재한 시스템에서 많이 이용되며 펌웨어 자동 업그레이드에 이용 가능 • Disk 없는 시스템의 초기 가동 시 IP주소를 설정 • 장점 • 시스템이 단순하고 간단함 • 어떤 형태의 전달 서비스상에서도 동작이 가능 • 시스템 가격이 저렴 • 단점 • 정보보호 기능이 없음 • Data에 대한 보장성이 없음
FTP TFTP TCP UDP IP Message Format IP datagram UDP datagram IP Header UDP Header TFTP message 20 8 OP Code(1, 2) File name 0 mode 0 OP Code RRQ WRQ Data ACK Error Value 1 2 3 4 5 2 n 1 n 1 Data (3) Block 번호 전송 Data 2 2 0 - 512 ACK (4) Block 번호 2 2 Error (5) Error 번호 Error Message 0 2 2 n 1 TFTP(2) • TFTP 패킷 형식
TFTP 설치 및 설정 • %rpm –ivh tftp-server-*.i386.rpm tftp-server • Host 설치 시 이용한 리눅스 CD 프로그램에 들어있는 버전 이용 • 예 : %rpm –ivh tftp-server-0.29-3.i386.rpm • 환경설정 • %/etc/xinetd.d/tftp 파일을 열어서 disable=yes를 no로 수정한다. • 예) %vi tftp disable=yes -> disable=no • %/etc/export 파일을 열어서 /tftpboot *(rw, no_root_squash) 추가
TFTP 설치 및 설정(2) • Host의 /root 디렉터리 밑에 tftpboot라는 이름의 디렉터리를 만듬 • 만일 이 디렉터리를 변경하고 싶다면 위에서 환경설정 한 tftp 파일에 있는 server_args 의 디렉터리를 변경 • 예) %cd /etc/xinetd.d/ %vi tftp server_args=/tftpboot -> server_args=/example/tftpboot • xinetd 데몬 재시작 : %/etc/init.d/xinetd restart • %/usr/sbin/ntsysv 실행 후, tftp 부분을 허용하도록 설정(“*”표시 후 저장) • 커널 컴파일 후 vmlinux.ppcboot 파일을 tftpboot 디렉터리에 복사
부트 변수 설정 • minicom을 실행시킨 상태에서 LETOK-850의 전원을 키면 아래와 같은 화면이 나타남. 이때 아무 키나 눌러서 설정 상태로 들어감 • 만일 시간을 넘겨 부팅이 되어버리면 전원을 다시 키거나 리셋 버튼을 누른다.
부트 변수 설정(2) • printenv :현재환경 설정을 보는 명령어 • 예 : • setenv : 환경을 설정하는 명령어 • setenv ipaddr xxx.yyy.zzz.ttt : IP 주소값의 설정 • 변경해야 하는 변수 : ipaddr, gatewayip, serverip, bootargs • 예: • saveenv : 변경된 환경 변수를 저장하는 명령어 • 예: • bootcmd : autoboot 상태에서 재 시작하는 명령어 => printenv bootargs=root=/dev/nfs rw nfsroot=203.251.26.204:/opt/hardhat/devkit/ppc/8xx/tar get nfsaddrs=203.251.26.206:203.251.26.204 bootcmd=bootm ffc30000 bootdelay=2 => setenv bootargs root=/nfs rw nfsroot=203.251.26.204:/target/ramdisk/ramdisk n fsaddrs=203.251.26.206:203.251.26.204 => saveenv Un-Protected 1 sectors Erasing Flash... . done