6.1 임베디드 소프트웨어 개발 환경 구성요소
일반 소프트웨어 개발 환경
소스 코드 컴파일 과정은 일반 소프트웨어와 마찬가지로 PC에서 이루어지고, PC와 연결된 타겟 보드(Target Board)에서 실행되고 있으며, 타겟 보드에서 실행시키기 위해 PC에 생성된 결과 파일(Hello.bin)을
타겟 보드로 전송 시키는 부분도 필요하다.
분류 | 내용 |
소프트웨어 개발 환경 | 타겟 보드용 소스 코드를 컴파일 하기 위한 환경, 즉 타겟 보드용 Tool-Chain 설치 및 설정 환경 |
하드웨어 개발 환경 | 타겟 보드용 바이너리 실행 코드를 타겟 보드 내 탑재된 플래시(Flash) 메모리에 저장하기 위한 환경 |
테스트 및 디버깅 개발 환경 | 타겟 보드의 하드웨어 적인 동작 상태를 점검(디버깅)하거나 타겟 보드의 동작 상태를 소프트웨어 적인 명령어로 지시하기 위한 환경 |
6.2 소프트웨어 개발 환경
임베디드 소프트웨어란 결국 타겟 보드를 구동하기 위해 필요한 소프트웨어
임베디드 소프트웨어는 타겟 보드 상에서 직접 소프트웨어를 개발하기가 불가능하기 때문에
타겟 보드용 소프트웨어 즉, 임베디드 소프트웨어는 결국 PC 상에서 개발해야 한다.
타겟 보드용 소스 코드를 컴파일 하기 위한 크로스 컴파일러(Cross Compiler)와 이 때 필요한 시스템 라이브러리(System Library), 관련 유틸리티들(BinUtils)를 한데 묶은 Tool-Chain
임베디드 소프트웨어 개발 환경중 먼저 해야할 것은 “타겟 보드용 Tool-Chain을 설치 및 설정”
하는 것이 “소프트웨어 개발 환경 구축” 이라 할 수 있다.
6.3 하드웨어 개발 환경
타겟 보드를 구동하기 위해 필요한 바이너리 실행 코드들을 타겟 보드에 장착된 플래시(Flash) 메모리에 저장(write)하기 위한 환경을 “하드웨어 개발 환경”이라고 한다.
이러한 하드웨어 개발 환경을 구축하기 위해서는 PC와 타겟 보드를 연결할 별도의 케이블과 타겟 보드의 플래시 메모리에 실행 코드를 저장하기 위한 별도의 전용 소프트웨어 프로그램이 필요.
일반적으로 ARM 기반의 타겟 보드에서는 ARM 프로세서에 지원하는 JTAG이라는 표준 기법을 통해 하드웨어 개발 환경을 구축
즉, PC에 있는 25핀 병렬(Parallel) 포트를 통해 별도의 JTAG Dongle 케이블과 타겟 보드를 연결하여
공개되어 있는 JTAG 소프트웨어(대표적 jflash)를 이용해 타겟 보드용 실행 코드를 타겟 보드 플래시 메모리에 저장하는 방법.
여기서는 ISP(In-System Programming)라는 별도의 방법을 제공.
6.4 테스트 및 디버깅 개발 환경
임베디드 소프트웨어를 타겟 보드 플래시 메모리에 탑재하여 동작 상태를 점검하면서 타겟 보드를
디버깅할 때에는 오실로스코프(Oscilloscope)라는 계측기를 사용하여 각 부품들의 신호 출력을 직접 확인.
칩 내부적인 하드웨어 동작 상태는 JTAG를 이용해 점검 및 확인.
JTAG가 지원되는 칩들은 칩 내부에 있는 Boundary Scan Cell을 별도의 JTAG 장비를 통해 스캐닝하면서 칩 내부 상태를 점검해 볼 수 있다. 따라서 계측기를 사용할 수 없는 칩 내부 하드웨어 동작 상태 검증이 가능하다.
이런 이유로, 처음 타겟 보드가 나오면 이 JTAG를 통해 CPU와 주요 메모리 동작 상태를 가장 먼저 점검.
CPU와 메모리만 제대로 동작 된다면 이후부터는 PC 상에서 소프트웨어를 작성하여 타겟 보드로 전송한 후
소프트웨어 동작 상태를 계측기 등으로 확인해 가면서 보다 쉽게 디버깅이 가능.
소프트웨어 동작 상태는 보통 PC에 있는 직렬(Serial) 포트를 별도의 케이블로 타겟 보드와 연결한 후 하이퍼터미널 같은 가상 시리얼 통신 에뮬레이터 프로그램을 통해 확인
타겟 보드는 PC와 달리 모니터와 키보드, 마우스 등의 표준 입출력 하드웨어가 없기 때문에
타겟 보드에 동작 상태 검증을 위한 사용자 명령어(Command)를 입력하거나 결과 확인을 할 방법이 없다.
이 때 시리얼 케이블 연결과 가상 시리얼 통신 에뮬레이터를 사용하면 상태 점검을 확인할 수 있다.
'Embedded Linux' 카테고리의 다른 글
임베디드 리눅스 개발 환경 <2> HW 개발 환경의 사본 (0) | 2015.12.21 |
---|---|
임베디드 리눅스 개발 환경 <1> SW 개발 환경 (0) | 2015.12.21 |
임베디드 리눅스 구성요소(BSP) (0) | 2015.12.21 |
임베디드 플랫폼<3> 개발 환경 (0) | 2015.12.21 |
임베디드 플랫폼<2> 운영체제 (0) | 2015.12.21 |