임베디드 시스템 개발 환경 구축 Lecture #4.

Slides:



Advertisements
Similar presentations
임베디드 시스템 개발 환경 구축 Lecture #4.
Advertisements

컴퓨터와 인터넷.
정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
기초C언어 제1주 실습 강의 소개, C언어 개요, Cygwin/Eclipse 사용 컴퓨터시뮬레이션학과 2016년 봄학기
EZ Board-M In-Ho, Roh Real Time System Lab.
임베디드 시스템 개발 환경 (1) Lecture #3.
Target System을 개발하기 위해 Host System에 환경을 구축하자.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Consumer PC & AIO PC DMI Refresh 방법 설명 (UEFI DMI Ver)
제6장 FUSING.
Cross Compiler를이용한 커널 컴파일 및 포팅
Cross Compiler를이용한 커널 컴파일 및 포팅 1
PXA270 개발환경 설정 Ubuntu 실습용.
크로스 컴파일 환경 구축.
Tool Chain, JTAG, Bootp, TFTP 의 설치
MYSQL 설치.
Target System을 개발하기 위해 Host System에 환경을 구축하자.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
CUDA Setting : Install & Compile
제4장 Cross Compiler 설치.
Linux/UNIX Programming
FUSING.
ANSYS17.2 Student 제품 무료 다운로드
Development Environment of Embedded System : part 1
UNIT 06 JTAG Debugger 로봇 SW 교육원 조용수.
임베디드 리눅스 설치 및 동작 Lecture #5.
Target System을 개발하기 위해 Host System에 환경을 구축하자.
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
임베디드 시스템 개론 3주차 Embedded System..
한국골프대학 종합정보시스템 Windows Vista 사용자를 위한 Component 설치안내서
한국골프대학 종합정보시스템 Windows 7 사용자를 위한 Component 설치안내서
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Root Filesystem Porting
Root Filesystem Porting
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
부트로더와 Self Programming
소프트웨어 분석과 설계 Struts2 & JBOSS 설치하기
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
Cross Compiler 설치.
Host PC & Target Board 환경설정 Embedded Linux Image 올리기
Host 환경 설정.
Cross Compiler를이용한 커널 컴파일 및 포팅
시스템 인터페이스 Lab3 Unix 사용법 실습.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
㈜시스원이 제공하는 시스템 관리 통합 솔루션 SysmanagerOne Agent설치 안내서
Device Driver 임베디드 시스템 I.
설치 환경 □ 운영체제 버전 : CentOS Linux 7.2 □ 리눅스 커널 버전 :
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
임베디드 시스템 개론 임베디드 타겟 보드 포팅 및 H/W 제어 3일차 강의 자료 Embedded System Lab.
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
리눅스 커널 프로그래밍 환경 구축 IT EXPERT 리눅스 커널 프로그래밍 Author : Byungki Kim
PMIS 서버 설정 환경설정 작성자 : 배경환.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Kernel, Ramdisk, JFFS2 Porting
STS 에서 웹 서버 설치 방법.
OpenCV 설정 2.21 만든이 딩딩.
DK-128 개발환경 설정 아이티즌 기술연구소
수동 설치시는 설치 방법 1. 두번에 설치 CD 속에 fscommand 폴더 밑에 Osstem 이라는 폴더를
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
 파일 아카이브와 압축 명령 익히기.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
Tensorboard in Windows
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
임베디드 시스템 개론 3주차.
Installation Guide.
Docker Study 6~7.
Presentation transcript:

임베디드 시스템 개발 환경 구축 Lecture #4

목 차 교차 개발 환경 Host와 Target의 연결 Host 및 Target 사양 Host 개발 환경 구축 Toolchain(Cross-Compiler Tool) 설치 Minicom 설정 및 사용 방법 JTAG 설치 및 사용 방법 TFTP 서버 설치 및 구동 NFS 서버 설치 및 구동

