Transcript Document

Embedded System Development Environment II
임베디드 시스템 개발환경 구성
-1-
Embedded System Development Environment II
 호스트 개발환경 구성

네트워크 설정
우분투를 이용한 개발환경 설정시에는 인터넷 연결이 되어야 패키지를 설치할 수 있다.
 통신 테스트
# ping 168.126.63.1
한국 통신 DNS Server : 168.126.63.1
-2-
Huins. R&D Center
2
Embedded System Development Environment II
 네트워크 설정 변경
통신이 정상적으로 되지 안는 경우 네트워크 설정 방법
(네트워크 설정은 현재 사용하고 있는 네트워크 구성에 따라 ip설정을 해 주어야 한다)

호스트 시스템 ip 설정확인
네트워크가 장치가 정상적으로 설정되어있으면 eth 혹은 wlan 장치가 표시됨
# ifconfig
root@ubuntu:~# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:521 errors:0 dropped:0 overruns:0 frame:0
TX packets:521 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:34140 (34.1 KB) TX bytes:34140 (34.1 KB)
lo : local loopback
eth[n] : 유선 이더넷 장치
wlan[n] : 무선랜 장치
-3-
Huins. R&D Center
3
Embedded System Development Environment II

우분투에서 ip 네트워크 설정하기
우분투는 Xwindow의 네트워크 커넥션 메뉴를 통해 네트워크 관련 설정을 할 수 있다.
-4-
Huins. R&D Center
4
Embedded System Development Environment II

TFTP 설치 (tftpd-hpa) – 개선된 tftp
Trivial File Transfer Protocol(UDP), FTP 보다 가볍고 기능이 단순한 애플리케이션
부트로더에서 부트로더 이미지 혹은 커널을 다운로드 할 경우 이용할 수 있다.
 tftp download
# apt-get install tftp tftpd-hpa
 tftp 설정
# vim /etc/default/tftpd-hpa
# Defaults for tftpd-hpa
RUN_DAEMON=“yes”
OPTIONS=“-l -s /tftpboot”
 tftp 서비스 디렉터리 생성
# mkdir /tftpboot
 tftpd-hpa 서비스 재시작
# service tftpd-hpa stop
# service tftpd-hpa start
-5-
Huins. R&D Center
5
Embedded System Development Environment II

TFTP 설치 (tftpd) – xinetd 수퍼데몬으로 구동되는 tftpd
 tftp download
# apt-get install xinetd tftpd tftp
 tftp 설정
# vim /etc/xinetd.d/tftp
service tftp
{
protocol
= udp
port
= 69
socket_type = dgram
wait
= yes
user
= nobody
server
= /usr/sbin/in.tftpd
server_args = /tftpboot
disable
= no
}
 tftp 서비스 디렉터리 생성
# mkdir /tftpboot
 tftpd-hpa 서비스 재시작
# service xinetd stop | start
-6-
Huins. R&D Center
6
Embedded System Development Environment II

TFTP 테스트
tftpd-hpa 및 tftpd 설치 및 설정후 테스트
 tftp 디렉터리로 이동후 파일 생성
# cd /tftpboot
# cat > /tftpboot/test.txt
Hello World
(Ctrl + D를 눌러 입력 내용 저장)
 Home 디렉터리로 이동
# cd /root
# tftp 192.168.1.x
tftp> get test.txt
tftp> quit
# cat < test.txt
Hello World
-7-
Huins. R&D Center
7
Embedded System Development Environment II


NFS 설치
원격지에 있는 호스트의 특정 디렉터리를 임베디드 시스템의 특정 디렉터리와 연결
 NFS 다운로드
# apt-get install nfs-kernel-server
 nfs 설정파일 수정
# vim /etc/exports
... (생략) …
/nfsroot *(rw,sync,no_root_squash,no_subtree_check)
 nfs 디렉터리 생성
# mkdir /nfsroot
 nfs 서비스 재 시작
# service nfs-kernel-server start | stop
-8-
Huins. R&D Center
8
Embedded System Development Environment II

USB Download Tool 설치
최근 임베디드 장치는 부트로더에서 USB를 통해 데이터를 다운로드 할 수 있음
 호스트에서 개발을 usb 장치를 사용하기 위한 라이브러리 다운로드
# apt-get install libusb-dev
 개발 플랫폼 usb 다운로더 설치
# mkdir /root/temp
# cp /media/[Achro-4210 Disc]/utilities/linux_tools/smdk-usbdl.tar.gz /root/temp
# cd /root/temp
# tar zxvf smdk-usbdl.tar.gz
# cd /root/temp/dltools
# ls
dltool.c Makefile readme.txt smdk-usbdl
# cp –a smdk_usbdl /usr/bin
 BL1 Tool 설치
# mkdir /root
# mkdir /root/temp
# cd /root/temp
# cp /media/[Achro-4210 Disc]/utilities/linux_tools/makechecksum/makechecksum.tar.gz ./
# tar zxvf makechecksum.tar.gz
# cd makechecksum
# make
# make install
-9-
Huins. R&D Center
9
Embedded System Development Environment II

