개발 환경
임베디드시스템 개발 환경 호스트 시스템, 타겟 시스템, 그리고 백엔드로 구성 호스트 시스템에서 타겟 시스템을 위한 부트로더, 커널 이미지, 응용 소프트웨어 등을 개발하고, 이를 케이블 등을 통해 타겟 시스템으로 다운로드하여 사용
호스트 시스템 임베디드SW를 개발하기 위한 프로그래밍 환경을 제공하는 시스템 보통 개인용 컴퓨터를 호스트 시스템으로 사용 리눅스 커널 2.6 버전을 포함하는 페도라 4를 호스트 시스템의 운영체제로 사용 툴체인(toolchain): 타겟 시스템용 시스템 및 응용 소프트 개발에 필요한 모든 환경을 통칭
타겟 시스템 개발된 임베디드SW를 테스트하고 구동할 수 있는 시스템 PXA270을 탑재한 ㈜하이버스의 X-HYPER270-TKU를 사용
백엔드 호스트 시스템과 타겟 시스템간에 통신하기 위한 매개체 직렬 포트, 병렬 포트, LAN 등 직렬 포트는 저속 통신 채널을 제공하며, 병렬 포트는 JTAG을 통해 플래시에 퓨징할 수 있는 통신 채널을 제공하고, LAN은 고속 통신 채널을 제공
X-HYPER270-TKU 보드 PXA270 프로세서, 메모리 및 다양한 주변 장치로 구성 내부 메모리로 32MB의 NOR 플래시와 128MB의 SDRAM을 지원 외부 메모리로 64MB NAND 플래시를 제공 또한 6.4 인치의 TFT LCD, 직렬 포트, CMOS 카메라 인터페이스, USB 및 PCMCIA 슬롯, 이더넷, 오디오 등 다양한 내부 및 외부 주변 장치 제공
툴체인 설치 일반적으로 호스트 시스템과 타겟 시스템의 플랫폼이 다르기 때문에 툴체인이 필요 x86 계열에서 개발한 프로그램을 ARM 계열에서 실행하려면 교차 컴파일(cross compile) 필요 툴체인은 교차 컴파일러 및 각종 관련 라이브러리를 의미 어셈블러, 링커, C 컴파일러, C 라이브러리 등으로 구성 툴체인 설치 binutils-2.15.tar.gz gcc-3.4.3.tar.gz glibc-2.3.2.tar.gz glibc-linuxthreads-2.3.2.tar.gz
/usr/local/hybus 디렉토리에 툴체인 설치 실습 3-1 호스트 시스템에 툴체인 설치 /usr/local/hybus 디렉토리에 툴체인 설치 ⑧ ① ② ③ ④ ⑤ ⑥ ⑦ ⑨ ⑩
/root/.bash_profile 파일 염 PATH 환경 변수에 /usr/local/hybus/toolchain/bin 추가 실습 3-2 툴체인 경로 설정 /root/.bash_profile 파일 염 PATH 환경 변수에 /usr/local/hybus/toolchain/bin 추가 source 명령 실행 ① ② ③
실습 3-3 호스트 시스템에서 hello.c 프로그램 컴파일 및 실행 mkdir ~/embed/ex/04; cd ~/embed/ex/04 실행 hello.c 작성 hello.c 프로그램을 일반 컴파일러와 교차 컴파일러로 컴파일 생성된 실행 파일의 실행 결과 관찰 #include <stdio.h> int main() { printf ("Hello, world!\n") return 0; } ① ② ③ ④ ⑤ ⑥ ⑦
미니컴 콘솔 에뮬레이터와 직렬 포트 임베디드시스템의 경우 타겟 보드에서 발생하는 진행 상황을 호스트 시스템에서 직렬 포트를 통하여 모니터링할 수 있는 콘솔 에뮬레이터를 사용 리눅스 운영체제의 경우 미니컴을 사용하며 윈도우 운영체제일 경우는 하이퍼터미널을 주로 사용 데스크탑 컴퓨터는 보통 2개의 직렬 포트가 있으며 COM 포트 혹은 표준 직렬 포트라고 함 COM1 포트는 /dev/ttyS0, COM2 포트는 /dev/ttyS1 장치에 대응
실습 3-4 미니컴 설치 ① ② ③ ④ ⑤ ⑥
미니컴 구성 화면에서 화살표 키를 사용해 세 번째의 Serial port setup 메뉴 항목 선택 실습 3-4 미니컴 환경 설정 호스트 시스템의 미니컴을 설정 모드로 실행 미니컴 구성 화면에서 화살표 키를 사용해 세 번째의 Serial port setup 메뉴 항목 선택
직렬 포트 설정 화면의 각 항목을 다음과 같이 설정 실습 3-4 미니컴 환경 설정 직렬 포트 설정 화면의 각 항목을 다음과 같이 설정 - A 키를 누르면 커서가 /dev/modem 뒤로 감 → Serial Device 항목값을 /dev/ttyS0으로 설정하고 <Enter> 키를 누름 - B 키를 입력하면 커서가 /var/lock 뒤로 감 → 이미 /var/lock로 설정되어 더 필요한 작업 없음 - E 키를 누름 → 속도, 데이터 비트, 패리티 비트, 정지 비트를 보여주는 미니컴 통신 매개변수 화면이 나타남(X-HYPER270-TKU의 경우 속도: 115200, 데이터 비트: 8, 패리트 비트: No, 정지 비트: 1) → 키를 눌러 115200 8N1로 설정하고 I 키를 누름
Save setup as dfl 항목을 선택한 후 [Enter] 키를 눌러 설정 값을 저장 실습 3-4 미니컴 환경 설정 F 키를 눌러서 Hardware Flow Control의 값을 No로 바꿈 [Esc] 키를 한 번 누름 Save setup as dfl 항목을 선택한 후 [Enter] 키를 눌러 설정 값을 저장 Exit 항목을 선택 후 [Enter] 키를 누름 → 환경 설정이 끝나고 미니컴 창이 나타남 → Exit from Minicom 항목 선택 후 [Enter] 키를 누름
미니컴의 실행 minicom 명령어 입력 후 [Enter] 미니컴 화면이 나타난 후 타겟 시스템의 전원을 인가하거나 리셋 버튼을 누르면 타겟 시스템의 부팅 과정이 미니컴 화면에 보임 부팅 과정이 나타나지 않으면 미니컴 환경 설정이나 케이블 연결 등을 점검 미니컴을 정상적으로 설정했음에도 동작하지 않을 경우 lock 파일의 문제일 수 있고 이 때 /var/lock 디렉토리 아래에 LCK.tty라는 종류의 파일을 강제로 제거한 후 다시 시작 부팅 과정을 관찰하면 “Autoboot in progress, press any key to stop …”이라는 메시지가 보이며 부팅 과정을 잠시 멈출 때 아무 키나 입력하면 수동 부팅이 시작되며, hybus>라는 부트로더 프롬프트(bootloader prompt)가 나타나 부트로더 명령어를 기다림. 키를 입력하지 않고 잠시 기다리면 자동 부팅되며, 부팅이 끝나면 타겟 보드의 LCD에 X 화면이 나타나며 [Enter] 키를 치면 타겟 시스템의 루트 계정 쉘 프롬프트가 나타남
타겟 시스템의 수동 부팅 타겟 시스템의 자동 부팅
미니컴 명령어
직렬통신을 이용한 이미지 전송 ZMODEM을 사용해 호스트 시스템과 타겟 시스템 사이의 직렬 통신이 가능
ARM용 실행 파일 hello-arm([실습 4-3]에서 툴체인을 이용해 생성)을 /embed/ex/05 디렉토리로 복사 실습 3-5 ZMODEM을 이용한 이미지 전송 ARM용 실행 파일 hello-arm([실습 4-3]에서 툴체인을 이용해 생성)을 /embed/ex/05 디렉토리로 복사 미니컴 실행 타겟 시스템의 전원을 켜고 자동 부팅 [Ctrl] + [A]와 [Z] 키 입력 → 미니컴 도움말 화면에서 [S] 키 입력 ① ② ③ ④
실습 3-5 ZMODEM을 이용한 이미지 전송 ZMODEM을 선택 후 [Enter] 키 입력 ARM용 실행 파일이 있는 /embed/ex/05 디렉토리로 이동. 디렉토리 이동은 메뉴에서 []와 [] 키를 사용해 원하는 디렉토리로 커서를 옮긴 후 [Space] 키를 두 번 입력
전송할 파일로 이동 후 [Space] 키를 한 번 눌러 파일 선택 [Enter] 키를 눌러 선택한 파일 전송 실습 3-5 ZMODEM을 이용한 이미지 전송 전송할 파일로 이동 후 [Space] 키를 한 번 눌러 파일 선택 [Enter] 키를 눌러 선택한 파일 전송 완료 후 아무 키나 눌러 타겟 시스템의 프롬프트가 나타나면 전송 받은 파일을 타겟 시스템에서 실행 ① ②