임베디드 시스템 개발
- PC랑 달리 용도가 정해지고, 가격, 전력을 고려해서 HW와 SW를 제한해야 함.
- 호스트 PC에서 타겟 디바이스에 맞게 컴파일 후 올려서 동작 시킨다
- Host PC에서 하는 일 : 개발 툴(교차 컴파일러, 디버거 등), 시뮬레이션을 위한 타겟 장치 시뮬레이터 등
- 부트로더 개발 : 타겟 장치에 전원 인가시 부팅 롬에서 가장 먼저 실행. HW 초기화, 커널 로딩, JTAG 인터페이스로 설치
- 커널과 파일 시스템 : 호스트 PC의 개발 환경에서 만듬, 이미지 형태로 부트롬이나 다른 곳에 저장.
- 임베디드 응용프로그램 : 커널과 파일 시스템위에서 동작.
부트로더
- HW 초기화, OS 커널 메모리로 로드하는 펌웨어
- LILO Linux LOader : 특정 파일시스템에 의존 x, 최대 16개 이미지 시동시 선택 가능, MBR이나 파티션 부트섹터에 위치
- GRUB GNU GRUB : GNU의 부트로더, 동적으로 커널 인자 조정 가능, 다양한 실행 파일 지원, 명령줄 인터페이스 제공
- BLOB BootLoader OBject : 선택 부팅 가능, MBR에서 동작하는 다른 부트로더와는 달리 플레시 메모리 0블록에서 동작
- U-BootUniversal Bootloader : PPC와 ARM 기반의 임베디드 부트로더, ARM, x86, MIPS 등 CPU 지원, 오픈소스
- NTLDR NT Loader : 윈도우 NT 시동 부트로더, 하드디스크 이외의 USB 플래시 드라이브 등 휴대용 장치서도 실행 가능
![]() |
![]() |
![]() |
![]() |
U-Boot Universal Bootloader
- 다양한 시스템에서 사용가능한 부트로더로 시리얼, 네트워크, USB, Flash 등 지원
- 다양한 아키텍처와 디바이스를 지원하므로 타겟 보드에 맞게 포팅 필요
- 동작 흐름 : Start.s 시작
* Start.s : CPU 초기화(인터럽트 마스크, 클럭 설정), DRAM 초기화, 플래시 메모리 코드를 DRAM으로 다른 초기화작업
U-boot 구성
- /api : API 코드, 예제
- /arch : 아키텍처 별 code, lib, 시작코드 start.S
- /common : 아키텍처에 독립적인 파일과 명령어
- /drivers : 외부 장치 드라이버들
- /fs : uboot의 파일 시스템 관련
- /include : 헤더 파일
- /net : network 관련
- build.sh : 빌드 스크립트
- Makefile : 빌드 설정 Makefile
ref : https://kergoo.wordpress.com/2017/04/09/u-boot-porting-guide/
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
조금씩 임베디드 - 8. ARM 어셈블리어 (0) | 2022.08.17 |
---|---|
조금씩 임베디드 - 7. C언어, 어셈블리어 최적화 기법 (0) | 2022.08.17 |
조금씩 임베디드 - 5. 주변장치 2 (0) | 2022.06.22 |
조금씩 임베디드 - 4. 주변장치 1 (0) | 2022.06.19 |
조금씩 임베디드 - 3. 임베디드 프로세서 2 (0) | 2022.06.19 |