교차 개발 환경 (1) 교차 개발 환경이란? Target system에서 응용 프로그램을 개발할 수 없다 하드웨어 구성이 소프트웨어 개발환경으로 부적합 저성능 CPU 및 메모리 용량 부족으로 컴파일 실행에 무리  소프트웨어 개발 생산성 저하 Target system 개발 방법 Target system보다 성능이 좋은 Host system을 이용하여 target system에서 동작하는 프로그램을 생성 프로그램 작성 및 컴파일은 Host system에서, 프로그램 실행은 Target system에 수행 Target system과 Host system이 서로 다른 형태의 프로세서를 사용하는 경우 cross compiler가 필요 주로 Host system이 target system의 console로 동작 이러한 개발 환경을 교차 개발 환경이라고 함 처음 하드웨어를 만들어 커널을 올리는 작업을 할 때 만들어진 하드웨어엔 아무 프로그램도 올라가 있지 않기 때문에 다른 곳에서 커널을 만들어 하드웨어에 심어줘야 한다. 그러므로 target에서 돌아가는 프로그램을 host에서 만들어 이식해 주어야 하는데, host와 target에 사용되는 processor가 다른 경우 실행은 host에서 되지만 만들어진 코드는 target system에서 돌아갈 수 있는 컴파일러가 필요해 진다. 이 때 cross 개발 환경이 필요하게 되는데 보통 cross compiler 라고 이야기를 한다. 일반적인 작업은 PC나 솔라리스 등과 같은 유닉스 시스템 혹은 워크스테이션과 같이 포팅하려는 타켓 시스템보다 성능이 좋은 시스템에서 수행되어진다. 호스트 시스템을 이용해 다른 프로세서가 잇는 타겟 시스템에서 동작하는 프로그램을 생성해야 하는데 이러한 작업을 할 ㅜ 있는 환경을 교차 개발 환경이라고 한다.

교차 개발 환경 (2) 프로그램 실행 프로그램 작성 및 컴파일 수행 Target system 실행 상태 디스플레이 처음 하드웨어를 만들어 커널을 올리는 작업을 할 때 만들어진 하드웨어엔 아무 프로그램도 올라가 있지 않기 때문에 다른 곳에서 커널을 만들어 하드웨어에 심어줘야 한다. 그러므로 target에서 돌아가는 프로그램을 host에서 만들어 이식해 주어야 하는데, host와 target에 사용되는 processor가 다른 경우 실행은 host에서 되지만 만들어진 코드는 target system에서 돌아갈 수 있는 컴파일러가 필요해 진다. 이 때 cross 개발 환경이 필요하게 되는데 보통 cross compiler 라고 이야기를 한다. 일반적인 작업은 PC나 솔라리스 등과 같은 유닉스 시스템 혹은 워크스테이션과 같이 포팅하려는 타켓 시스템보다 성능이 좋은 시스템에서 수행되어진다. 호스트 시스템을 이용해 다른 프로세서가 잇는 타겟 시스템에서 동작하는 프로그램을 생성해야 하는데 이러한 작업을 할 ㅜ 있는 환경을 교차 개발 환경이라고 한다. 프로그램 작성 및 컴파일 수행 Target system 실행 상태 디스플레이 프로그램 실행

교차 개발 환경 (3) Host 시스템 Target 시스템 (=KIT) 임베디드 소프트웨어를 개발하는 시스템 일반 PC에 Linux 운영체제를 설치하여 사용 Cross compile 환경 필요(toolchain 설치) Target 시스템에 연결하는 소프트웨어 설치 (minicom, JTAG 프로그램 등) Target 시스템 (=KIT) 개발된 임베디드 소프트웨어가 실제 수행되는 시스템 Target CPU가 탑재된 시스템에 Linux 운영체제 porting Bootloader 및 특별한 flash 메모리용 file system 설치

교차 개발 환경 (4) Host 시스템와 target 시스템의 연결 Serial 선 -Console 연결, zmodem을 이용한 파일 전송 JTAG 선 - Hardware debugging, Flash memory programming USB 선 – 빠른 속도의 파일 전송 지원 Ethernet 선 - 빠른 속도의 파일 전송, NFS 지원

Host 시스템 사양 Host 시스템 CPU Pentium IV 3GHz Memory 512M Disk 160G CD-ROM CD: x48 I/O Serial / JTAG Network 10/100 BaseT O/S Red Hat Linux 9

Target 시스템 H/W 사양 CPU: Intel XScale PXA255 400MHz RAM: Samsung SDRAM 128MB ROM: Intel Flash 32MB Screen: 6.4’’ TFT LCD (640 x 480) Touch Panel: BBADS7846E I/O: Serial, JTAG, USB 1.1(host/client), PCMCIA, Buttons, CMOS camera, IrDA, MIC, MMC Ethernet: CS8900A 10BaseT Audio: CS4202-JQ Cables: Power, Serial, Parallel, USB, Ethernet Case: Aluminum