시리얼 통신 터미널 다운로드 (minicom)
리눅스에서 사용되는 시리얼 통신 관련 터미널 애플리케이션
minicom을 이용하여 보드에서 출력되는 메시지를 보거나, 리눅스 명령을 입력
# apt-get install minicom

minicom 설정
# minicom -s
- 10 -
Huins. R&D Center
10
Embedded System Development Environment II
Enter를 눌러 상위 메뉴로 이동
기본 설정값으로 저장
기본 설정값으로 저장후
다시 실행할 때는
minicom만 입력하면
현재 설정을 적용한
터미널이 실행됨

minicom 동작확인
호스트 PC와 임베디드 보드를 시리얼 케이블로
연결한 다음 전원을 인가하면, 임베디드 보드에서
메시지가 출력되는 것을 확인할 수 있음.
- 11 -
Huins. R&D Center
11
Embedded System Development Environment II
 툴체인 설치 (크로스 컴파일러)

쉘 변경 : Configuring dash 에서 No를 선택
# dpkg-reconfigure -plow dash

툴체인 설치
# mkdir /root/temp (root 사용자 홈디렉터리인 /root에 temp 디렉터리가 없다면 생성한다.)
# cp -a /media/(Achro Disc)/toolchain/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz /root/temp/
# sync
# cd /root/temp
# ls
arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz
# mkdir /opt/toolchains
# tar jxvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz -C /opt/toolchains/
- 12 -
Huins. R&D Center
12
Embedded System Development Environment II

크로스 컴파일러 패스 설정
# vim /root/.bashrc
# Alias definitions.
# 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
# Cross Compiler - achro4210 Android
export PATH=/opt/toolchains/arm-2009q1/bin:$PATH
- 13 -
Huins. R&D Center
13
Embedded System Development Environment II

크로스 컴파일러 패스 적용
# source /root/.bashrc

크로스 컴파일러 버전 출력
# cd /root
# arm-none-linux-gnueabi-gcc --v
- 14 -
Huins. R&D Center
14
Embedded System Development Environment II
 컴파일 테스트를 위한 테스트코드 작성
# vim helloworld.c
 소스코드 내용 입력
#include <stdio.h>
int main(int argc, char** argv)
{
printf("Hello World!\n");
return 0;
}
 소스코드 컴파일
# arm-none-linux-gnueabi-gcc -o helloworld helloworld.c
 컴파일 된 바이너리 확인
# file ./helloworld
- 15 -
Huins. R&D Center
15
Embedded System Development Environment II
 microSD 초기화

SD 카드 초기화
Achro-4210은 구동시 필요한 모든 데이터는 microSD카드를 이용
microSD를 새로 구입하거나, 처음부터 새로 전체 내용을 기록하려면 초기화가 필요

microSD카드 연결 확인
microSD카드를 카드리더에 연결한 다음 호스트 리눅스에 장착하고 dmesg 명령을 이용하여 어떤 디바이스 이름으로
장치가 연결되었는지 확인한다.
# dmesg
- 16 -
Huins. R&D Center
16
Embedded System Development Environment II

SD 카드 초기화 : 메모리의 모든 내용을 0으로 만듦.
# cd /root/images
# dd if=/dev/zero of=/dev/sdb bs=64K
dd: `/dev/sdd' 쓰는 중 : No space left on device
30177+0 레코드 들어옴
30176+0 레코드 나감
1977614336 바이트 (2.0 GB) 복사됨, 683.012 초, 2.0 M/B/초
root@largest-desktop:~/images#
 SD 카드 파티션 설정 – 사용할 파일 시스템을 설정 (영역 분리)



RAW 영역 : MBR, 부트로더 및 커널이 기록되는 영역 (0~8)
첫번째 파티션 : Achro4210_System (9 ~ 146)
두번째 파티션 : Achro4210_Data (147 ~ End of Cylinder)
# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p ...①
Disk /dev/sdd: 1977 MB, 1977614336 bytes
61 heads, 62 sectors/track, 1021 cylinders
Units = cylinders of 3782 * 512 = 1936384 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x49791684
Device Boot Start End Blocks Id System
- 17 -
Huins. R&D Center
17
Embedded System Development Environment II
Command (m for help): n ...②
Command action
e extended
p primary partition (1-4) ...③
p
Partition number (1-4): 1 ...④
First cylinder (1-1021, default 1): 9 ...⑤
Last cylinder, +cylinders or +size{K,M,G} (10-1021, default 1021): 146 ...⑥
Command (m for help): n ...⑦
Command action
e extended
p primary partition (1-4)
P ...⑧
Partition number (1-4): 2 ... ⑨
First cylinder (1-1021, default 1): 147 ...⑩
Last cylinder, +cylinders or +size{K,M,G} (147-1017, default 1017): 1017 ... ⑪
Command (m for help): w ... ⑫
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
- 18 -
Huins. R&D Center
18
Embedded System Development Environment II
 파일 시스템 초기화 – 실제 파일 시스템 생성

시스템 영역 파티션 초기화
# mkfs.ext3 -L Achro4210_System /dev/sdb1

데이터 영역 파티션 초기화
# mkfs.ext3 -L Achro4210_Data /dev/sdb2
- 19 -
Huins. R&D Center
19