펌웨어 구조 설계하기
부트로더 기능 분류와 공통요소 추출 방법
- 유부트 기본으로 이해하면 쉽게 이해 가능
- 유 부트 디렉토리 구조는 리눅스 디렉토리 구조와유사
부트로더 디렉토리 구조
- 타겟에 맞게 수정해야함
- 최상위 유부트 : makefile, board.cfg 등 주요 파일로 모든 유부트 빌드 동작 실행
- arch : 아키텍처별로 서로다른 디렉토리를 구성, 각 프로세서 아키텍처에 따른 소스 구성하는 디렉토리
- board : 각 제조사별 보드 관련 소스를 구현하는 디렉토리
- common : 유부트에서 공통으로 사용하는 소스 구현한 디렉토리, 유부트 명령어, 환경변수등 소스 구현
- driver : gpio, i2c, pci, serial, sound, usb와 같이 외부장치의 드라이버 소스 제공
- fs : fat, yaffs2와 같이 u
개발 보드에 대한 환결설정 내용은?
라즈베리 파이의 경우
- 기본 환경 설정을 defconfig 파일로 제공 -> 원하는 설정 변경 가능
단위 sw 모듈 설계하기
오픈소스 부터로더에 기능 수정이나 추가 방법
- 원하는 기능에따라 수정 부분, 추가 부분이 상황에 따라 다름
특정 하드웨어 개발하는 경우
- 수정을 위한 하드웨어 동작 관련 디렉토리 위주로 보면
- 라즈베리파이는 브로드컴사의 bcm.
아키텍처 디렉토리와 소스
- 이에 대해 알아야함
- 아크 디렉토리의 암에 대해 살펴보자
타겟보드 디렉토리
- 타겟에 따라 다르지만 공통적으로 가지는 걸보자
- 보드 디렉토리 > 제조사 디렉토리 > 보드명 디렉토리
부트로더 명령어는 어디에?
- uboot 디렉토리 > cmd 디렉토리 > 부트로더 명령어
- 새 명령어 추가시 cmd 디렉토리에 추가
부트로더에서 하드웨어 제어 방법
1. 디바이스들의 물리적 주소로 직접 접근하여 제어
- 물리적 주소를 알아야함 -> SoC에 대한 데이터 시트 참고
2. 부트로더에서 제공하는 함수들을 이용하여 제어
- 어떤 함수가 있는지 알아야함
cmd 디렉토리서 hello.c 작성
- do_hello 함수
- U_BOOT_CMD 정의하여 hello 가 입력시 do_hello 함수 호출하도록 정의
kconfig 파일 수정
- 메뉴 컨피그에서 사용여부 고를수 있도록 설정
makefile 수정
- 메뉴컨피그에서 사용 설정시 빌드 과정에서 포함하도록 hello.o 추가
부트로더에서 헬로 명령어 사용
1. 유부트 소스 코드를 파이에 맞게 설정
2. 부트로더에 새 명령어 추가
유부트 소스 코드 파이에 맞게 설정
1. 유부트 소스 받기
git clone git://git.denx.de/u-boot.git
2. uboot 소스에서 파이 관련 소스 분석
- 각 디렉토리는 고유한 목적 가짐. 각 디렉토리들을 타겟에 맞게 수정해야함
- makefile : 소프트웨어 빌드시. 컴파일 과정과 소스파일 관계 정의
- 타겟에 맞는 메이크파일을 찾아서 실행
- defconfig (default configuration) 찾기 : find ./ -name defconfig
- pi3의 defconfig
3. 유부트 소스에서 파이3 부트로더 관련 환경 설정
새 명령어 만들기
- cmd 디렉토리에 새 추가 할 명령어 작성
- hello 입력시 hello ncs 출력 함수
kconfig 파일 수정
-kconfig : 부트로더 컴파일시 설정할 항목들을 서술한 파일
makefile 수정
- menuconfig에서 빌드 가능하도록 설정하기
menuconfig로 명령어 추가
- make menuconfig 명령어로 kconfig에서 추가한 명령어 설정
- 커멘드 라인 인터페이스 > 헬로 펌웨어 커맨드 설정 후 저장
=> 부트로더에서 핼로 명령어 사용가능해짐
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
임베디드 SW 엔지니어링 - 6 펌웨어 구현 (1) | 2020.05.27 |
---|---|
임베디드 SW 엔지니어링 - 5 펌웨어 구현 환경 구축 (0) | 2020.05.25 |
임베디드 SW 엔지니어링 - 3 펌웨어 분석 (0) | 2020.05.25 |
임베디드 SW 엔지니어링 - 2 하드웨어 분석 (0) | 2020.05.24 |
임베디드 SW 엔지니어링 - 1 임베디드 시스템 개요 (0) | 2020.05.24 |