개발환경 1 임베디드시스템소프트웨어 I
차례 개발환경 Host와 Target의연결 Host 및 target 사양 Toolchain이란, 설치방법 시험 Cross Compile Minicom 설정및사용방법 JTAG 설치및사용방법 Bootloader, kernel, file system flash 방법 개발환경 1 2
개발환경 Host 시스템 임베디드소프트웨어를개발하는시스템 일반 PC 에 Linux 운영체제를설치하여사용 Cross compile 환경필요 (toolchain 설치 ) Target 시스템에연결하는소프트웨어설치 (minicom, JTAG 프로그램등 ) Target 시스템 (=KIT) 개발된임베디드소프트웨어가실제수행되는시스템 Target CPU 가탑재된시스템에 Linux 운영체제 porting Bootloader 및특별한 flash 메모리용 file system 설치 Host 와 target 의연결 Serial 선 JTAG 선 USB 선 Ethernet 선 개발환경 1 3
Host 와 target 의연결 Host 용터미널 Target 용터미널 (minicom) Serial 선 JTAG 선 Ethernet 선 Host 시스템 연결 Target 시스템 개발환경 1 4
Host 시스템사양 실습실의 Host 시스템 CPU Memory Disk CD-ROM I/O Network O/S Pentium IV 2.8GHz 512M 110G DVD: x16, CD: x48 Serial / JTAG 10/100 BaseT Red Hat Fedora Core 6 개발환경 1 5
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 개발환경 1 6
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 개발환경 1 7
Target 시스템 (PXA255-pro2) 개발환경 1 8
Host 와 target 의연결 serial 케이블 JTAG 케이블 USB 케이블 Ethernet 케이블 개발환경 1 9
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는개발자가설치하여야한다 개발환경 1 10
Toolchain 이란? Target 시스템에서수행되는소프트웨어를개발하기위해필요한 Host 시스템의 cross compile 환경 소스코드를 compile하고 link하여 binary 실행파일을생성하는데필요한각종 utility 및 library의모음 기본적으로 assembler, C compiler, linker, C library 등으로구성되어있다. GNU에서제공하는 Toolchain을사용 GNU GCC for C, C++ GNU binary utilities: assembler, linker various object file utilities GNU C library 개발환경 1 11
Toolchain 설치방법 ARM CPU 용 toolchain 설치 Target 시스템에포함된 CD 에 arm-cross-compiler.tar.bz2 라는파일이있다 # mount mount /dev/cdrom /dev/cdrom/mnt/cdrom /mnt/cdrom # cd cd /mnt/cdrom/toolchain # cp cparm-cross-compiler.tar.bz2 /usr/local /usr/local # cd cd /usr/local /usr/local # tar tar xvjf xvjfarm-cross-compiler.tar.bz2 /usr/local/arm-linux 디렉토리가만들어짐 개발환경 1 12
Toolchain 설치방법 설치된 Toolchain 사용을위한 Path 설정 PATH 설정 $ export PATH=/usr/local/arm-linux/bin:$PATH $ vi vi.bashrc export export PATH=/usr/local/arm-linux/bin:$PATH $...bashrc Tool chain 이설치된위치 수정된.bash_profile 적용 개발환경 1 13
시험 Cross Compile $ vi vi hello.c hello.c #include<stdio.h> int intmain(void) { printf("hello Embedded\n"); return return 0; 0; } $ arm-linux-gcc o o arm-hello hello.c hello.c $ file file arm-hello arm-hello :: ELF ELF 32-bit 32-bit LSB LSB executable, ARM, ARM, version 1 (ARM), (ARM), for for GNU/Linux 2.4.18, 2.4.18, dynamically linked linked (uses (uses shared shared libs), libs), not not stripped 개발환경 1 14
Minicom 설정방법 명령어줄 "su root" 수행 명령어줄 "minicom s" 수행 " Serial port setup " 선택후 [Enter] A -> /dev/ttys0 [Enter] E -> I [Enter] // Speed-115200, // Parity-No, Data-8, Stop-1 F // Hardware Flow Control-No [ESC] "Modem and dialing" 선택후 [Enter] A -> [BS] [Enter] // Init string 지우기 B -> [BS] [Enter] // Reset string 지우기 [ESC] "Save setup as dfl" 선택후 "Exit from minicom" 선택 명령어줄 "chmod 666 /dev/ttys0" 수행 명령어줄 "chmod 777 /var/lock" 수행 명령어줄 "exit" 수행 개발환경 1 15
Minicom 사용 - KIT login 연결절차 Host 및 KIT 의전원이 off 된상태에서 Host 의 serial 포트와 KIT 의 serial 포트를 cable 로연결함 Host 를 on 하여 booting 하고 KIT 를 on 하여 booting 함 주의 : 해체는연결의역순이며 Host 와 KIT 의전원이켜져있는상태에서 serial cable 을연결하거나및해체하면안됨 명령어줄 "minicom" 수행후 KIT 를 on [Enter] 를치면화면에 "PXA255-pro login: " 나옴 root 로 login 함 (password 는없음 ) 여기서 KIT 의 Embedded Linux 를사용함 명령어줄 "exit" 수행 // root 에서 logout ^Ax // minicom 끝내기 KIT 를 off 한후 Host 를 shutdown 함 Host 와 KIT 의 serial 선해체 개발환경 1 16
Minicom 사용 - 파일 upload Host 에있는파일 "FILE" 을 KIT 로 upload minicom 을수행하여 KIT 로 login 한다 KIT 의원하는 directory 로간다 KIT 에서명령어 "rz" 를친다 ( 주 : rz 는 receive zmodem protocol 의줄임말로 KIT 입장에서는 receive 임 ) Minicom 에서 "^As" 를쳐서파일을 send 할준비한다 ( 주 : Host minicom 입장에서는 send 임 ) Host 에있는파일 "FILE" 을선택하여 KIT 로보낸다 얼마간의시간이지나면성공적인 send 가일어났다는메시지가나오고자동으로 KIT 의 Linux 로돌아온다 KIT 의 Linux 에서파일 "FILE" 을확인한다 개발환경 1 17
JTAG JTAG 은 Joint Test Access Group 의준말 기본용도 보드내회로의배선및소자의연결상태점검 flash 메모리에 write 할때 기본구조 보드내소자의외부연결점에하나의셀을설치 각각의셀은시리얼쉬프트레지스터 ( 바운더리스캔레지스터 ) 를형성하고서로연결됨 전체적인인터페이스는 5 개의핀에의해서제어 (TDI, TMS, TCK, ntrst, TDO) 개발환경 1 18
JTAG Boundary-Scan Test Interface JTAG Diagram 셀 Digital Chip 소자의연결상태점검 Registers TAP Flash 메모리 write 개발환경 1 19
JTAG 설치방법 Huins CD에있는 Jflash 소스파일인 "pxa255- jtag.tar.gz" 를 Host로복사한다 다음명령어줄을차례로수행한다 # tar xvzf pxa255-jtag.tar.gz # cd include-0.2.3 #./configure # make install # cd../jtag-0.4 #./configure # make # make install 개발환경 1 20
JTAG 사용방법 연결절차 Host 및 KIT 의전원이 off 된상태에서 Host 의 parallel 포트에 KIT 의 JTAG cable 을연결함 Host 를 on 하여 booting 하고 KIT 를 on 하여 booting 함 주의 : 해체는연결의역순이며 Host 와 KIT 의전원이켜져있는상태에서 JTAG cable 을연결하거나및해체하면안됨 사용방법 # jtag jtag> cable parallel 0x378 PXA255 jtag> detect jtag> detectflash 개발환경 1 21
Flash 방법 - JTAG JTAG 를사용한 flash 방법 flash 대상파일이있는디렉토리로이동 root permission 에서 jtag 실행 jtag 초기화후다음명령수행 Bootloader jtag> flashmem 0x00000000 blob Kernel jtag> flashmem 0x00080000 zimage Filesystem jtag> flashmem 0x00200000 ramdisk.gz jtag> flashmem 0x00800000 jffs2 개발환경 1 22
Flash 방법 - Serial Serial 을사용한 flash 방법 minicom 을사용해 KIT 를부트로더상태로부팅 Bootloader boot> xdownload blob ^As 키를누른후 xmodem 선택, blob 파일선택 Kernel boot> xdownload kernel ^As 키를누른후 xmodem 선택, zimage 파일선택 Filesystem boot> xdownload ramdisk ^As 키를누른후 xmodem 선택, ramdisk.gz 파일선택 boot> xdownload usr ^As 키를누른후 xmodem 선택, jffs2 파일선택 ( 참고 : 파일선택은 spacebar 를한번누른다 ) 파일을 download 한후, flash {blob kernel ramdisk usr} 명령을통해 flash 한다. 개발환경 1 23
참고문헌 정보통신연구진흥원, 한국정보처리학회, 임베디드시스템소프트웨어 I 교안, 2004. 휴인스, 홍릉과학출판사, Intel PXA255와임베디드리눅스응용, 2004 상명대학교임베디드시스템소프트웨어트랙, http://et.smu.ac.kr, 2004. 개발환경 1 24