• 검색 결과가 없습니다.

(Embedded System Programming) ESP30076 임베디드시스템프로그래밍

N/A
N/A
Protected

Academic year: 2022

Share "(Embedded System Programming) ESP30076 임베디드시스템프로그래밍"

Copied!
36
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

ESP30076 임베디드 시스템 프로그래밍 (Embedded System Programming)

조 윤 석 전산전자공학부

Module 5: Installation of Development Tools

(2)

 툴체인 (Toolchain) 또는 크로스 컴파일러 설치하기

 타겟보드와의 통신설정하기

 기타 시스템 툴 설치하기

주차별 목표

2

(3)

 크로스 컴파일러를 설치해야 하는 이유

– 리눅스가 설치된 가상 컴퓨터는 i386계열의 CPU를 탑재 하고 있고, 타겟보드는 ARM 계열의 CPU를 탑재하고 있 음

– 타겟보드에 필요한 바이너리 파일 컴파일은 호스트 컴퓨 터의 리눅스에서 수행해야 하므로 호스트 컴퓨터에 크로 스 컴파일러(cross compiler)설치 필요

 크로스 컴파일러는 종종 툴체인(toolchain)이라고 부르며 혼용해서 사용

툴체인(Toolchain) 이란?

3

(4)

 DVD 디스크를 이용한 툴체인 설치

– 툴체인 프로그램은 업체에서 제공하는 개발용 DVD에 들 어 있음

– VirtualBox에서 DVD장치 연결

툴체인 (Toolchain) 설치하기 -DVD 디스크 이용

4

(5)

 DVD 디스크를 이용한 툴체인 설치

– DVD 디스크에 들어있는 타겟보드용 파일

툴체인 (Toolchain) 설치하기 -DVD 디스크 이용

5

(6)

 DVD 디스크를 이용한 툴체인 설치

– 호스트 컴퓨터에 삽입된 DVD 디스크가 리눅스에 마운트 된 상태

툴체인 (Toolchain) 설치하기 -DVD 디스크 이용

6

(7)

 DVD 디스크를 이용한 툴체인 설치

– 터미널 창에서 툴체인 설치 파일이 들어있는 toolchain 디 렉토리로 이동

– tar 명령어를 이용하여 툴체인 파일을 /opt 디렉토리로 압 축을 풀면 툴체인이 설치됨

툴체인 (Toolchain) 설치하기 -DVD 디스크 이용

7

# cd /media/Achro-210T-S1314/toolchain

# tar xvfj arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 –C /opt

(8)

 DVD 디스크를 이용한 툴체인 설치

– 툴체인 설치를 위해 압축파일 풀기

툴체인 (Toolchain) 설치하기 -DVD 디스크 이용

8

(9)

 DVD 디스크를 이용한 툴체인 설치

– 설치된 툴체인에 대한 주요 실행파일들은

/opt/toolchains/arm-2009q3/bin 디렉토리에 들어있음 – Achro-210T 타겟보드에 필요한 C 프로그램을 컴파일하기

위한 크로스 컴파일러: arm-linux-gcc

툴체인 (Toolchain) 설치하기 -DVD 디스크 이용

9

(10)

 ISO 파일을 이용한 툴체인 설치

– 타겟보드용 DVD 디스크의 변환된 ISO 파일

툴체인 (Toolchain) 설치하기 -ISO 파일 이용

10

(11)

 ISO 파일을 이용한 툴체인 설치

– 설치된 툴체인 파일 확인

툴체인 (Toolchain) 설치하기 -ISO 파일 이용

11

(12)

 ISO 파일을 이용한 툴체인 설치

– VirtualBox 관리자에서 공유폴더 확인

툴체인 (Toolchain) 설치하기 -ISO 파일 이용

12

(13)

 ISO 파일을 이용한 툴체인 설치

– VirtualBox 관리자를 통해 공유된 폴더 마운트하기