Target 시스템 S/W 사양 O/S: Linux 2.4.19 kernel Device Drivers: CS8900A Ethernet, Frame buffer, BBADS7846E(Touch Screen), USB(host/client), PCMCIA, IrDA, CS4202-JQ stereo audio File System: Ramdisk, JFFS2

Target 시스템 (PXA255-PRO3)

Host와 Target의 연결 serial 케이블 JTAG 케이블 USB 케이블 Ethernet 케이블

Toolchain 설치 및 테스트 Cross-Compiler 개요 Toolchain 설치 Toolchain 테스트

Cross compile 환경 Embedded 시스템은 매우 제한된 H/W 및 S/W resource를 가지고 있기 때문에 여기서 Embedded S/W를 개발할 수는 없다 (S/W 개발은 Host 시스템에서) Host 컴퓨터의 processor와 Embedded 시스템의 processor는 다르기 때문에 Host 컴퓨터의 compiler를 사용하여 Embedded S/W를 compile할 수는 없다 Host 컴퓨터에서 작성된 프로그램을 Embedded 시스템에서 수행시키기 위하여 "Host to Embedded 시스템" cross compiler (교차 컴파일러)가 필요하다 일반적인 Linux 시스템에는 cross compiler가 설치되어 있지 않기 때문에 개발에 필요한 cross compiler는 개발자가 설치하여야 한다

Toolchain 개요 (1) Target 시스템에서 수행되는 소프트웨어를 개발하기 위해 필요한 Host 시스템의 cross compile 환경 소스 코드를 compile & link하여 binary 실행 파일을 생성하는데 필요한 각종 utility 및 library의 모음 기본적으로 assembler, C compiler, linker, C library 등으로 구성되어 있다. GNU에서 제공하는 Toolchain을 사용 GNU GCC for C, C++ : gcc GNU binary utilities: assembler, linker various object file utilities : binutils GNU C library : glibc

Toolchain 개요 (2) 구성요소 Toolchain 제작 참고 사이트 GCC : 컴파일러 Binutils : 어셈블러 및 로더, 바이너리 파일 편집 유틸리티 Glibc : 크로스 컴파일을 위한 라이브러리 및 일반 라이브러리 Linux 커널 : 리눅스 커널 소스 Toolchain 제작 참고 사이트 http://doc.kldp.org/KoreanDoc//html/EmbeddedKernel-KLDP/ch03.toolchain.html

CD-ROM 장치를 /mnt/cdrom 디렉토리에 mount Toolchain 설치하기 (1) HUINS에서 제공하는 CD를 삽입하고 CD-ROM을 mount한다. CD를 넣으면 자동으로 mount가 됨. mount가 되지 않았을 경우 아래와 같이 실행 - 레드핫 9.0 X-window에서는 일반적으로는 자동으로 mount됨. - 마운트를 해제하게 위해서는 umount /mnt/cdrom 을 입력하면 됨. CD-ROM device name Read only option CD-ROM 장치를 /mnt/cdrom 디렉토리에 mount

Toolchain 설치하기 (2) cd 명령을 이용하여 mount 된 CD-ROM 으로 이동한다. ls 명령을 치면 CD의 내용을 볼 수 있음 - Mount는 root 권한에서만 가능하기 때문에 일반 계정으로 로긴 했을 경우에는 su -l 명령을 이용하여 root로 재로긴해야함 Tool Chain file

Toolchain 설치하기 (3) cp 명령을 이용하여 Tool Chain 파일을 /usr/local/arm으로 copy ls 명령으로 copy가 잘 되어 있는지 확인 후 usr/local/arm 디렉토리로 이동 arm directory 생성 주의 할 점은 꼭 /usr/local/arm에 tool chain을 풀어야 하는데 그 이유는 kernel compile할 때 makefile안에 cross compiler의 경로가 /usr/local/arm으로 되어 있기 때문. 다른 경로에 풀면 kernel compile할 때 에러 발생. Kernel source의 makefile안에서 tool chain의 경로가 /usr/local/arm으로 되어 있기 때문에 반드시 이 경로에 tool chain을 설치해야 함

Toolchain 설치하기 (4) tar 명령을 이용하여 압축을 풀면 Tool Chain은 자동으로 설치됨. 설치 후 ls 명령으로 잘 설치 되었는지 확인 j 옵션은 bunzip2의 확장자를 가진 압출 파일을 풀 때 사용 Bunzip2로 압축된 파일은 bz2라는 확장자를 가진다. tar 옵션 중에 j는 bz2를 풀 때 사용하는 옵션. bunzip2 pxa255-toolchain.tar.bz2 로 bunzip을 푼 후 tar xvf pxa255-toolchain.tar로 풀어도 됨.

