데이터통신 - 수원과학대학교 정보통신과
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