Tftp 란?
  • Tftp(Trivial File Transfer Protocaol)은 ftp와같은 파일 전송 프로토콜이다.
  • 하위 프로토콜로 ip, udp 프로토콜을 사용한다
  • 개발보드에서는 Bootloader에서 kernel과 파일시스템 Image를 Host에서 Target으로 이더넷을 통하여 고속으로 다운로드 하기 위해 사용한다.

Tftp 설치
CD로부터 복사 하여 사용하므로 /home/embed/xhyper/RPM 폴더에 있다. tftp프로그램은 bootp와 마찬가지로 xinetd에 의해 실행된다. xinetd에 의해 tftp가 실행되게 하기 위해 /etc/xinetd.d/tftp 파일을 수정 해 줘야 한다. RPM을 설치 해야 하므로 root권한으로 접근하자
#su -l
Password :
#cd /home/embed/xhyper/RPM
#rpm -i tftp-server-0.17-9.i386.rpm
#rpm -qa | grep tftp
tftp-server-0.17-9
#mkdir /home/embed/tftpboot
#chown embed:embed /home/embed/tftpboot
#vi /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
       socket_type             = dgram
       protocol                = udp
       wait                    = yes
       user                    = root
       server                  = /usr/sbin/in.tftpd
       server_args             = -s /home/embed/tftpboot
       disable                 = no
}

server-args를 /home/embed/tftpboot 로 설정 하였기 때문에 Bootloader에서 파일을 받을려면 Host PC의 /home/embed/tftpboot 폴더에 파일이 위치 해 있어야 한다. tftp로 다운로드 하고자 하는 kernel 과 파일시스템 Image는 이곳에 있어야 한다.

tftp 이용
먼저 minicom이 설치 되어 있어야 한다. 다음으로 확인 해야 할 것은 netstat -au 명령으로 bootp 와 tftp가 실행되어 있는지 살펴보자.
Target Board 의 전원을 켜자. Bootloader 상태에서 bootp 명령어를 사용하여 Host PC로부터 Target Board의 ip를 얻어오자. 이제 tftp를 사용하여 파일을 Target Board에 다운로드 할 수 있다.
tftp zImage kernel 이란 명령어로 kernel 이미지를 kernel 영역에 다운로드 할 수 잇다. 그전에 Host PC의 /home/embed/tftpboot 에 커널 이미지가 있어야 한다.

'X-Hyper255A' 카테고리의 다른 글

개발 환경 구축에 대한 문제점  (0) 2006.08.10
Bootp 설정  (0) 2006.08.09
JTAG Compile  (0) 2006.08.09
Toolchain Test  (0) 2006.08.09
Toolchain 설치  (0) 2006.08.08
아무것도 모른 상태에서 시작 하려니 힘들다. 개발 환경 구축하는데 1주일이 넘게 걸리고 있다. 이러다 임베디드 보드 사용하지도 못하고 포기하게 생겼다.

hybus에서 발행한 강의자료에는 root권한으로 작업을 하게 되어 있다. 그러나 나는 embed라는 ID를 사용하여 개발 환경을 만들었다. 그러다보니 간단하게 구축하게 될 작업 환경을 리눅스 명령어를 공부하는 투자하고 있다.

1. embed권한으로 minicom 실행이 안된다. 권한을 변경 해 줘야 하는데 모르겠다.
2. 커널 컴파일 중 arm-linux-gcc 컴파일러가 /usr/local/hybus-arm-linux-R1.1/bin 폴더에 위치 해 있어야 한다. 나는 /home/usr/embed/xhybus/Toolchain/hybus-arm-linux-R1.1/bin 폴더에 있다. 컴파일 할 때 컴파일러 위치를 어떻게 변경 해야 하는지 모르겠다.
3. PATH 설정까지 모두 했음에도 arm-linux-gcc가 올바르게 작동하지 않는다. 처음 설치시 작동 되었는데 지금은 install problem...... cpp0:????????? 라는 에러를 내뱉는다.
4. 모든 설정을 책과 같이 했음에도 불구하고 tftp를 통해 Target으로 다운로드 되지 않는다.

이것 말고도 알 수 없는 문제가 발생한다. 처음부터 root 권한을 이용하여 시작해야 하는가.

해결 방법
1. 시리얼 제어 권한이 없기 때문이다. 그래서 보안 문제가 생길지 모르나 권한을 변경했다.
#su -l
Password :
#chmod 766 /dev/ttyS0

2. Makefile 파일의 CROSS_COMPILE 의 경로를 변경 했다.
#cd /home/embed/xhyper/Kernel
#vi Makefile
CROSS_COMPILE = /home/embed/xhyper/Toolchain/hybus-arm-linux-R1.1/bin/arm-linux-