툴체인 (Toolchain) 설치하기 -ISO 파일 이용

13

(14)

 ISO 파일을 이용한 툴체인 설치

– 타겟보드용 ISO 파일 마운트하기

툴체인 (Toolchain) 설치하기 -ISO 파일 이용

14

(15)

 ISO 파일을 이용한 툴체인 설치

– 툴체인 파일 확인

툴체인 (Toolchain) 설치하기 -ISO 파일 이용

15

(16)

 ISO 파일을 이용한 툴체인 설치

– 이후 설치하는 과정은 DVD 디스크로 설치하는 경우와 동 일

툴체인 (Toolchain) 설치하기 -ISO 파일 이용

16

root@esp:~# cd /root/achro-210T/toolchain/ ← 툴체인 설치 파일이 있는 위치로 이동

root@esp:~/achro-210T/toolchain# ls ← 파일 목록 확인

README.txt arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux- gnu.tar.bz2

root@esp:~/achro-210T/toolchain# tar xvfj arm-2009q3-67-arm-none- linux-gnueabi-i686-pc-linux-gnu.tar.bz2 –C /opt ← 압축 풀기

root@esp:~/achro-210T/toolchain# cd /opt/toolchains/arm-2009q3/bin

← 설치된 툴체인의 실행파일이 있는 위치로 이동

root@esp:/opt/toolchains/arm-2009q3/bin# ls ← 설치 파일(크로스 컴파일러: arm-linux-gcc) 확인

arm-linux-addr2line arm-none-linux-gnueabi-addr2line arm-linux-ar arm-none-linux-gnueabi-ar

………(생략)

(17)

 환경변수 설정

– 크로스 컴파일러로 사용되는 명령어(예: arm-linux-gcc)들 이 명령어 라인 상에서 자동으로 실행되도록 환경 변수 PATH에 크로스 컴파일러가 들어있는 디렉토리 등록

툴체인 (Toolchain) 설치하기 -환경변수 설정

17

root@esp:~# vi /root/.bashrc ← 파일을 연 후 G를 눌러 파일의 맨 뒤로 이동한다

# You may want to put all your additions into a separate file like

# ~/.bash_aliases, instead of adding them here directly.

# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases

fi# enable programmable completion features (you don't need to enable

# this, if it's already enabled in /etc/bash.bashrc and /etc/profile

# sources /etc/bash.bashrc).

#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then

# . /etc/bash_completion

#fiexport PATH=$PATH:/opt/toolchains/arm-2009q3/bin ← 경로를 추가한다.

(18)

 환경변수 설정

– 환경변수 업데이트 및 확인하기 root@esp:~# source /root/.bashrc root@esp:~# which arm-linux-gcc

/opt/toolchains/arm-2009q3/bin/arm-linux-gcc root@esp:~#

툴체인 (Toolchain) 설치하기 -환경변수 설정

18

(19)

 툴체인 설치 확인

– Test File 작성

root@esp:~# vi hello.c

툴체인 (Toolchain) 설치 확인하기

19

/* File Name : hello.c */

#include <stdio.h>

int main(int argc, char **argv)

{ printf("Welcome to the Embedded Class!!!\n");

return 0;

}

(20)

 툴체인 설치 확인

– Test File 컴파일 및 확인

툴체인 (Toolchain) 설치 확인하기

20

root@esp:~# mkdir /root/work ← 작업 디렉토리 생성 root@esp:~# cd /root/work ← 작업 디렉토리로 이동

root@esp:~/work# gcc hello.c –o hello.i386 ← 호스트용으로 컴파일

root@esp:~/work# arm-linux-gcc hello.c –o hello.arm ← 타겟용으로 컴파일 root@esp:~/work# ./hello.i386 ← 호스트(i386 머신)에서 정상적으로 실행됨 Welcome to the Embedded Class!!!

root@esp:~/work# ./hello.arm ← ARM용으로 컴파일 된 이미지는 호스트(i386)에서 실행되지 않음

