Host 환경 설정
Minicom 설정 타겟보드 콘솔을 위한 시리얼 통신을 셋팅한다.
Minicom 설정 Minicom - 구성도 Minicom을 이용하여 serial 통신으로 hello라는 파일 전송
Minicom 설정 설치 준비 Host와 Target을 minicom으로 연결하기 위해 아래와 같은 환경 필요 Serial Cross Cable(9 pins) 1EA Linux가 설치되어 있는 PC(Host) XHYPER270-TKU 실습보드(Target) Cross cable의 한쪽은 Host의 COM1에 연결하고 다른 한쪽은 Target의 COM1 연결한다. Minicom 역할 Target에 대한 가상 터미널 Hyperterminal과 동일한 기능 Linux상의 text 기반 가상 터미널 Target 임베디드 보드에 대한 명령과 작동결과를 모니터링
Minicom 설정 Minicom 실행하기 만들어진 hello object 파일을 target에 download하기 위해 minicom이라는 emulator(가상터미널)를 이용 Minicom은 RS232C 통신을 이용 Minicom을 실행하기 전 통신 포트 설정을 해야 함. 컴퓨터에 미니컴 패키지가 설치되어 있는지 확인하자. 대부부의 배포판에는 기본적으로 포함이 되어있지만, 시스템에 없을 수 있다. 만약 없다면 소스를 구해 설치해야한다. -rpm source 구하기 site : http://www.rpmfind.net/linux/RPM 에서 minicom을 검색하여 최신 rpm버젼을 받아 설치하면 된다. - rpm –ivh <minicom rpm source>
Minicom 설정 Minicom 실행하기 Serial port setup으로 커서를 옮긴 후 enter를 입력
Minicom 설정 Minicom 실행하기 COM1은 ttyS0, COM2는 ttyS1로 Linux에서는 표시함. A를 눌려서 Serial 케이블이 연결된 포트를 설정. Host와 Target의 Baud rate는 115200 Hardware Flow Control은 NO로 설정
Minicom 설정 Minicom 실행하기 설정을 default로 저장하고 나옴.
Minicom 설정 Minicom 실행하기 타겟보드에 전원을 인가하거나 리셋을 시킨다. 위의 화면은 boot loader가 올라가고 커널이 SDRAM에 풀리고 root file system이 적재되는 것을 보여줌.
Minicom 설정 Minicom 실행하기 tool chain 설치에서 만들었던 hello라는 object 파일을 host 에서 Target으로 download하려고 한다. CTRL과 A를 동시에 누른 후 Z키를 입력하면 아래와 같은 화면이 나옴. 파일을 host로부터 target으로 전송하기 위해 S를 입력.
Minicom 설정 Minicom 실행하기 S를 입력 후 Zmodem을 선택하면 아래와 같은 화면이 나옴. 스페이스키를 눌려 디렉토리 이동
Minicom 설정 Minicom 실행하기 Tool chain 설치 시에 만들었던 hello 파일을 선택한 뒤에 enter를 치면 파일이 host로부터 target으로 download 수행
Minicom 설정 Minicom 실행하기 파일 전송이 성공하면 위와 같은 화면 나옴.
Minicom 설정 Minicom 실행하기 ls 명령을 이용하여 hello 파일이 전송되었는지 확인 해보고 실행시켜보자.
프로그램 다운로드를 위해 타겟보드에 ip를 할당한다. bootp 프로그램 다운로드를 위해 타겟보드에 ip를 할당한다.
Bootp 설정 Bootp는 tcp/ip상에서 자동 부팅을 위한 최초의 표준으로, 디스크 장치가 없는 클라이언트를 구동시키기 위한 프로토콜로 개발되었다. 하위 프로토콜로 udp와 ip 프로토콜을 사용한다. 개발보드에서는 Tftp와 함께, Bootloader에서 Kernel과 파일시스템 Image를 Host PC에서 Target으로 다운로드하기 위해 사용한다. Bootp는 Target 보드가 Tftp를 통한 파일 전송을 위해서 Target 보드의 IP와 Host에 대한 정보를 Host PC에서 가져오기 위해 사용한다. 타겟보드에 커널이 올라가기 전에는 ip 셋팅이 되어 있지 않다. 이 경우 이더넷을 통한 데이터 전송을 할 수 없기 때문에 사용되는 방법이 부트로더상에서 bootp를 통한 ip 설정과 tftp를 통한 데이터 전송을 할 수 있다.
bootp 설정 bootp 설정 bootpd 가 설치었는지는 다음의 명령어로 확인할 수 있다.
bootp 설정 bootp 설치 bootpd 가 설치되어 있지 않다면 bootp rpm설치로 데몬을 설치한다. * CD 안에 rpms 디렉토리 bootp rpm이 존재한다.
bootp 설정 bootp rpm이 설치가 되면 /usr/sbin/bootpd 파일이 생성된다. 생성된 bootpd파일은 xinetd 프로그램에 의해 실행된다. xinetd 프로그램에 의해 bootpd가 실행될 수 있도록 /etc/xinetd.d/bootp파일을 만들어야 한다.
bootp 설정 /etc/xinetd.d/bootp 파일을 아래와 같이 만든다.
bootp 설정 bootptab 파일 설정 타겟보드의 bootp요청이 있을 때 Host PC에 설치 한 bootp서버(bootpd)는 /etc/bootptab에 정의된 client 정보를 기반으로 bootp reply packet을 만들어 응답한다. 그래서 bootp를 사용하기 위해서는 이 /etc/bootptab에 client의 MAC Address와 할당할 IP등의 정보가 입력되어 있어야 한다.
bootp 설정 bootptab 파일은 bootpd(the Internet Bootstrap Protocol Server)를 위한 환경설정 데이터베이스 파일이다. host의 매개변수로, 대소문자를 구분하는 두 개의 문자로 된 tag symbols를 사용한다. hostname:tg=value:tg=value:tg=value: hostname에는 bootp client(or a "dummy entry")의 실제 이름이 들어가고, tg는 두 개의 문자로 구성된 tag sysbol이다. 각각의 sysbol에 해당하는 값은 value에 들어간다. 더 많은 내용은 man bootptab 로 확인할 수 있다.
bootp 설정 bootptab 생성 xhyper270tku은 hostname. ht (Hardware Type)는 10Mb Ethernet을 사용하므로 1 (=ehternet). ha (Hardware Address)는 Bootp Request를 보낼 Target(Bootp Client)의 Mac Address. ip는 Target에 할당할 IP Address. sm (subnet mask)는 Host (Bootp Server)와 동일하게 적어주면 된다.
bootp 설정 Bootloader에서 bootp 명령 실행하기 Host 에서 xinetd 를 재시작. Target 에서는 bootp 명령 수행.
TFTP 통신
TFTP 통신 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을 받을 수 있다. 또는 제공된 하이버스 CD 안에 /rpms에 있는 tftp rom을 설치하면 하면 된다.
TFTP 통신 설치 확인 설치 TFTP rpm을 설치하기 전에 host에 이미 설치가 되어있나 확인한다. 설치가 되어 있으면 설치과정 생략. # rpm –qa | grep tftp 설치 Host에 설치가 되어있지 않으면 다음과 같이 설치한다. # cd /PXA270/rpms # rpm –ivh tftp-server-0.17-9.i386.rpm
TFTP 통신 TFTP Server 구동 TFTP Server는 xinetd daemon에서 관리한다. TFTP Server를 구동시키기 위해 /etc/xinet.d/tftp 파일을 다음과 같이 설정한다. service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot }
TFTP 통신 TFTP Server 구동 (cont’) 파일을 전송할 때 사용하는 디렉토리를 /tftpboot 로 만든다. # mkdir /tftpboot TFTP 설정 파일을 편집한 후에는 xinet daemon에 적용 시키기 위해 xinet daemon을 재시작 해주어야 한다. # /etc/init.d/xinetd restart TFTP가 현재 제대로 동작하고 있는가 확인한다. # netstat –au | grep tftp tftp가 포함된 행이 보인다면 제대로 동작하고 있는 것이다. netstat 명령은 현재 시스템의 socket 상태를 보여 주는 것이다. local system의 어느 포트가 외부의 어느 포트와 연결 되어 있는지, queue의 상태는 어떠한지 등의 정보를 보여준다. 출력되는 정보는 순서대로 다음과 같다. Proto: 사용하는 protocol Recv-Q: receive queue에 대기중인 packet 수 Send-Q: send queue에 대기중인 packet 수 Local Address: service 가 사용하는 local system의 IP address와 port number Foreign Address: local system에 접속된 외부 system의 IP address와 port number State: 현재 접속 상태 grep 은 표준 입력으로 부터 지정된 문자열을 포함하고 있는 line만을 출력하는 filter 프로그램이다.
TFTP 통신 TFTP 사용 예 전송할 파일을 /tftpboot에 복사한다. # cp /PXA270/images/* /tftpboot/ Minicom을 실행시킨다. # minicom Target board에 전원을 인가 한후 다음 메시지가 나오기 전에 임의이 key를 누르면 “hybus>” prompt 가 뜨는 것을 확인할 수 있다.
TFTP 통신 hybus>tftp zImage kernel TFTP 사용 예 (cont’) hybus>tftp rootfs.img root ttftp 명령에 대해서는 5.3.3 장 ramdisk 설치에서 설명한다. 일단 server에서 설정한 디렉토리(여기서는 /tftpboot 로 설정하였었다.) 에서 두번째 인자에 해당하는 이름을 가진 파일을 sdram의 ramdisk 용으로 정해진 영역에 copy한다는 정도만 알아 두면 될 것이다.