Presentation is loading. Please wait.

Presentation is loading. Please wait.

Target System을 개발하기 위해 Host System에 환경을 구축하자.

Similar presentations


Presentation on theme: "Target System을 개발하기 위해 Host System에 환경을 구축하자."— Presentation transcript:

1 Target System을 개발하기 위해 Host System에 환경을 구축하자.

2 목 차 Minicom TFTP Server JTAG I/F Program NFS

3 Minicom

4 터미널 에뮬레이터 설치 & 실행(1) Minicom - 구성도 Minicom을 이용하여 serial
통신으로 hello라는 파일 전송

5 터미널 에뮬레이터 설치 & 실행(2) 설치 준비 Host와 Target을 minicom으로 연결하기 위해 아래와 같은 환경 필요 Serial Cross Cable(9 pins) 1EA Linux 운영체제가 설치되어 있는 PC(Host) PXA255-pro 실습보드(Target) Cross cable의 한쪽은 Host의 COM1에 연결하고, 다른 한쪽은 Target의 COM1 연결한다. Minicom 역할 Target에 대한 가상 터미널 Hyperterminal과 동일한 기능 Linux상의 text 기반 가상 터미널 Target 임베디드 보드에 대한 명령과 작동결과를 모니터링

6 터미널 에뮬레이터 설치 & 실행(3) Minicom – 실행(1)
만들어진 hello object 파일을 target에 download하기 위해 minicom이라는 emulator를 이용 Minicom은 RS232C 통신을 이용 Minicom을 실행하기 전 통신 포트 설정을 해야 함 컴퓨터에 미니컴 패키지가 설치되어 있는지 확인하자. 대부부의 배포판에는 기본적으로 포함이 되어있지만, 시스템에 없을 수 있다. 만약 없다면 소스를 구해 설치해야한다. -rpm source 구하기 site : 에서 minicom을 검색하여 최신 rpm버젼을 받아 설치하면 된다. - rpm –ivh <minicom rpm source>

7 터미널 에뮬레이터 설치 & 실행(4) Minicom – 실행(2)
Serial port setup으로 커서를 옮긴 후 enter를 입력

8 터미널 에뮬레이터 설치 & 실행(5) Minicom – 실행(3)
COM1은 ttyS0, COM2는 ttyS1로 Linux에서는 표시함. A를 눌려서 Serial jack이 연결된 포트를 설정. Host와 Target의 Baud rate는 Hardware Flow Control은 NO로 설정

9 터미널 에뮬레이터 설치 & 실행(6) Minicom – 실행(4) 설정을 default로 저장하고 나옴.

10 터미널 에뮬레이터 설치 & 실행(7) Minicom – 실행(5)
설정을 마친 후 target 보드의 전원을 on 시키면 아래와 같은 화면을 보게 됨. Boot loader loading Kernel loading ramdisk loading 위의 화면은 boot loader가 올라가고 커널이 SDRAM에 풀리고 root file system이 적재되는 것을 보여줌. Blob(boot loader)는 0x 에 적재 되어 있음 Kernel image는 0x 에 적재 되어 있음 Ramdisk는 0x 에 적재 되어 있음. zImage는 piggy.o와 head_armv.S로 이루어져 있음. Piggy.o는 vmlinux를 압축해놓은 파일이고 Head_armv.S는 압축을 푸는 코드이다. Kernel uncompressing

11 터미널 에뮬레이터 설치 & 실행(8) Minicom – 실행(6) Root를 입력 후 login한다.
위의 화면은 boot loader가 올라가고 커널이 SDRAM에 풀리고 root file system이 적재되는 것을 보여줌.

12 터미널 에뮬레이터 설치 & 실행(9) Minicom – 실행(7)
- tool chain 설치에서 만들었던 hello라는 object 파일을 host에서 target으로 download하려고 한다. - CTRL과 A를 동시에 누른 후 Z키를 입력하면 아래와 같은 화면이 나옴. 파일을 host로부터 target으로 전송하기 위해 S를 입력.

13 터미널 에뮬레이터 설치 & 실행(10) Minicom – 실행(8)
S를 입력 후 Zmodem을 선택하면 아래와 같은 화면이 나옴. 스페이스키를 눌려 디렉토리 이동

14 터미널 에뮬레이터 설치 & 실행(11) Minicom – 실행(9)
Tool chain 설치 시에 만들었던 hello 파일을 선택한 뒤에 enter를 치면 파일이 host로부터 target으로 download됨