Toolchain 설치하기 (5) 다음으로 path를 잡아주어야 함. cd를 쳐서 자신의 root 디렉토리로 이동 .bashrc 을 vi로 open. /usr/local/arm/bin 에 arm-linux-gcc compiler가 설치되어 있는데 이를 모든 디렉토리에서 사용 가능하게 하기 위해 path를 잡아주어야 함. 자신 계정의 root 디렉토리에 가서 ls –a를 치면 .bashrc가 있음.

/usr/local/arm/bin에 tool chain에서 설치한 여러 compiler가 있음. PATH 를 아래와 같이 설정해줌. /usr/local/arm/bin에 tool chain에서 설치한 여러 compiler가 있음. PATH 부분에 콜론을 삽입 한 뒤에 cross compiler가 있는 /usr/local/arm/bin 경로를 지정해줌.

Toolchain 설치하기 (7) 수정된 .bashrc는 source 명령을 사용하여 적용됨 Source 명령은 수정한 .bashrc을 적용시킬 때 사용.

Toolchain 설치하기 (8) hello.c 라는 Test file을 만든다.

Hello라는 object file이 생성 Toolchain 설치하기 (9) 설치된 arm용 cross compiler를 이용하여 compile한다. hello라는 object 파일이 만들어졌는지 확인한다. arm용 cross compiler Arm-linux-gcc 는 arm용 cross complier. /usr/local/arm/bin에 위치. Hello라는 object file이 생성

Toolchain 설치하기 (10) 만들어진 hello object 파일을 실행시켜본다. 아래 그림처럼 error가 발생하면 설치 성공. file이라는 명령어를 이용하여 file의 속성을 확인 Hello object 파일은 arm용 컴파일러를 통하여 컴파일 했기 때문에 i386계열 PC에서는 동작이 안됨. File 명령어를 이용하여 결과를 보면 arm용 object 파일이라는 것을 알 수 있음. ARM용 object 파일 의미

Toolchain 설치하기 (11) Embedded Linux 2.6.x를 위한 Toolchain Gcc ver. 4.x 이상의 컴파일러를 사용하여야 함 gcc 버전에 따라 glibc, binutils 등의 버전을 같이 고려 toolchain_arm-linux_gcc-4.0.2_glibc-2.3.6.tar.gz

Toolchain 설치하기 (12) 현재 작업디렉토리에 ‘toolchain_arm-linux_gcc-4.0.2_glibc-2.3.6.tar.gz’ 을 복사하고 압축을 푼다 # tar xfz toolchain_arm-softfloat-linux-gnu_gcc-4.0.2_glibc-2.3.6.tar.gz -C / 압축을 풀면 ‘/usr/local/arm/’ 디렉토리가 생성된다.

Toolchain 설치하기 (13) 컴파일에 사용되는 bin 디렉토리를 환경변수 PATH에 추가 /root/.bash_profile 파일의 PATH 환경변수에 /usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softfloat-linux-gnu/bin을 추가 교차 컴파일러의 명령어 디렉토리

Toolchain 설치하기 (14) 패스 경로를 설정한다. # vi /root/.bash_profile source 명령을 통해 변경된 .bash_profile을 쉘에 적용 # source /root/.bash_profile 또는 logout/login PATH=$PATH:$HOME/bin:/usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softfloat-linux-gnu/bin

Toolchain 설치하기 (15) 간단한 프로그램을 이용한 테스트 앞에서 언급한 것과 같이 간단한 프로그램을 작성하여 컴파일 여부를 확인

Toolchain 설치하기 (16) 컴파일 컴파일 된 파일 정보 확인(file 명령 사용) # gcc –o hello-x86 ./hello.c [ host용 컴파일 ] # arm-linux-gcc –o hello-arm ./hello.c [ arm용 컴파일 ] # /usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-linux-gcc …. 컴파일 된 파일 정보 확인(file 명령 사용)

Minicom 설치 및 실행 터미널 에뮬레이터 개요 Minicom 설치 및 실행

터미널 에뮬레이터 - 개요 필요성 Minicom 소프트웨어 Host 컴퓨터가 Taget 보드의 콘솔로 동작 Linux 운영체제에서 기본적으로 제공하는 터미널 에뮬레이터 소프트웨어 텍스트 기반의 인터페이스를 제공 다양한 터미널 에뮤레이터 모드를 제공 다양한 파일 전송 프로토콜을 제공

