Run if you want it
300x250

Embedded System/Bootloader 3

U-boot command

U-boot가 부팅하고 나면 커널 부팅 외에도 다양한 service를 제공한다. 이를 CLI기반으로 command를 통해 실행할 수 있다. Kernel booting 관련 command U-boot에서 kernel 부팅 시 'bootargs' 라는 변수의 값 전달하여 linux kernel 부팅 Ex) CONFIG_BOOTARGS="console=ttyAMA0,115200n8 rootfstype=ramfs rdinit=/linuxrc root=/dev/ram0 rw rootwait" U-boot 부팅 관련 variable: u-boot에서 부팅 시, image들에 대한 memory 위치 정보를 하기 table의 변수를 통해 제공 ex) fdt_addr_r은 fdt가 load될 RAM 위치를 제공하고, f..

U-Boot Sequence 및 구조 분석

u-boot의 entry point는 ENTRY(_start)로 기재한 것처럼 start.S파일의 _start이다. 해당 시퀀스에서는 reset을 통해, vector table을 세팅하고(세팅 전 boot params 저장), lowlevel_init 등을 수행하고 _main으로 jump. _main는 crt0.S에 작성되어 있는데 crt0.S의 목적은 C언어로 작성된 프로그램의 메인 함수를 호출하기 전에 필요한 초기화를 수행하는 루틴의 집합(crt == c runtime) 크게 board_init_f(), relocate_code(), board_init_r()로 나뉘어 수행한다. board_init_f() board_init_f() 호출 전에 stack address 및 gd(global data)에..

Bootloader(U-Boot) Overview

개요 전원 인가 시, 내부 ROM이 실행되어 Operation Mode에 맞게 Bootloader를 sram에 loading하고 실행되어 cpu 및 memory, hw 초기화 등을 수행하고 OS를 DRAM에 load하고 제어권을 넘기는 프로그램. U-boot 임베디드 장치에서 장치의 운영 체제 커널을 부팅하기 위한 지침을 패키징하는 데 사용되는 오픈 소스 기본 bootloader. ARM processor 기반 & 임베디드 Linux 시스템 경우 주로 u-boot를 사용 u-boot를 기반으로 자신의 system or board에 맞게 porting을 진행 directory 구성 arch: 주로 architecture에 dependency가 있는 code, start.S 코드가 위치 board: 보드 관..

728x90