bash: ./hello.arm: 바이너리 파일을 실행할 수 없음

root@esp:~/work# file hello.i386 ← 파일 속성 알아보기

hello.i386: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped

root@esp:~/work# file hello.arm ← 파일 속성 알아보기

hello.arm: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped

(21)

 리눅스 USB 개발 라이브러리

– 호스트 시스템에서 사용하는 USB 드라이버 패키지 (libusb-dev)를 우분투 홈페이지에서 다운로드

– 설치 화면

기타 시스템 툴 설치하기

-리눅스 USB 개발 라이브러리

21

root@esp:~# apt-get install libusb-dev

(22)

 USB 다운로드 툴 설치

– Achro-210T는 USB를 통해서 부트로더, 커널 등의 이미지 를 다운로드 받을 수 있음

– 일반적으로 USB 전송 속도는 이더넷에 비해서 빠르며 사 용이 편리

기타 시스템 툴 설치하기 -USB 다운로드 툴

22

root@esp:~# mkdir /root/download ← 이전에 생성했다면 건너뛰기

root@esp:~# cp /root/achro-210T/utilities/linux/smdk-usbdl/smdk-usbdl.tar.gz ~/download root@esp:~# cd ~/download ← download 디렉토리로 이동

root@esp:~# tar xvfz smdk-usbdl.tar.gz ← 압축풀기

root@esp:~# cd dltools ← USB 개발 툴 설치 디렉토리로 이동 root@esp:~# ls

dltool.c Makefile readme.txt smdk-usbdl

root@esp:~# cp –a smdk_usbdl /usr/bin ← 툴을 시스템 디렉토리(/usr/bin)으로 복사

(23)

 bl1 툴 설치

– 부트로더 중 부팅에 필요한 부트로더1(BL1)을 생성하는 유틸리티 만들기

기타 시스템 툴 설치하기 -bl1 툴

23

root@esp:~# cp ~/achro-210T/utilities/linux/makechecksum/makechecksum.tar.gz

~/download ← 파일복사

root@esp:~# cd /root/download ← download 디렉토리로 이동 root@esp:~# tar xvfz makechecksum.tar.gz ← 압축풀기

root@esp:~# cd makechecksum ← BL1 툴이 들어있는 디렉토리로 이동

root@esp:~# cp –a makechecksum /usr/bin ← BL1 툴을 시스템 디렉토리로 복사

(24)

 호스트 컴퓨터와 타겟보드 간의 통신

– RS-232C를 이용한 직렬통신

• 주로 호스트 컴퓨터에서 타겟보드를 모니터링하거나 제어하는데 사용됨

• 간단한 파일을 주고받는데 사용됨

– 이더넷을 이용한 통신

 리눅스 기반의 직렬통신 프로그램

– 미니컴은 호스트 컴퓨터와 Achro-210T 타겟 보드 간에 직 렬통신을 가능케 해 주는 가상터미널 소프트웨어

타겟보드와의 통신설정하기

24

(25)

 리눅스 기반의 직렬통신 프로그램

– 미니컴 설치

타겟보드와의 통신설정하기

25

root@esp:~# apt-get install minicom ← 미니컴 설치 패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 다음 패키지를 더 설치할 것입니다:

lrzsz

다음 새 패키지를 설치할 것입니다:

lrzsz minicom

0개 업그레이드, 2개 새로 설치, 0개 지우기 및 243개 업그레이드 안 함.

412k바이트 아카이브를 받아야 합니다.

이 작업 후 1,470k바이트의 디스크 공간을 더 사용하게 됩니다.

계속 하시겠습니까 [Y/n]? y

받기:1 http://kr.archive.ubuntu.com/ubuntu/ lucid/universe lrzsz 0.12.21-5 [99.9kB]

……(생략)

(26)

 리눅스 기반의 직렬통신 프로그램