15 터미널 에뮬레이터 설치 & 실행(12) Minicom – 실행(10) 파일 전송이 성공하면 위와 같은 화면 나옴.

16 터미널 에뮬레이터 설치 & 실행(13) Minicom – 실행(11) ls 명령을 이용하여 hello 파일이 전송되었는지 확인

17 터미널 에뮬레이터 설치 & 실행(14) Minicom – 실행(12) Hello 파일을 실행
Host에서 실행이 안되었던 hello 파일이 target에서는 실행됨.

18 TFTP Server

19 TFTP 서버 설치 및 실행 (1) TFTP? Linux용 TFTP 프로그램
TCP 를 사용하여 신뢰성있는 file 전송을 제공하는 ftp와 달리 UDP를 사용하여 file을 전송하는 protocol Data의 전송 중에 오류가 날 확률이 극히 적은 근거리에서 빠르게 file을 전송 받고자 할 경우에 사용한다 Embedded system 개발 과정에서 kernel image나 ramdisk와 같이 용량이 큰 데이터를 bootloader를 통해 target board로 빠르게 전송하기 위해 많이 사용한다 Linux용 TFTP 프로그램 에서 tftp로 검색하면 해당 rpm을 받을 수 있다  고객 지원  download  임베디드 시스템 게시판에서 받을 수도 있다

20 TFTP 서버 설치 및 실행 (2) 설치 확인 설치 TFTP rpm을 설치하기 전에 host에 이미 설치가 되어있나 확인한다.
설치가 되어 있으면 설치과정 생략. % rpm –qa | grep tftp 설치 Host에 설치가 되어있지 않으면 다음과 같이 설치한다. % rpm –ivh tftp i386.rpm tftp-server i386.rpm

21 TFTP 서버 설치 및 실행 (3) 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 per_source = 11 cps = 100 2 flags = IPv4 }

22 TFTP 서버 설치 및 실행 (4) TFTP Server 구동 (cont’)
파일을 전송할 때 사용하는 디렉토리를 /tftpboot 로 만든다. % mkdir /tftpboot TFTP 설정 파일을 편집한 후에는 xinet daemon에 적용 시키기 위해 xinet daemon을 재시작 해주어야 한다. % /etc/init.d/xinetd restart TFTP가 현재 제대로 동작하고 있는가 확인한다. % netstat –a | 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 프로그램이다.

23 TFTP 서버 설치 및 실행 (5) TFTP 사용 예
전송할 파일을 /tftpboot에 복사한다. 예> cd의 ramdisk.gz 복사 % cp /mnt/cdrom/ramdisk.gz /tftpboot/ Minicom을 실행시킨다. % minicom Target board에 전원을 인가 한후 다음 메시지가 나오기 전에 임의의 key를 누르면 “boot>” prompt 가 뜨는 것을 확인할 수 있다.

24 TFTP 서버 설치 및 실행 (6) TFTP 사용 예 (cont’)
tftp “전송할 파일명” ramdisk 를 실행하여 파일을 전송한다. ttftp 명령에 대해서는 장 ramdisk 설치에서 설명한다. 일단 server에서 설정한 디렉토리(여기서는 /tftpboot 로 설정하였었다.) 에서 두번째 인자에 해당하는 이름을 가진 파일을 sdram의 ramdisk 용으로 정해진 영역에 copy한다는 정도만 알아 두면 될 것이다.

25 JTAG I/F Program

26 JTAG I/F Program 설치 및 실행 (1)
Host에서 실행이 안되었던 hello 파일이 target에서는 실행됨. 타겟 보드의 플래시 메모리에 부트로더, 커널 이미지 등을 fusing

27 JTAG I/F Program 설치 및 실행 (2)
Joint European Test Access Group JTAG은 PCB와 IC를 테스트 하기 위한 목적으로 1985년 조직된 JTAG(Joint Test Action Group)에 의해 제정된 표준이다. Boundary Scan Test 칩 내부에 Boundary Cell이란 것을 두어 외부의 핀과 일대 일로 연결시켜 프로세서가 할 수 있는 동작을 중간에 Cell을 통해 모든 동작을 인위적으로 수행할 수 있어 여러 가지 하드웨어 테스트나 연결 상태 등을 체크할 수 있다.

