티스토리 뷰
목차
임베디드 리눅스 개발, 타겟 시스템 만들기 (교차개발 환경, 프로그램)
임베디드 리눅스 교차개발 환경 구축
임베디드 리눅스 프로세서의 선정
- 계획중인 시스템의 용도
- 시스템의 크기 – 휴대용 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 프로세스 구성
: 커널 초기화 시 읽어들이고, 실행될 프로그램을 기술
- 타겟 시스템의 최종용도로 사용할 응용 프로그램 탑재
임베디드 리눅스 개발, 타겟 시스템 만들기 (교차개발 환경, 프로그램)