– 미니컴에서 사용할 직렬통신 환경설정 – 미니컴 설정모드로 실행

– 미니컴 설정모드

타겟보드와의 통신설정하기

26

root@esp:~# minicom -s

(27)

 리눅스 기반의 직렬통신 프로그램

– 미니컴 환경설정 선택 창에서 화살표 키를 사용하여

“Serial port setup”을 선택

타겟보드와의 통신설정하기

27

(28)

 리눅스 기반의 직렬통신 프로그램

– 미니컴 환경설정

• 컴퓨터의 장치관리자 화면에서 “포트(COM & LPT)”를 확인

타겟보드와의 통신설정하기

28

(29)

 리눅스 기반의 직렬통신 프로그램

– 미니컴 환경설정

• 가상머신 관리자의 [장치] - [USB 장치] 메뉴를 보면 포트에서 확 인한 USB-to-serial 케이블명을 선택

• 해당 장치는 호스트 컴퓨터가 아닌 가상머신에서 실행되고 있는 리눅스에서 사용하게 됨

• 리눅스에서 인식한 장치파일을 확인

타겟보드와의 통신설정하기

29

root@esp:~# ls –l /dev/ttyUSB*

0 crw-rw---- 1 root dialout 188, 0 2014-03-15 16:52 /dev/ttyUSB0

(30)

 리눅스 기반의 직렬통신 프로그램

– 미니컴 환경설정

• 미니컴 통신설정 화면에서 A를 눌러 직렬장치명을 입력한 후 엔터키 누름

• 미니컴 통신설정 화면에서 E를 눌러 통신속도 설정을 진행

• 통신 속도는 115200, Data bit는 8, Stop bit는 1로, parity는 NO로 설 정

• E를 눌러 통신 속도를 맞추고 L, V, W를 차례로 눌러 나머지 부분을 맞추거나 Q를 눌러서 한 번에 설정

• 미니컴 통신 설정 화면에서 F를 눌러 Hardware Flow Control을 “No”

로 설정

• 미니컴 통신 설정 화면에서 G를 눌러 Software Flow Control을 “No”

로 설정

• 설정이 완료되면 엔터키를 눌러 상위메뉴로 이동

• 현재의 설정값을 상시 이용할 수 있도록 저장하기 위해서 화살표키를 이용하여 “Save setup as dfl”를 선택

• Enter를 눌러 설정된 값을 저장 후 Exit을 선택하여 설정 마침

타겟보드와의 통신설정하기

30

(31)

 리눅스 기반의 직렬통신 프로그램

– 임베디드 장치 연결 후 전원을 인가하여 미니컴 동작 확인

타겟보드와의 통신설정하기

31

(32)

 NFS 실습

– 준비사항

• LAN 크로스케이블

• 리눅스가 설치된 호스트 컴퓨터

• Achro-210T 실습보드(이하 타겟보드라는 용어와 혼용해서 사용함)

– 호스트 컴퓨터와 타겟보드를 NFS로 연결하기 위해서는 네트워크 상 에서 서로 인지할 수 있는 IP 주소를 할당

– 호스트 컴퓨터와 타겟보드의 IP주소

타겟보드와의 통신설정하기

32

(33)

 NFS 실습

– 호스트 컴퓨터 IP주소 설정 (명령어 이용)

– 호스트 컴퓨터 IP주소 설정 (Xwindow 이용 – 아래의 내용 으로 설정)

– 타겟보드 IP주소 설정

타겟보드와의 통신설정하기

33

# ifconfig eth1 192.168.10.100

DEVICE : eth1

IP : 192.168.10.100

NETMASK : 255.255.255.0

Achro210T login: root

login[99]: root login on 'ttySAC0'

root@Achro210T:~# ifconfig eth0 192.168.10.110 root@Achro210T:~# ifconfig eth0

eth0 Link encap:Ethernet HWaddr BA:B0:BE:AD:00:00