28 JTAG I/F Program 설치 및 실행 (3)
프로세서(CPU)의 상태와는 상관없이 디바이스의 모든 외부 핀을 구동시키거나 값을 읽어 들일 수 있는 기능을 제공 회로의 배선과 소자의 전기적 연결상태 test 디바이스간의 연결상태 test Flash memory fusing jtag의 위 기능중 blob를 flash memory에 download 하기위해 flash memory fusing을 사용할 것이다.

29 JTAG I/F Program 설치 및 실행 (4)
pxa255-pro의 JTAG 호환 장치(cpu)의 구조 BSR BSC cpu의 각각의 pin은 BSC (Boundary-Scan Cell)에 연결되어 있고, 이 BSC가 BSR (Boundary-Scan Register)를 이루게 된다. BSC : 각 pin에 대한 bit 단위의 값(혹은 상태)를 가지게 된다. BSR : 모든 BSC이 연결 되어 하나의 Register를 이루게 된다. TDI로부터 입력된 데이터가 shift작업을 통해 적절한 위치에 값을 위치시키거나, 가져올 수 있게 되며, TDO를 통해 이 값이 출력된다. JTAG이 테스트 상태일 경우에 동작하며, IC 동작 상태 일 경우에는 동작 불능 상태가 된다. PXA255-PRO V1.0 보드에서는 CPU의 각 핀의 출력을 SIMULATION 하기 위해서 JTAG를 사용한다. CPU의 각 PIN에 1BIT를 저장할 수있는 CELL(BSC)을 연결하고, 이 CELL 들을 연결하여 하나의 레지스터(BSR)를 구성한다. JTAG가 테스트 상태일 경우 BSR에 값을 기록하여 각 CPU의 각 PIN 의 출력을 원하는 값으로 설정하여 주변 장치에 출력해 줄 수 있다. 이러한 기능을 이용하여 FLASH MEMORY에 ADDRESS, READ/WRITE 신호, DATA 신호를 를 전달하여, DATA 를 FUSING 하거나 저장되어있는 DATA를 읽어 올 수 있다.

30 JTAG I/F Program 설치 및 실행 (5)
PC를 통한 JTAG 호환 장치의 제어

31 JTAG I/F Program 설치 및 실행 (6)
PXA255-PRO V1.0에서 Host 와 Target의 JTAG Interface Host의 parallel port JTAG port PXA255-PRO V1.0 에서는 host 의 parallel port 와 target 의 J17(JTAG) port를 연결한다. 이때 cable의 빨간 선이 J17 port의 1번 pin에 연결되도록 해야 한다. PC의 parallel port의 주소는 일반적으로 0x378이다.

32 JTAG I/F Program 설치 및 실행 (7)
Host PC에서 jtag interface를 통하여 target system의 flash memory에 data를 fusing 하는 작업을 간편하게 해주는 프로그램 ftp://ftp.arm.uk.linux.org/pub/linux/arm/people/xscale/lubbock/jtag/ 에서 jtag.0624.tar.bz2를 다운 받을 수 있다. PXA255-PRO V1.0 실습 보드에서는 이 보드에 맞게 수정되어 huins에서 제공 하는 jtag 프로그램을 사용하여야 한다

33 JTAG I/F Program 설치 및 실행 (8)
jtag 소스파일(pxa255-jtag.tar.gz)을 임시 디렉토리에 복사한다. Example에서는 /usr/local/pxa255에 복사       압축풀기 % tar xfvz pxa255-jtag.tar.gz 소스 파일이 있는 디렉토리로 이동 % cd pxa255-jtag/jtag-0.4 configure (Makefile 생성) % ./configure --prefix=/usr/local/pxa255/pxa255-jtag --with-include=/usr/local/pxa255/pxa255-jtag/include-0.2.3 compile & install % make; make install configure 에서 -–prefix 옵션은 make를 통해 컴파일 되어 생성된 각 실행 파일 및 설정 파일 등을 make install 명령으로 install 할 때에 어느 디렉토리 아래에 install 할 것인가를 결정하게 된다. 이 옵션을 지정해 주지 않으면 make install 명령에 의해 실행 파일은 대부분 /bin 또는 /usr/bin 에 복사되고 설정 파일은 /etc 또는 그 밖의 default 로 설정된 디렉토리에 복사되게 된다. --with-include 옵션은 컴파일할 때 include할 헤더파일이 있는 위치를 지정하는 것이다. 반드시 절대 경로로 지정한다. 하위 디렉토리에도 적용되기 때문

