데이터통신 - 수원과학대학교 정보통신과

Download Report

Transcript 데이터통신 - 수원과학대학교 정보통신과

프로젝트랩
4장. 개발 환경 구축
(Toolchain, Minicom)
수원과학대학 정보통신과
임베디드시스템 개발환경



Embedded System을 개발하기 위해서는 Host System이란 개발 환
경이 필요하다.
개발 환경이 필요한 이유는 Embedded System의 특성상 큰 용량의
저장 장치를 가지지 못하기 때문이다.
임베디드시스템 개발 환경


호스트 시스템, 타겟 시스템, 백엔드로 구성
호스트 시스템에서 타겟 시스템을 위한 부트로더, 커널 이미지, 응용
소프트웨어 등을 개발하고, 이를 케이블 등을 통해 타겟 시스템으로
다운로드하여 사용
수원과학대학 정보통신과
2
호스트 시스템




임베디드시스템을 개발하기 위한 자원 즉, 컴퓨팅 환경을 제공하는 시
스템
보통 개인용 컴퓨터를 호스트 시스템으로 사용
리눅스 커널 2.6 버전을 포함하는 페도라 코어 4를 호스트 시스템의 운
영체제로 사용
툴체인(toolchain): 타겟 시스템용 시스템 및 응용 소프트웨어 개발에
필요한 모든 환경을 통칭
수원과학대학 정보통신과
3
타겟 시스템

개발된 임베디드 시스템 프로그램을 테스트하고 구동할 수 있는 보드
국내 임베디드 시스템 교육용 보드

PXA270을 탑재한 ㈜하이버스의 X-HYPER270-TKU를 사용

수원과학대학 정보통신과
4
백엔드




호스트 시스템과 타겟 시스템간에 통신하기 위한
매개체
직렬 포트, 병렬 포트, LAN 등
직렬 포트는 저속 통신 채널을 제공하며, 병렬 포
트는 JTAG을 통해 플래시에 퓨징할 수 있는 통신
채널을 제공하고, LAN은 고속 통신 채널을 제공
LAN을 사용할 때, 허브를 경유하여 사용하려면
다이렉트 케이블을 사용하지만, 호스트 시스템에
직접 연결할 경우엔 크로스 케이블을 사용
수원과학대학 정보통신과
5
호스트 시스템과 타겟 시스템의 연결
수원과학대학 정보통신과
6
toolchain 이란? [1]




호스트 시스템과 타겟 시스템의 플랫폼이 다르기 때문에
toolchain이 필요
Toolchain이란 cross compiler 및 관련된 각종 라이브러리
를 의미하며 이런 개발에 필요한 모든 환경을 통칭하여 말
하기도 한다.
X-Hyper270TKU는 PXA270 MPU를 사용하기 때문에, 일
반 desktop의 x86계열과는 다른 compiler (ARM cross
compiler)를 사용하게 된다.
사용할 compiler는 아래와 같이 GNU Tool을 사용한다.




GNU gcc compilers for C, C++
GNU binutil
GNU C Library
GNU C header
수원과학대학 정보통신과
7
toolchain 이란? [2]

GNU Tool은 일반 GNU Tool과는(x86계열) 다른 Compiler
(ARM cross compiler)를 사용하기 때문에 compile을 하게
되면 ARM에서 실행 가능한 바이너리가 생성된다.
Serial,
Ethernet
Host system
X-Hyper270TKU
Cross compiler를 이용하여 Host PC에서 바이너리(bootloader,
kernel, application)를 생성한후 X-Hyper270TKU로 Download한다.
Download는 serial, ethernet을 이용한다.
수원과학대학 정보통신과
8
X-Hyper270tku Toolchain



X-Hyper270TKU는 Red Linux 9.0 환경에서 개발되었다.
X-Hyper270TKU에서 사용하는 Toolchain은 소스를 직접
컴파일하여 생성된 디렉토리를 압축한 것이다.
사용한 소스는 다음과 같다.







