2010년 6월 2일 수요일

Embedded Linux 개발환경

1. Cross 개발 환경의 이해
embedded system은 특수한 작업을 수행하도록 만들어진 system이기 때문에,
개발 환경에 있어서 흔히 우리가 접하는 PC base의 환경이 아닌 경우가 대부분이다.
예를 들어 전자레인지, 냉장고에 들어가는 시스템을 개발한다고 할 경우, 여기에는 모니터나 키보드
등이 없으므로, 여기에 들어가는 시스템을 개발할 때는 PC에서 개발을 완료한 후에 전자레인지를
구성하는 시스템에 다운로드 하여야 한다. 이때 개발하는 PC를 Host system, 전자레인지를 target
system이라 한다.
    1) Target system
개발하고자 하는 임베디드 시스템을 말한다.
예) ARM 기반의 smartphone등
    2) Host system
Target system을 개발하기 위한 개발환경을 제공하는 시스템
target을 위한 어셈블러, 컴파일러, 링커 등의 호스트 둘과 target을 개발하는데 필요한 디버거 제공함
예) ARM 프로세서용 툴과 디버거를 가지고 있는 pentium PC
    3) 개발툴
Cross Compiler: 개발된 소스 프로그램을 다른 machine의 기계어로 번역하는 프로그램
    4) Downloading
생성된 실행가능한 binary image를 target 보드의 메모리에 탑재하는 동작
kernel과 file system image를 target에 탑재, 대부분의 boot loader는 download기능을 지원한다.
Interface: TFTP for ethernet / ZMODEM with serial / USB with Active sync.
Download 방법:
ROM/Flash에 탑재하여 실행하는 방법:
 - ROM writer를 사용하는 방법
 - JTAG dongle을 이용하는 방법
DRAM에 탑재하여 실행
 - target에 모니터 프로그램, 또는 boot loader를 탑재하고
   serial, ethernet, USB등을 이용하여 다운로드 함
 - JTAG dongle을 이용하는 방법
 - 전용 ICE를 이용하는 방법.
전용 ICE를 사용하여 디버깅 정보와 함께 탑재하여 실행
 - 디버깅을 할때 매우 편리함.
    5) Debug
target system을 실행하면서 프로그램의 실행상태, 메모리, 변수 등을 프로그래머가 확인하거나
제어하면서 오류를 찾아 수정하는 동작.
실행가능한 이미지가 반드시 디버깅 정보와 함께 메모리에 탑재 되어 있어야 한다.
디버깅 전용 ICE장비와 디버거 소프트웨어를 사용한다.  
ICE장비: In-Circuit Emulator(ICE)는 호스트의 디버거 와 함께 target system의 레지스터나 메모리의
       내용을 읽거나 변경할 수 있고, break point나 watch point를 설정할 수도 있고, 프로그램을
       step-by-step으로 실행할 수 있게 해주는 장치이다.
2. Host system 구성
    1) ARM을 위한 Embedded Linux source code download from web site
Kernel: ARM Linux kernel 2.6.33.2 or later
  http://www.kernel.org/pub/linux/kernel/v2.6
    2) Boot loader source code 준비 from web
개발자는 목적에 맞는 최상의 bootloader를 선택하여 준비하고 target에 porting하여야 한다.
실습에서는 U-Boot사용
http://www.denx.de/wiki/U-Boot
    3) Console monitor tool for monitoring target system
minicom
    4) Networking
개발 환경 구성을 위해서는 TFTP, BOOTP, NFS와 같은 네트워킹 툴을 필요로 한다.
    5) Cross compiler 설치
- ARM cross compiler를 호스트 리눅스에 설치
- PATH 환경변수 설정
   /root/.bash_profile 수정
          새로운 환경 변수 적용.
- tool 사용 예시



댓글 없음:

댓글 쓰기