본문 바로가기
C++ 200제/코딩 IT 정보

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

by vicddory 2017. 1. 28.

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


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


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

- 계획중인 시스템의 용도

- 시스템의 크기 – 휴대용 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 프로세스 구성

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

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


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

댓글