티스토리 뷰

목차

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


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


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

    - 계획중인 시스템의 용도

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

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

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


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