임베디드 리눅스 개발, 타겟 시스템 만들기 (교차개발 환경, 프로그램)

임베디드 리눅스 개발, 타겟 시스템 만들기 (교차개발 환경, 프로그램)


임베디드 리눅스 교차개발 환경 구축


임베디드 리눅스 프로세서의 선정

- 계획중인 시스템의 용도

- 시스템의 크기 – 휴대용 or 설치용 장비

- 비용 고려하여 선정


운영체제의 선정

- CPU의 성능 – 32bit or 64bit?

- 하드웨어가 MMU를 지원하는가?

- 메모리와 보조기억장치

- 네트워크 환경 사용 유무


임베디드 리눅스 호스트 시스템에 교차 개발 환경 구축

- binutils

  : as, ar, ld, nm, objcopy, objdump, size, strings, strip, add2line,...

- 컴파일러(gcc), 디버거(gdb)

- 라이브러리(glibc, ulibc, newlib, diet libc ... )

임베디드 리눅스 부트로더


부트로더 포팅


JTAG 등을 사용해 부트로더를 타켓 시스템의 플래시 메모리에 저장

부트로더 기능

- 메모리, 하드웨어 초기화

- 커널 로딩과 시작


임베디드 리눅스[ARM Embedded Linux 프로그래밍]


많은 부트로더가 존재

플랫폼에 알맞은 부트로더를 사용(CPU vender에서 소스 제공)

- LILO, GRUB: x86에서 널리 사용

- ARMBOOT, BLOB, bootldr: StongARM기반의 iPAQ등에서 사용

- PPCBOOT: PowerPC 기반에서 널리 사용

- RedBoot: ARM, PPC, MIPS, SH, x86등의 다양한 플랫폼 지원

- ANGEL: 아사벳 보드용


임베디드 리눅스 개발 시스템[ARM Embedded Linux 프로그래밍]


임베디드 리눅스 커널 포팅


리눅스 커널 포팅


커널에 대한 전반적인 이해 필요, 커널 부팅 과정 이해

커널 패치

보드마다 다른 메모리맵, 인터럽트 I/O 채널, 플래시 파티션등 수정

- arch, include/asm, drivers 디렉토리

- 타겟 메모리 맵

- 커널 부팅 과정 상의 H/W 관련 루틴 존재

- 커널 내 보드지원과 관련된 하드코딩부분 변경

Makefile 수정 및 컴파일


디바이스 드라이버, 파일 시스템 포팅

디바이스 드라이버 포팅


표준 장치 : 커널 설정만으로 해결

새로운 장치 : 오픈 소스를 최대한 활용


임베디드 리눅스 루트 파일 시스템 포팅

- 커널이 부팅, 복구, 회복하는데 필요한 파일이나 설정 등을 담고 있는 파일 시스템

- 일반적으로 커널이 부팅할 때 가장 마지막에 루트 파일 시스템을 마 운트하여 부팅을 완료

- 운영체제가 동작하는데 필요한 최소한의 디렉토리 구조와 유틸리티 를 포함하고 있음

- 시스템 동작에 필요한 최소의 디렉토리 구조만 유지

- 디렉토리 레이아웃 작성 및 필요한 파일 채우기

- 대부분 타겟용 루트 파일 시스템이 존재하므로 수정하여 사용


응용 프로그램 개발 및 통합


임베디드 리눅스 개발, 타겟 시스템 만들기[ARM Embedded Linux 프로그래밍]


응용 프로그램 개발


임베디드 리눅스 윈도우 시스템 포팅

- Qt/Embedded

- PicoGUI

- Microwindow

- TinyX

- GTK


시스템 통합 및 패키징

- 메모리 크기에 따른 구성

- /etc/inittab 프로세스 구성

  : 커널 초기화 시 읽어들이고, 실행될 프로그램을 기술

- 타겟 시스템의 최종용도로 사용할 응용 프로그램 탑재


임베디드 리눅스 개발, 타겟 시스템 만들기 (교차개발 환경, 프로그램)


댓글

Designed by JB FACTORY