2.1 커널 포팅
1. 커널 포팅
1) 커널 포팅 : 커널을 특정 타겟 보드의 하드웨어 환경 및 특정 응용에 맞게 수정하는 과정
2) 커널 포팅 과정
① 커널 소스 풀기
- 오리지널 커널을 사이트에서 다운로드 하여 압축 해제
② 커널 패치
- 개발하는 시스템 CPU Architecture 에 맞는 core 패치 적용
- 개발 보드에 맞는 board 패치 적용
③ 커널 Configuration
- 타겟 보드에 포함된 구성요소와 기능 지원 옵션 선택
- make xconfig 또는 make menuconfig 명령어 사용
④ 커널 컴파일
- make 툴 이용하여 커널 빌드
- make zimage 명령어 사용하여 zimage 생성
⑤ tftp 전송
- tftp zImage kernel 명령 사용
- JTAG 혹은 직렬 통신으로 사용 가능
⑥ 플래시 퓨징
- 보드 RAM에 저장된 커널 이미지를 Flash Memory에 저장
2. 커널 빌드 과정 명령어
① 커널 구성 요소 간 의존관계 설정 제거 : make mrproper
② 커널 구성 : make config
③ 선택한 구성 간 의존 관계 확인 : make dep
④ 오브젝트 파일 및 이전 빌드 임시 생성 파일 제거 : make clean
⑤ 실행 가능한 커널 이미지 빌드 : make bzimage
⑥ 모듈로 선택한 항목에 대한 빌드 : make module
⑦ 커널 이미지 및 모듈 지정 위치에 설치 : make install
2.2 부트로더
1. 부트로더
1) 부트로더 : 커널 또는 OS를 메모리에 올리는 과정에서 하드웨어를 초기화하고 커널을 압축해제 후 메모리에 적재, 제어를 OS에 넘기는 과정을 수행하는 프로그램
2) 부트로더의 종류
- LILO, GRUB : 리눅스 부트로더로 주로 대형서버, PC등에 사용
- U-boot : 주로 ARM에 사용
- BLOB : Intel 사의 Xscale Core 기반 CPU 부트로더
- Eboot : Windows CE 환경의 부트로더
3) 부트로더의 기능
- 하드웨어 초기화 : CPU, Speed, 메모리 타이밍, 인터럽트, UART, GPIO 등 장치 초기화
- Flash Device 초기화
- 네트워크 디바이스 초기화
- Root File System 이미지 적재
- 커널을 메모리에 적재하고 실행 주소를 커널 시작 주소로 점프
- 부트 옵션 설정을 위한 사용자 인터페이스
4) 부트로더를 대상 제품에 탑재하는 방법
- 롬 라이터를 이용하여 ROM에 기록 후 부착
ㄴ EEPROM 사용
- ICE 장비를 이용하여 플래시 탑재
ㄴ JTAG 포트를 통해 Target 시스템에 퓨징
- JTAG 동글을 이용
- Ethernet 이용한 TFTP 포팅
ㄴ 부트로더가 탑재가 되어 있어야 가능
2.3 교차개발 환경
1. 교차 개발 환경 도구
1) 교차 개발 환경 필수 구성 요소
① Host 컴퓨터 : 임베디드 시스템 개발을 위한 컴퓨터
② 타겟 보드 : 실제 임베디드 시스템이 설치되고 실행되는 보드
③ Tool Chain : 소프트웨어 개발을 위해 공통적으로 요구되는 개발 도구 집합
- Compiler : 컴파일 및 링킹 수행
ㄴ ex) Cross Compiler
- Library : 링킹 과정에 필요한 라이브러리
ㄴ ex) GNU C library
- Utility : 소스 편집, 바이너리 후처리
ㄴ ex) Binutils
④ BSP (Board Support Package) : 시스템 보드의 포팅 및 설정 가능한 툴
- 부트로더
- OAL : OEM Adaptation Layer의 약어로 하드웨어와 소프트웨어를 연결해주는 HAL (Hardware Abstraction Layer) 계층
- Device Driver : 주변 장치 초기화 및 제어를 위한 드라이버
- Configuration : 환경변수 및 레지스터 설정을 위한 초기 설정 파일
2. 교차 개발 환경이 필요한 이유
- 개발 초기에는 타깃 하드웨어에 아무런 프로그램도 설치되어 있지 않다
- 일반적으로 타깃 시스템 하드웨어 구성이 컴파일 하기에 적합하지 않다
- 타깃 시스템은 대부분 소형 시스템 혹은 특수 목적용으로 설계되어 자원 제약성이 크다. 모니터와 키보드도 없는 시스템이 대부분이다.
'임베디드 기사 > 실기 - 임베디드 펌웨어' 카테고리의 다른 글
| 임베디드 펌웨어 실기 용어 정리 (0) | 2023.10.07 |
|---|---|
| 3. 디바이스 드라이버 작성하기 (0) | 2023.09.25 |
| 1. 펌웨어 설계, 구현 및 테스팅 하기 (0) | 2023.09.16 |