1.08k likes | 1.3k Views
임베디드 시스템 개발 환경 구축. Lecture #4. 목 차. 교차 개발 환경 Host 와 Target 의 연결 Host 및 Target 사양 Host 개발 환경 구축 Toolchain(Cross-Compiler Tool) 설치 Minicom 설정 및 사용 방법 JTAG 설치 및 사용 방법 TFTP 서버 설치 및 구동 NFS 서버 설치 및 구동. 교차 개발 환경 (1). 교차 개발 환경이란 ? Target system 에서 응용 프로그램을 개발할 수 없다
E N D
임베디드 시스템개발 환경 구축 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 system 실행 상태 디스플레이 프로그램 실행 교차 개발 환경 (2)
교차 개발 환경 (3) • Host 시스템 • 임베디드 소프트웨어를 개발하는 시스템 • 일반 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 지원
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
Host와 Target의 연결 serial 케이블 JTAG 케이블 Ethernet 케이블 USB 케이블
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) • 구성요소 • GCC : 컴파일러 • Binutils : 어셈블러 및 로더, 바이너리 파일 편집 유틸리티 • Glibc : 크로스 컴파일을 위한 라이브러리 및 일반 라이브러리 • Linux 커널 : 리눅스 커널 소스 • Toolchain 제작 참고 사이트 • http://doc.kldp.org/KoreanDoc//html/EmbeddedKernel-KLDP/ch03.toolchain.html
Toolchain 설치하기 (1) • HUINS에서 제공하는 CD를 삽입하고 CD-ROM을 mount한다. • CD를 넣으면 자동으로 mount가 됨. • mount가 되지 않았을 경우 아래와 같이 실행 Read only option CD-ROM device name CD-ROM 장치를 /mnt/cdrom 디렉토리에 mount
Toolchain 설치하기 (2) • cd 명령을 이용하여 mount 된 CD-ROM 으로 이동한다. • ls 명령을 치면 CD의 내용을 볼 수 있음 Tool Chain file
Toolchain 설치하기 (3) • cp 명령을 이용하여 Tool Chain 파일을 /usr/local/arm으로 copy • ls 명령으로 copy가 잘 되어 있는지 확인 후 usr/local/arm 디렉토리로 이동 arm directory 생성 Kernel source의 makefile안에서 tool chain의 경로가 /usr/local/arm으로 되어 있기 때문에 반드시 이 경로에 tool chain을 설치해야 함
Toolchain 설치하기 (4) • tar 명령을 이용하여 압축을 풀면 Tool Chain은 자동으로 설치됨. • 설치 후 ls 명령으로 잘 설치 되었는지 확인 j 옵션은 bunzip2의 확장자를 가진 압출 파일을 풀 때 사용 Bunzip2로 압축된 파일은 bz2라는 확장자를 가진다.
Toolchain 설치하기 (5) • 다음으로 path를 잡아주어야 함. • cd를 쳐서 자신의 root 디렉토리로 이동 • .bashrc 을 vi로 open.
Toolchain 설치하기 (6) • PATH 를 아래와 같이 설정해줌. /usr/local/arm/bin에 tool chain에서 설치한 여러 compiler가 있음.
Toolchain 설치하기 (7) • 수정된 .bashrc는 source 명령을 사용하여 적용됨
Toolchain 설치하기 (8) • hello.c 라는 Test file을 만든다.
Toolchain 설치하기 (9) • 설치된 arm용 cross compiler를 이용하여 compile한다. • hello라는 object 파일이 만들어졌는지 확인한다. arm용 cross compiler Hello라는 object file이 생성
Toolchain 설치하기 (10) • 만들어진 hello object 파일을 실행시켜본다. • 아래 그림처럼 error가 발생하면 설치 성공. • file이라는 명령어를 이용하여 file의 속성을 확인 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) • 컴파일 • # 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 설치 및 실행
터미널 에뮬레이터 - 개요 • 필요성 • Host 컴퓨터가 Taget 보드의 콘솔로 동작 • Taget 보드의 동작 상황 및 각종 메시지를 콘솔에 출력 • Host 컴퓨터와 Taget 보드간의 적은 용량의 파일 전송 • Minicom 소프트웨어 • 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 연결한다.
터미널 에뮬레이터 - 실행(1) • 만들어진 hello object 파일을 target에 download하기 위해 minicom이라는 emulator를 이용 • Minicom은 RS232C 통신을 이용 Minicom을 실행하기 전 통신 포트 설정을 해야 함 • Minicom 실행 : ‘-s’옵션 사용
터미널 에뮬레이터 - 실행(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 Kernel uncompressing
터미널 에뮬레이터 - 실행(6) • Root를 입력 후 login한다.
터미널 에뮬레이터 - 실행(7) • Toolchain 설치 과정에서 만들었던 hello라는 object 파일을 host에서 target으로 download하려고 한다. • CTRL과 A를 동시에 누른 후 Z키를 입력하면 아래와 같은 Minicom command 모드가 실행됨.
터미널 에뮬레이터 - 실행(8) • 파일 전송 명령 S를 입력하면 아래와 같은 화면이 나오며, 파일 전송 프로토콜 중에서Zmodem을 선택한다.
터미널 에뮬레이터 - 실행(9) • Toolchain 설치 시에 만들었던 hello 파일을 선택한 뒤에 enter를 치면 파일이 host로부터 target으로 download됨 • 파일 목록에서 원하는 파일 선택을 space 키를 사용
터미널 에뮬레이터 - 실행(10) • 파일 전송이 성공하면 위와 같은 화면 나옴.
터미널 에뮬레이터 - 실행(11) • ls 명령을 이용하여 hello 파일이 전송되었는지 확인
터미널 에뮬레이터 - 실행(12) • Hello 파일을 실행
JTAG - 설치 및 사용법 • JTAG 개요 • JTAG I/F 프로그램 설치 및 실행
JTAG 개요 (1) • JTAG 인터페이스 구성 타겟 보드의 플래시 메모리에 부트로더, 커널 이미지 등을 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을 통해 모든 동작을 인위적으로 수행할 수 있어 여러 가지 하드웨어 테스트나 연결 상태 등을 체크할 수 있다.