터미널 에뮬레이터 – 설치(1) Minicom 동작 환경 Minicom을 이용하여 serial 통신으로 hello라는 파일 전송

터미널 에뮬레이터 – 설치(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 임베디드 보드에 대한 명령과 작동결과를 모니터링

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

터미널 에뮬레이터 - 실행(2) Serial port setup으로 커서를 옮긴 후 enter를 입력하여 serial port setup 모드를 실행

터미널 에뮬레이터 - 실행(3) COM1은 ttyS0, COM2는 ttyS1로 Linux에서는 표시함. A를 눌려서 Serial cable이 연결된 포트를 설정. Host와 Target의 연결 설정: 115200 bps, 8 bit, no parity, 1 stop bit Flow Control은 모두 NO로 설정

터미널 에뮬레이터 - 실행(4) 설정을 default로 저장하고 나옴.

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

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

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

터미널 에뮬레이터 - 실행(8) 파일 전송 명령 S를 입력하면 아래와 같은 화면이 나오며, 파일 전송 프로토콜 중에서Zmodem을 선택한다. 스페이스키를 눌려 디렉토리 이동

터미널 에뮬레이터 - 실행(9) Toolchain 설치 시에 만들었던 hello 파일을 선택한 뒤에 enter를 치면 파일이 host로부터 target으로 download됨 파일 목록에서 원하는 파일 선택을 space 키를 사용

터미널 에뮬레이터 - 실행(10) 파일 전송이 성공하면 위와 같은 화면 나옴.

터미널 에뮬레이터 - 실행(11) ls 명령을 이용하여 hello 파일이 전송되었는지 확인

터미널 에뮬레이터 - 실행(12) Hello 파일을 실행 Host에서 실행이 안되었던 hello 파일이 target에서는 실행됨.

JTAG - 설치 및 사용법 JTAG 개요 JTAG I/F 프로그램 설치 및 실행

타겟 보드의 플래시 메모리에 부트로더, 커널 이미지 등을 fusing JTAG 개요 (1) JTAG 인터페이스 구성 Host에서 실행이 안되었던 hello 파일이 target에서는 실행됨. 타겟 보드의 플래시 메모리에 부트로더, 커널 이미지 등을 fusing

JTAG 개요 (2) JTAG 란? Joint European Test Access Group 기본 구조 JTAG은 PCB와 IC를 테스트 하기 위한 목적으로 1985년 조직된 JTAG(Joint Test Action Group)에 의해 제정된 표준이다. Boundary Scan Test 기본 구조 보드 내 소자의 외부 연결점에 하나의 셀을 설치 각각의 셀은 시리얼 쉬프트 레지스터(바운더리 스캔 레지스터)를 형성하고 서로 연결됨 전체적인 인터페이스는 5개의 핀에 의해서 제어 (TDI, TMS, TCK, nTRST, TDO) 칩 내부에 Boundary Cell이란 것을 두어 외부의 핀과 일대 일로 연결시켜 프로세서가 할 수 있는 동작을 중간에 Cell을 통해 모든 동작을 인위적으로 수행할 수 있어 여러 가지 하드웨어 테스트나 연결 상태 등을 체크할 수 있다.

JTAG 개요 (3) JTAG pin TAP controller 참고 사이트 TCK : Test Clock Input TMS : Test Mode Select TDI : Test Data Input TDO : Test Data Output nTRST : Test Reset TAP controller State machine에 의해 JTAG의 모든 operation을 수행. state의 변화는 TMS의 상태값과 TCK의 triggering으로 발생 참고 사이트 http://www.jtag.com

JTAG 개요 (4) Boundary-Scan Test Interface JTAG Diagram Flash 메모리 write 셀 소자의 연결 상태 점검 Digital Chip Flash 메모리 write Registers TAP

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

JTAG I/F Program 설치 및 실행 (1) 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를 읽어 올 수 있다.

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

JTAG I/F Program 설치 및 실행 (3) PXA255-PRO V3.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이다.

JTAG I/F Program 설치 및 실행 (4) 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 프로그램을 사용하여야 한다

JTAG I/F Program 설치 및 실행 (5) 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할 헤더파일이 있는 위치를 지정하는 것이다. 반드시 절대 경로로 지정한다. 하위 디렉토리에도 적용되기 때문

JTAG I/F Program 설치 및 실행 (6) /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

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

JTAG I/F Program 설치 및 실행 (8) 다음과 같은 명령을 주어 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를 실행한 디렉토리에 있는)을 저장하겠다는 것이다.