binutils-2.15.tar.gz
gcc-3.4.3.tar.gz
glibc-2.3.2.tar.gz
glibc-linuxthreads-2.3.2.tar.gz
개발 환경 구축을 위한 리소스들은 제공되는 CD에 포함
되어있다.
그전에 Host PC에 루트계정으로 로그인되어 있어야 한다.
Host PC의 씨디롬에 CD를 넣고 마운트한다.

mount /dev/cdrom /media/cdrom
수원과학대학 정보통신과
9
[실습 4-1] 호스트 시스템에 Toolchain 설치
①
/usr/local/hybus 디렉토리에 툴체인 설치
(1)
(2)
(3)
(4)
①
③
②
④
가상 cd-drom에 xhyper270tku.iso 파일 삽입
mount /dev/cdrom /media/cdrom
mkdir –p /embed/hybus
cp –r /media/cdrom/* /embed/hybus
⑤
⑥
⑦
⑧
⑨
⑩
수원과학대학 정보통신과
10
[실습 4-2] Toolchain 경로 설정
②
root/.bash_profile 파일 연다  cd ~; gedit .bash_profile
PATH 환경 변수에 /usr/local/hybus/toolchain/bin 추가
③
source 명령 실행
①
①
②
③

이제 arm-linux- 로 시작되는 Toolchain을 어느 디렉토리에서든 사
용할 수 있다.

arm-까지 입력하고 tap을 두번 쳐서 arm-linux로 시작하는 여러 명령어
확인 가능
수원과학대학 정보통신과
11
[실습 4-3] Toolchain Test [1]

Test 하기

①
②
X86 계열에서 사용하는 리눅스의 gcc와 다른 점은 생성되는 코
드가 ARM용으로 생성이 된다.
mkdir –p /embed/ex/04; cd /embed/ex/04
hello.c 파일을 작성한다.
#include <stdio.h>
int main()
{
printf ("Hello, world!\n");
return 0;
}
수원과학대학 정보통신과
12
[실습 4-3] Toolchain Test [2]
③
hello.c 프로그램을 일반 컴파일러와 교차 컴파일러로 컴
파일→생성된 실행 파일의 실행 결과 관찰
①
③
②
④
⑤
⑥
⑦

두 실행파일을 실행해보고, file 명령어로 파일의 성격을
보면 cpu type 정보가 다른 것을 확인할 수 있다.
수원과학대학 정보통신과
13
JTAG Utility




JTAG(Joint Test Access Group) 은 칩 내부에 Boundary-Scan Cell을 두어 외부 핀
과 일대 일로 연결시켜 프로세서가 인위적인 동작을 수행할 수 있도록 하여
하드웨어 및 연결 상태 등을 점검
Boundary-Scan이라고도 함
JTAG의 칩 점검 방식은 1990년도에 IEEE에 표준화되어 IEEE 1149.1로 제정
부트로더를 타겟 시스템의 플래시 메모리에 최초로 퓨징하려면 JTAG 유틸리
티가 꼭 필요
수원과학대학 정보통신과
14
[실습하기 4-4] JTAG Utility 설치 [1]
①
JTAG 유틸리티 소스의 압축 파일(jflashmm-5.01.007h2.tar.gz)을 /usr/local/hybus 디렉토리에 복사한 후 압축
해제 및 풀기 수행
①
②
③
⑤
⑦
④
⑥
⑧
수원과학대학 정보통신과
15
JTAG Utility 설치 [2]
②
/root/.bash_profile 파일의 환경 변수에 JTAG 유틸리티
경로 추가

③
gedit ~/.bash_profile
임의 경로에서 jflashmm을 실행할 수 있도록 source 명
령 실행

source ~/.bash_profile
수원과학대학 정보통신과
16
minicom




임베디드시스템의 경우 타겟 보드에서 발생하는
진행 상황을 호스트 시스템에서 직렬 포트를 통하
여 모니터링할 수 있는 콘솔 에뮬레이터를 사용
리눅스 운영체제의 경우 minicom을 사용하며 윈
도우 운영체제일 경우는 hyperterminal을 주로 사
용
데스크탑 컴퓨터는 보통 2개의 직렬 포트가 있으
며 COM 포트 혹은 표준 직렬 포트라고 함
COM1 포트는 /dev/ttyS0, COM2 포트는
/dev/ttyS1 장치에 대응
수원과학대학 정보통신과
17
minicom 구성도
Minicom을 이용하여 serial
통신으로 hello라는 파일 전송
수원과학대학 정보통신과
18
minicom 설치 준비

Host와 Target을 minicom으로 연결하기 위해 아
래와 같은 환경 필요
 Serial
Cross Cable(9 pins) 1EA
 Linux가 설치되어 있는 PC(Host)
 XHYPER270-TKU 실습보드(Target)

Serial cross cable의 한쪽은 Host의 COM1에 연결하고 다른
한쪽은 Target의 COM1에 연결한다
 VMWare의
Serial Port를 눌러 COM1으로 맞춘다.
수원과학대학 정보통신과
19
[실습하기 4-5] minicom 설치
생략
①
④
②
③
4장 실습 변경사항 참고
⑤
⑥
수원과학대학 정보통신과
20
[실습하기 4-6] minicom 환경 설정



①
만들어진 hello object 파일을 target에 download하기 위
해 minicom이라는 emulator(가상터미널)를 이용
Minicom은 RS232C 통신을 이용
Minicom을 실행하기 전 통신 포트 설정을 해야 함
호스트 시스템의 minicom을 setup mode로 실행
수원과학대학 정보통신과
21
minicom 환경설정 [1]
②
minicom 구성 화면에서 화살표 키를 사용해 세
번째의 Serial port setup 메뉴 항목 선택
수원과학대학 정보통신과
22
minicom 환경설정 [2]
③
직렬포트 설정
Linux에서는 COM1은 ttyS0, COM2는 ttyS1로 표시함.
 A를 눌려서 Serial 케이블이 연결된 포트를 설정.




Serial Device 항목값을 /dev/ttyS0으로 설정하고 <Enter> 키를 누름

X-HYPER270-TKU의 경우 속도: 115200, 데이터 비트: 8, 패리트 비트: No, 정지 비트:
1 → 115200 8N1로 설정
E키를 눌러서 Host와 Target의 Baud rate는 115200로 설정
F키를 눌러서 Hardware Flow Control은 NO로 설정
/dev/ttyS0
115200 8N1
NO
수원과학대학 정보통신과
23
minicom 환경설정 [3]
④
⑤
⑥
[Esc] 키를 한 번 누름
Save setup as dfl 항목을 선택한 후 [Enter] 키를 눌러 설정 값을 저장
Exit 항목을 선택 후 [Enter] 키를 누름 → 환경 설정이 끝나고 미니컴 창이
나타남 → Exit from Minicom 항목 선택 후 [Enter] 키를 누름
수원과학대학 정보통신과
24
minicom의 실행


minicom 명령어 입력 후 [Enter]
미니컴 화면이 나타난 후 타겟 시스템의 전원을 인가하거나 리셋 버
튼을 누르면 타겟 시스템의 부팅 과정이 미니컴 화면에 보임
검사 화면 #1
수원과학대학 정보통신과
25
minicom에 부팅 과정이 보이지 않으면…



부팅 과정이 나타나지 않으면 미니컴 환경 설정이나 케이
블 연결 등을 점검
미니컴을 정상적으로 설정했음에도 동작하지 않을 경우
lock 파일의 문제일 수 있고 이 때 /var/lock 디렉토리 아래
에 LCK.tty라는 종류의 파일을 강제로 제거한 후 다시 시
작
부팅 과정을 관찰하면 “Autoboot in progress, press any
key to stop …”이라는 메시지가 보이며 부팅 과정을 잠시
멈출 때 아무 키나 입력하면 수동 부팅이 시작되며,
hybus>라는 부트로더 프롬프트(bootloader prompt)가 나
타나 부트로더 명령어를 기다림. 키를 입력하지 않고 잠시
기다리면 자동 부팅되며, 부팅이 끝나면 타겟 보드의 LCD
에 X 화면이 나타나며 [Enter] 키를 치면 타겟 시스템의 루
트 계정 쉘 프롬프트가 나타남
수원과학대학 정보통신과
26
타켓시스템의 수동부팅과 자동부팅

타겟 시스템의 수동 부팅  부팅시 키를 눌러 부트로더로 진입

타겟 시스템의 자동 부팅  부팅시 나둬서 리눅스로 정상 부팅할 때
수원과학대학 정보통신과
27
minicom 명령어
수원과학대학 정보통신과
28
Make Utility [1]





컴파일을 자동화해주는 명령어 생성 프로그램
최종 목표 파일(target file)의 빌드(Build) 과정을 정의해두
면 필요한 작업만 수행하여 목표 파일을 생성
종속된 파일들의 상호 의존 관계를 명시한 목록 파일
(description file)을 사용하여 목표 파일을 생성
원시 파일의 일부가 수정되면 목표 파일을 새롭게 생성하
기 위해 다시 컴파일할 파일을 자동으로 판단, 필요한 명
령어만 이용해 다시 컴파일하는 지능적인 유틸리티
다중 모듈 프로그램의 재사용성을 유지하고 프로그램 수
정에 대한 재번역을 최소화
수원과학대학 정보통신과
29
Make Utility [2]



목록 파일의 구조
기본적으로 Makefile 혹은 makefile이라는 파일 이름을 사용
목표 파일, 부품 파일, 일련의 명령어로 구성
반드시 Tab키로 입력할 것!!!
수원과학대학 정보통신과
30
Make Utility [3]

Make 유틸리티의 사용
 목록
파일이 makefile 혹은 Makefile라면 –f 옵션을 사용
해 목록 파일을 명시할 필요 없음

hello를 생성하기 위한 Makefile
hello:
hello.c
gcc
–o
hello
hello.c
수원과학대학 정보통신과
31
Make Utility [4]

매크로와 레이블


매크로: 특정한 코드를 단순하게 표현하는 기법
레이블: 부품 파일이 없는 의존행의 목표 파일 이름을 의미하며,
명령행의 성격을 대표하는 이름
TARGET
OBJECT
SOURCE
:= hello
:= hello.o
:= hello.c
$(TARGET):
gcc
$(SOURCE)
–o $(TARGET)
make
$(SOURCE)
clean:
make clean
rm
–f
$(TARGET) $(OBJECT)
수원과학대학 정보통신과
32
[실습하기 4-7] Make 유틸리티를 이용해 실행파일 생성

gedit input.c
수원과학대학 정보통신과
33
[실습하기 4-7] Make 유틸리티를 이용해 실행파일 생성

gedit output.c
수원과학대학 정보통신과
34
[실습하기 4-7] Make 유틸리티를 이용해 실행파일 생성

gedit hi.c
수원과학대학 정보통신과
35
[실습하기 4-7] Make 유틸리티를 이용해 실행파일 생성

gedit Makefile
수원과학대학 정보통신과
36
[실습하기 4-7] Make 유틸리티를 이용해 실행파일 생성

Make 유틸리티를 사용하지 않고 실행 파일을 만든다.
수원과학대학 정보통신과
37
[실습하기 4-7] Make 유틸리티를 이용해 실행파일 생성

Make 유틸리티를 사용해 실행파일을 만든다.
검사 화면 #2
수원과학대학 정보통신과
38