3. 책과 같이 hybus-arm-linux-R1.1 폴더를 /usr/local/ 위치에 옮겨 버렸다. 그리고 컴파일러 위치를 다시 수정 해 줬다. 2번 문제가 같이 해결된다.
#su -l
Password :
#mv /home/usr/embed/xhybus/Toolchain/hybus-arm-linux-R1.1 /usr/local/
#vi /home/embed/.bash_profile
#vi /home/embed/xhyper/Kernel/Makefile

4. 디렉토리 설정 까지 완벽 하다면 방화벽 설정을 확인 해 봐야 한다. 방화벽 설정으로 자동으로 비활성화 될 수 있기 때문이다. lokkit 명령어를 사용하여 eth0 를 활성화 하자.

'X-Hyper255A' 카테고리의 다른 글

Tftp 설정  (0) 2006.08.10
Bootp 설정  (0) 2006.08.09
JTAG Compile  (0) 2006.08.09
Toolchain Test  (0) 2006.08.09
Toolchain 설치  (0) 2006.08.08
Bootp 란?
  • Bootp는 tcp/ip상에서 자동 부팅을 위한 최초의 표준으로, 디스크 장치가 없는 클라이언트를 구동시키기 위한 프로토콜로 개발되었다.
  • 하위 프로토콜로 udp와 ip 프로토콜을 사용한다.
  • 개발보드에서는 Tftp와함께, Bootloader에서 kernel과 파일시스템 Image를 Host PC에서 Target으로 다운로드 하기 위해 사용한다. Bootp는 Target 보드가 Tftp를 통한 파일 전송을 위해서 Target 보드의 IP와 Host에 대한 정보를 Host PC에서 가져오기 위해 사용한다.
bootpd 설치
bootpd를 사용하기 위해 먼저 xinetd가 설치 되어있어야한다. xinetd rpm이 설치되어 있지 않다면 설치 하도록 하자. xinetd설치 방법은 인터넷 검색을 해 보자. 쉽게 설치 할 수있다.
bootp는 CD의 모든 파일을 옮겨왔으므로 /home/embed/xhyper/RPM에 있다. rpm에 대해서는 검색을 통해 알아보길 바란다. 또한 RPM 설치를 위해서 root권한으로 접근해야 한다.
rpm에 의해 설치된 bootpd 파일은 /usr/sbin/에 위치한다. bootpd 파일은 xinetd 프로그램에 의해 실행된다. 그러므로 /etc/xinetd.d/bootp 파일을 만들어 줘야 한다. 아래 설정과 같이 bootp 파일을 만들자.
#su -l
Passwd:
#rpm -qa | grep xinetd
xinetd-2.3.10-6
#cd /home/embed/xhyper/RPM
#rpm -Uh bootp-2.4.3-7.i386.rpm
경고: bootp-2.4.3-7.i386.rpm: V3 RSA/MD5 signature: NOKEY, key ID cba29bf9
########################################### [100%]
########################################### [100%]
#cd /etc/xinetd.d/
#vi bootp
service bootps
{
   disable = no
   socket_type = dgram
   protocol = udp
   wait = yes
   user =root
   server = /usr/sbin/bootpd
}


bootptab 파일 설정
타겟보드의 bootp요청이 있을 때 Host PC에 설치 된 bootp서버는 /etc/bootptab에 정의된 Client 정보를 기반으로 bootp reply packet을 만들어 보낸다.
그래서 bootp를 사용하기 위해서는 이 /etc/bootptab에 client의 Mac Address와 할당할 IP등의 정보가 입력 되어 있어야 한다.

#vi /etc/bootptab
xhyper255:\
ht=1:\
ha=0x123456789ABC:\
ip=192.168.0.10:\
sm=255.255.255.0
xhyper -> hostname
ht(hardware type) -> 100Mb Ethernet 사용하므로 1
ha(hardware address) -> Bootp Request를 보낼 때 Target의 Mac Address
ip -> Target에 할당 할 IP Address
sm(subnet mask)

Bootloader에서 bootp 명령 실행
먼저 설정된 파일을 Host쪽 bootpd 데몬을 실행하자
#/etc/init.d/xinetd restart

Target Board의 Bootlarder에서 bootp 명령을 입력하면 Host PC로부터 타겟보드의 IP를 얻을 수있다. 이전에 cross lan cable이 연결되어 있어야 하며, serial 연결 한 다음 minicom을 통해 Bootloader를 볼 수 있어야 한다.

'X-Hyper255A' 카테고리의 다른 글

Tftp 설정  (0) 2006.08.10
개발 환경 구축에 대한 문제점  (0) 2006.08.10
JTAG Compile  (0) 2006.08.09
Toolchain Test  (0) 2006.08.09
Toolchain 설치  (0) 2006.08.08

+ Recent posts