34 JTAG I/F Program 설치 및 실행 (9)
/usr/local/pxa255/pxa255-jtag 디렉토리로 이동하여 bin 폴더와 share폴더가 생성되었는지 확인한 후, 제대로 되었다면 bin디렉토리를 PATH에 등록한다 또는 실행 파일 jtag를 기존의 실행 파일을 모아둔 ‘/bin’ 디렉토리로 복사해 둠으로써 언제든지 접근할 수 있도록 한다 다시 로그인할 때에도 path에 JTAG 디렉토리가 등록 되도록 하려면 자신의 HOME 디렉토리에 있는 .bashrc 파일에 위 내용을 추가해 주면 된다. %vi ~/.bashrc export PATH=$PATH:/usr/local/pxa255/pxa255-jtag/bin/ %source ~/.bashrc

35 JTAG I/F Program 설치 및 실행 (10)
이전에 생성한 blob 이미지가 있는 곳으로 이동한 후 jtag를 실행한다.

36 JTAG I/F Program 설치 및 실행 (11)
다음과 같은 명령을 주어 blob를 flash 메모리의 0번지에 올린다(약 3~5분 정도 걸린다) cable: 은 사용할 jtag cable을 선택하는 것이다. 0x378이 일반적인 PC의 parallel 포트이다. PXA255는 cable을 type을 정하는 것으로 huins에서 제작한 PXA255-PRO V1.0보드를 위해서 PXA255라고 적어준 것이다. detect: cable이 제대로 연결되어있는가를 확인하는 것이고 flashmem 0 blob: flashrom 0번지에 blob 파일(jtag를 실행한 디렉토리에 있는)을 저장하겠다는 것이다.

37 NFS 구축

38 NFS 구축 (1) NFS – 구성(1) Ethernet을 사용한 NFS 통신
Host에서 실행이 안되었던 hello 파일이 target에서는 실행됨. Ethernet을 사용한 NFS 통신

39 NFS 구축 (2) 192. 168. 1. * NFS – 구성(2) Host 192.168.1.100 Target
Host에서 실행이 안되었던 hello 파일이 target에서는 실행됨.

40 NFS 구축 (3) 설치 준비 - NFS 설정을 위해 아래와 같은 환경이 필요 Lan Direct Cable
Linux 운영체제가 설치되어 있는 PC(Host) PXA255-pro 실습 보드(Target) Lan cable은 direct나 cross cable 모두 사용가능하나 이 자료에서는 direct cable을 사용한다.

41 NFS 구축 (4) NFS– nfs용 공유 disk 만들기 (1)
NFS(network file system)란 client가 server상에 있는 file혹은 file system에 대하여 여과 없는 접근 권한을 가지게 됨 NFS 방식으로 nfs_success라는 파일을 host에서 target으로 download 해보자 - Ftp와 다른점 : ftp는 파일에 대한 복사 권한만을 가진다. - NFS는 기능상 삼바와 비슷하지만 가장 큰 차이는 커널에서 NFS를 지원한다는 점이다. - Portmap설치 역시 NFS를 사용하기 위해서는 필수적인 프로그램이다. Portmap은 포트 요청이 있을 때 새로운 포트를 할당해 주고 맵핑해주는 역할을 하게 된다. 즉 NFS에 접근한 시스템이 있으면 NFS 포트에서는 인증을 하고 파일을 주고 받는 포트는 새로운 포트 할당하게 되는 것이다. - 웹서버나 ftp 서버와는 다르게 데몬 프로세스가 특정 네트워크 포트를 점유하면서 동작하여 접속을 대기하고 있는 것이 아니라 portmapper라는 프로그램을 이용해서 네트워크 포트를 할당 받는다. Portmapper는 111번 포트를 점유하면서 데몬 상태로 대기하고 있다가 NFS 서비스를 요구하는 접속이 들어오면 nfsd에게 포트번호를 바꾸어 접속을 연결시켜준다.

42 NFS 구축 (5) NFS– nfs용 공유 disk 만들기 (2)
Host와 target의 통신을 위해서 host의 방화벽 설정을 변경한다.

43 NFS 구축 (6) NFS– nfs용 공유 disk 만들기 (3)
Host와 target의 통신을 위해서 host의 방화벽 설정을 변경한다.

