1 / 108

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

임베디드 시스템 개발 환경 구축. Lecture #4. 목 차. 교차 개발 환경 Host 와 Target 의 연결 Host 및 Target 사양 Host 개발 환경 구축 Toolchain(Cross-Compiler Tool) 설치 Minicom 설정 및 사용 방법 JTAG 설치 및 사용 방법 TFTP 서버 설치 및 구동 NFS 서버 설치 및 구동. 교차 개발 환경 (1). 교차 개발 환경이란 ? Target system 에서 응용 프로그램을 개발할 수 없다

umeko
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 교차 개발 환경 (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로 동작 • 이러한 개발 환경을 교차 개발 환경이라고 함

  4. 프로그램 작성 및 컴파일 수행 • Target system 실행 상태 디스플레이 프로그램 실행 교차 개발 환경 (2)

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

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

  7. Host 시스템 사양

  8. 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

  9. 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

  10. Target 시스템 (PXA255-PRO3)

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

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

  13. 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는 개발자가 설치하여야 한다

  14. 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

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

  16. Toolchain 설치하기 (1) • HUINS에서 제공하는 CD를 삽입하고 CD-ROM을 mount한다. • CD를 넣으면 자동으로 mount가 됨. • mount가 되지 않았을 경우 아래와 같이 실행 Read only option CD-ROM device name CD-ROM 장치를 /mnt/cdrom 디렉토리에 mount

  17. Toolchain 설치하기 (2) • cd 명령을 이용하여 mount 된 CD-ROM 으로 이동한다. • ls 명령을 치면 CD의 내용을 볼 수 있음 Tool Chain file

  18. 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을 설치해야 함

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

  20. Toolchain 설치하기 (5) • 다음으로 path를 잡아주어야 함. • cd를 쳐서 자신의 root 디렉토리로 이동 • .bashrc 을 vi로 open.

  21. Toolchain 설치하기 (6) • PATH 를 아래와 같이 설정해줌. /usr/local/arm/bin에 tool chain에서 설치한 여러 compiler가 있음.

  22. Toolchain 설치하기 (7) • 수정된 .bashrc는 source 명령을 사용하여 적용됨

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

  24. Toolchain 설치하기 (9) • 설치된 arm용 cross compiler를 이용하여 compile한다. • hello라는 object 파일이 만들어졌는지 확인한다. arm용 cross compiler Hello라는 object file이 생성

  25. Toolchain 설치하기 (10) • 만들어진 hello object 파일을 실행시켜본다. • 아래 그림처럼 error가 발생하면 설치 성공. • file이라는 명령어를 이용하여 file의 속성을 확인 ARM용 object 파일 의미

  26. 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

  27. 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/’ 디렉토리가 생성된다.

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

  29. 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

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

  31. 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 명령 사용)

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

  33. 터미널 에뮬레이터 - 개요 • 필요성 • Host 컴퓨터가 Taget 보드의 콘솔로 동작 • Taget 보드의 동작 상황 및 각종 메시지를 콘솔에 출력 • Host 컴퓨터와 Taget 보드간의 적은 용량의 파일 전송 • Minicom 소프트웨어 • Linux 운영체제에서 기본적으로 제공하는 터미널 에뮬레이터 소프트웨어 • 텍스트 기반의 인터페이스를 제공 • 다양한 터미널 에뮤레이터 모드를 제공 • 다양한 파일 전송 프로토콜을 제공

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

  35. 터미널 에뮬레이터 –설치(2) • Host와 Target을 minicom으로 연결하기 위해 아래와 같은 환경 필요 • Serial Cross Cable(9 pins) 1EA • Linux 운영체제가 설치되어 있는 PC(Host) • PXA255-pro 실습보드(Target) • Cross cable의 한쪽은 Host의 COM1에 연결하고, 다른 한쪽은 Target의 COM1 연결한다.

  36. 터미널 에뮬레이터 - 실행(1) • 만들어진 hello object 파일을 target에 download하기 위해 minicom이라는 emulator를 이용 • Minicom은 RS232C 통신을 이용  Minicom을 실행하기 전 통신 포트 설정을 해야 함 • Minicom 실행 : ‘-s’옵션 사용

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

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

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

  40. 터미널 에뮬레이터 - 실행(5) • 설정을 마친 후 target 보드의 전원을 on 시키면 아래와 같은 화면을 보게 됨. Boot loader loading Kernel loading ramdisk loading Kernel uncompressing

  41. 터미널 에뮬레이터 - 실행(6) • Root를 입력 후 login한다.

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

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

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

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

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

  47. 터미널 에뮬레이터 - 실행(12) • Hello 파일을 실행

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

  49. JTAG 개요 (1) • JTAG 인터페이스 구성 타겟 보드의 플래시 메모리에 부트로더, 커널 이미지 등을 fusing

  50. 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을 통해 모든 동작을 인위적으로 수행할 수 있어 여러 가지 하드웨어 테스트나 연결 상태 등을 체크할 수 있다.

More Related