Jflashmm 프로그램 설치 (1) Jflashmm Intel사에서 제공하는 windows O/S용 플래시 메모리 기록 프로그램 JTAG I/F를 이용하여 호스트컴퓨터에서 타겟시스템의 플래시 메모리를 fusing 대개의 경우 플래시 메모리에 부트로더 이미지(u-boot.bin)을 기록하기 위해 사용

Jflashmm 프로그램 설치 (2) 파일을 실행한다. Yes Click ( Ex. JFlash_MM_V5_01_007.exe ) Yes Click

Jflashmm 프로그램 설치 (3) 설치될 경로를 설정한 후 Next를 선택한다. Next Click

Jflashmm 프로그램 설치 (3) Next Click

Jflashmm 프로그램 설치 (4) Finish Click

Jflashmm 프로그램 설치 (5) PXA255 Data 파일 설치 GIVEIO 드라이버 복사 CD:\JFlashMM\dbpxa255.dat을 Jflashmm을 설치한 디렉토리 안에 복사한다. GIVEIO 드라이버 복사 C:\Program Files\Inter Corpation\Jflash_MM에 있는 ‘GIVEIO.SYS’파일을 복사하여 C:\WINDOWS\system32\drivers (Windows XP경우), C:\WINNT\system32\drivers (Windows 2000경우)에 넣는다.

Jflashmm를 위한 드라이브 설치 (1) 제어판에서 “새 하드웨어 추가”를 선택한다.

Jflashmm를 위한 드라이브 설치 (2) 다음을 선택한다.

Jflashmm를 위한 드라이브 설치 (3) “예, 하드웨어를 이미 연결했습니다”를 선택한다. 다음을 선택한다.

Jflashmm를 위한 드라이브 설치 (4) “새 하드웨어 장치 추가”를 선택한다. 다음을 선택한다.

Jflashmm를 위한 드라이브 설치 (5) “목록에서 직접 선택한 하드웨어 설치”를 선택한다. 다음을 선택한다.

Jflashmm를 위한 드라이브 설치 (6) “포트 (COM 및 LPT)”를 선택한다. 다음을 선택한다.

Jflashmm를 위한 드라이브 설치 (7) “디스크 있음”을 선택한다.

Jflashmm를 위한 드라이브 설치 (8) “찾아보기”를 선택한다. Jflashmm이 설치된 디렉토리 안에 있는 “giveio.inf”를 선택한다. 열기를 선택한다.

Jflashmm를 위한 드라이브 설치 (9) 확인을 선택한다. 다음을 선택한다.

Jflashmm를 위한 드라이브 설치 (10) 다음을 선택한다.

Jflashmm를 위한 드라이브 설치 (11) 마침을 선택한다.

Jflashmm 프로그램 실행 (1) 시작 -> 실행을 선택하거나 Window-Key + R을 눌러 실행창을 연다. cmd를 입력한 후 확인을 선택한다.

Jflashmm 프로그램 실행 (2) Jflashmm이 설치된 디렉토리로 이동한다.

Jflashmm으로 u-boot.bin 이미지 기록 다운로드할 Image File을 Jflashmm이 설치된 디렉토리로 복사한다 부트로드 이미지 파일 u-boot.bin 파일 Jflashmm dbpxa255 <Image File Name>을 입력하고 Enter를 누른다. <Image File Name>에는 다운로드 할 이미지 파일 이름을 적는다.

Jflashmm으로 u-boot.bin 이미지 기록

TFTP 서버 설치 및 구동 TFTP 개요 TFTP 서버 설치 및 구동

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

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

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 }

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 프로그램이다.

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

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

NFS 구축 및 실행 NFS 구축 환경 NFS 실행

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

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

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

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에게 포트번호를 바꾸어 접속을 연결시켜준다.

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

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

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)를 재구동하면 된다.

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

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

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

Root는 아니지만 root의 권한을 가진다는 의미 NFS 구축 (11) NFS – nfs용 공유 disk 만들기 (8) 만들어진 디렉토리를 export 할 수 있도록 vi를 이용하여 /etc/exports 파일을 다음과 같이 편집한다. Root는 아니지만 root의 권한을 가진다는 의미 Read/ write 192.168.1.0 대신 *로 하면 모든 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 옵션

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

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

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

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

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라는 파일을 제작

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

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