44 NFS 구축 (7) NFS – nfs용 공유 disk 만들기(4)
일반적으로 lan card가 1개이므로 광대역 IP를 같이 쓰면서 target과 사설 ip로 통신하기 위해서 IP aliasing이 필요 IP aliasing 설정 파일을 아래와 같이 copy 한다 IP aliasing - 하나의 네트워크 장치에 여러 개의 IP주소 설정이 가능하며 이것을 IP aliasing이라고 한다. IP aliasihg을 할경우 해당 장치파일은 eth0에 또 하나의 IP를 설정할 경우 eth0:0로 생성된다. 그러한 이유로 IP aliasing 관련 설정 파일 /etc/sysconfig/network-scripts/ifconfig-eth0:0를 생성한 후 네트워크 초기화 스크립트(/etc/init.d/network)를 재구동하면 된다.

45 NFS 구축 (8) NFS – nfs용 공유 disk 만들기(5) 아래 그림과 같이 copy한 파일을 편집한다.

46 NFS 구축 (9) NFS – nfs용 공유 disk 만들기(6) 먼저 Host에서 nfs 디렉토리를 만든다.

47 NFS 구축 (10) NFS– nfs용 공유 disk 만들기(7) 만들어진 directory를 export시켜야 한다.
Client로부터의 mount 요청을 처리하는 데몬으로 /etc/exports의 내용을 읽어 어떤 호스트에게 마운트를 허가하고 어떤 제한을 주어야 하는지를 판단하게 된다. Exportfs파일은 마운트될 디렉토리와 허가 대상, 제한을 명시하며 또한 NFS client는 서버의 exports파일을 사용하기 이전에 명확하게 허가된 파일 또는 디렉토리를 마운트해야한다. 서버에서는 마운트를 허가해주기 이전에 인증을 거쳐 올바른 사용자인지를 판단하며 이를 masic cookie라고 한다. 리눅스는 BSD와 비슷한 동작을 취하게 되는데, 그 동작은 mountd라는 client의 요청이 있으면, /etc/exports의 내용을 읽어 호스트에 접속을 허가하고 디렉토리에 제한을 두게 된다.

48 Root는 아니지만 root의 권한을 가진다는 의미
NFS 구축 (11) NFS – nfs용 공유 disk 만들기(8) 만들어진 디렉토리를 export 할 수 있도록 vi를 이용하여 /etc/exports 파일을 다음과 같이 편집한다. Root는 아니지만 root의 권한을 가진다는 의미 대신 *로 하면 모든 ip에서 접속 가능 ro : 읽기 전용 rw: 읽기/쓰기 가능 root=n : n으로 표시된 계정의 uid를 루트권한으로 사용 가능케 한다. insecure : 이 머신에서 인증받지 않은 access를 허용 root_squash : client uid 0에서의 request를 서버의 uid(-2)로 매핑함으로써 지정된 호스트의 슈퍼유저의 access를 거부하는 보안기능 no_root_squash : uid 0 로부터의 request를 매핑하지 않는다. Default 옵션 Read/ write

49 NFS 구축 (12) NFS – nfs용 공유 disk 만들기(9) nfs 데몬을 재 시작한다.
또는 다음과 같은 명령을 사용해도 된다. % service nfs restart

50 NFS 구축 (13) NFS – nfs용 공유 disk 만들기(10) NFS로 mount시킬 target의 디렉토리를 만든다.
NFS server와 target의 디렉토리를 nfs 파일 시스템 형으로 mount 시킨다. Host IP address

51 NFS 구축 (14) NFS – nfs용 공유 disk 만들기(11)
cat /etc/mtab 을 이용하여 mount 성공여부 체크 Mount 전 mtab는 mount table을 의미

52 NFS 구축 (15) NFS – nfs용 공유 disk 만들기(12) Mount 후

53 NFS 구축 (16) NFS – nfs용 공유 disk 만들기(13)
설치가 끝나면 Host의 /home/share와 Target의 /mnt/nfs는 같은 디렉토리의 의미를 가지게 됨. Host의 /home/share 에 nfs_success라는 파일을 만들면 Target의 /mnt/nfs 에서 이 file을 ls 명령어로 확인할 수 있음. Host에서 nfs_success라는 파일을 제작

54 NFS 구축 (17) NFS – nfs용 공유 disk 만들기(14) Target에서 nfs_success라는 파일을 확인

55 NFS 구축 (18) NFS – nfs용 공유 disk 만들기(15) umount 명령을 이용하여 mount 해제


Download ppt "Target System을 개발하기 위해 Host System에 환경을 구축하자."

Similar presentations


Ads by Google