inet addr:192.168.10.110 Bcast:192.168.10.255 Mask:255.255.255.0

………(생략)

(34)

 NFS 실습

– 호스트 컴퓨터에서 NFS로 공유할 디렉토리를 지정

– 설정파일 입력 후 NFS 데몬 재시작

타겟보드와의 통신설정하기

34

root@esp:~# vi /etc/exports

# /etc/exports: the access control list for filesystems which may be exported

# to NFS clients. See exports(5).

## Example for NFSv4

/root *(rw,sync,no_root_squash,no_subtree_check)

root@esp:~# service nfs-kernel-server restart

(35)

 NFS 실습

– 타겟보드에서 마운트 지점 생성 및 마운트 하기

– 이전 단계에서 생성한 Test File 실행해 보기

타겟보드와의 통신설정하기

35

root@Achro210T:~# mkdir /root/nfs

root@Achro210T:~# mount -t nfs –o nolock 192.168.10.100:/root /root/nfs root@Achro210T:~# df

Filesystem Size Used Available Use% Mounted on /dev/root 250.4M 17.6M 219.8M 7% /

tmpfs 192.5M 0 192.5M 0% /dev/shm tmpfs 192.5M 8.0K 192.5M 0% /tmp

192.168.10.100:/root 28.3G 8.0G 18.8G 30% /root/nfs root@Achro210T:~#

root@Achro210T:~# cd /root/nfs/work

root@Achro210T:~/nfs/work# ./hello.arm ← 크로스 컴파일된 파일 실행하기 Welcome to the Embedded Class!!!

(36)

 NFS 실습

– 마운트 해제하기

 NFS 오류 상황 대처하기

– 호스트 컴퓨터와 타겟보드가 네트워크 케이블로 잘 연결되어 있는지 확인

– 호스트와 타겟보드를 직접 연결하는 경우는 크로스 네트워크 케이블 을 사용하고 있는지 확인

– 호스트 컴퓨터와 타겟보드에 네트워크 주소가 같은 네트워크단의 주 소로 할당되어 있는지 확인

– 가상 PC를 사용하는 경우 타겟보드에 물리적으로 연결되는 네트워크 포트가 가상 PC 설정창에서 정상적으로 연결되어 있는지 확인한다.

– 호스트 컴퓨터에서 NFS 서버가 정상적으로 실행되고 있는지 확인 – 호스트 컴퓨터의 방화벽(보안수준)을 확인

– NFS 연결시 RPM timeout의 메시지가 출력되면서 연결되지 않는 경 우는 클라이언트 PC의 보안 때문

타겟보드와의 통신설정하기

36

root@Achro210T:~/nfs# cd

root@Achro210T:~# umount /root/nfs

참조

관련 문서

MicroSD 메모리에 시스템 이미지 올리기 -리눅스

• 비교적 복잡한 네트워크 형태로서 각 장치들이 네트워크 중앙의 허브에 점대 점 방식으로 연결되어 있는 구조... ④

– 가상 머신 하드 드라이브 생성.. Virtual

– 파일시스템의 진단 및 오류수정은 리눅스 명령어 fsck (file system check) 수행 시 발생하는 모든 결과들은 lost+found 디렉토리에 저장되며,

디스플레이가 송,수싞시 꺼지므로 정상적으로 통싞이될때에는

• 다수의 OS를 하나의 컴퓨터 시스템에서 가동할 수 있게 하는 소프트웨어로 중앙처리장치와 OS 사이에 일종의 미들웨어로 사용되며, 하나의 컴퓨터에서 서로 다른 OS를

- 가상 정보제공자 관리 - 가상 신용주체 관리 - 가상 마이데이터 관리 - 가상 종합포털 관리 - 가상 통합인증기관 관리.. API 호출 규격 응답 분류

우리가 살고 있는 이 세상의 구조를 이해 하기 위해서는 더욱 발전된 매듭 이론에 대한 연구는 필수적이다.. 1.2 가상