SlideShare une entreprise Scribd logo
1  sur  24
U-boot 실행  Sequence 망고100 보드로 놀아보자-8
cpu/s5pc1xx/start.s – Jump vector table http://www.mangoboard.com ARM 이 exception 이 걸리면 각 예외에 따라 무조건 정해진 해당번지로 jump Exception vector의 위치를 word(4byte)로 정의
cpu/s5pc1xx/start.s – startup code (1) http://www.mangoboard.com 각 보드에 대한 config.mk 는 board/XXXXX/config.mk 에선언되어 있다. 여기서는 TEXT_BASE = 0x33F80000 _start 라는위치로 __armboot_start 을 설정
cpu/s5pc1xx/start.s – SVC32 mode http://www.mangoboard.com CPSR 을 R0로 읽어온다. R0  := R0 & 0xFFFFFFE0 (하위 5 비트의 mode 비트를  clear 함) R0 := R0 |  0x11010011 (supervisor 모드로 변경) R0 의값을 CPSR로 로딩
cpu/s5pc1xxx/start.s – cpu_init_crit http://www.mangoboard.com CP15 : system control  processor ,[object Object]
 MCR, MRC 명령으로 접근 가능OM[0:4] Pin 정보를 읽어서 information REG 에 저장
cpu/s5pc1xxx/start.s – Boot mode http://www.mangoboard.com Info  regster에서 정보를 읽어서  Nand boot, mmcsd_boot로 분기
Lowlevel_init ? http://www.mangoboard.com Cpu/s5pc1xx/start.s에서  call Watchdog,Clock, UART, Nand 을 초기화
cpu/s5pc1xx/start.s – setup the stack http://www.mangoboard.com Stack address 를 지정하였으므로 드디어 RAM에서 코드가 동작할 수 있는 조건이 마련되었다. Stack pointer의 최상위 3 개 word를 비워두는 것은 abort exception 발생하면, exception 발생하기 직전 PC 와 CPRS를 저장하여 debugging 정보로 이용하기 위해서이다. Global 변수 들 0 으로 초기화  여기서 RAM의 _start_armboot 로 brach 하여 RAM에 있는 코드가 동작하게 된다. Lib_arm/board.c 의 Start_armboot() 로 JUMP
cpu/s5pc1xxx/start.s – setup the stack 후 memory map http://www.mangoboard.com 0x2FFFFFFF .armboot_end + 512k .armboot_end + 512k- 12 Stack(512k) .armboot_end armboot 0x2fe00000 .armboot_end U-boot code area 0x20000000 0x00000000 SDRAM FLASH
U-boot  초기화  Diagram http://www.mangoboard.com Cpu/s5pc1xx/start.s Cpu/s5pc1xx/s5pc100/cpu_init.S _start 메모리 제어기 설정 Reset handler 분기 SVC32 mode로 전환 불필요한 HW disable Interrupt disable System clock 설정 MMU/Cache disable Memsetup()  함수로 분기 Lib_arm/board.c Start_armboot() 프로그램 재배치 U-boot 복사 및 PC 값 변경 Stack 설정 common/main.c C 변수 설정 main_loop()
U-Boot 실행 순서 개요 [ASM] startup코드 (cpu/s5pc1xx/start.S) CPU초기화, SDRAM 초기화,  SDRAM으로 재배치, start_armboot()호출 [C]코드 start_armboot() (lib_arm/board.c) NAND 플래시, 시리얼, 네트워크 카드 등 초기화 main_loop() 호출 main_loop() (common/main.c) 명령어 처리 루틴, run_command() 자동 부팅
Lib_arm/board.c– start_armboot() http://www.mangoboard.com
Lib_arm/board.c– start_armboot() http://www.mangoboard.com Lib_arm/board.c Mem_malloc_init() Lib_arm/board.c Env_relocate() Common/env_common.c Common/devices.c Devices_init) Jumptable_r) Common/exports.c Concole_init_r() Common/console.c Enable_interrupt() Cpu/s5pc1xxx/interrupts.c Main_loop() common/main.c
Main_loop() http://www.mangoboard.com
Run_command() http://www.mangoboard.com Command의 인자를  추출... Command  list 에서 Command 와 일치하는 것을  Search Match된 명령을 처리할 handle 함수 포인터를 return Command를 실행하기 위해  함수를 호출함
U_BOOT_CMD http://www.mangoboard.com Example
U_BOOT_CMD http://www.mangoboard.com _u_boot_cmd_start OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") /*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/ OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS { __u_boot_cmd_start = .; .u_boot_cmd : { *(.u_boot_cmd) } __u_boot_cmd_end = .; } Uboot_cmd_table …... _u_boot_cmd_end
Boot_os_Fcn http://www.mangoboard.com Lib_arm/armlinux.c
do_bootm() - 1 http://www.mangoboard.com Default  Load address  =0x20000000 Bootm 20008000 :  loading 할 address 를 받아  command 로 받는다. zImage의 헤더를 읽어온다. Pointer를 header에서 실제 압축된 커널을 가르킨다.
do_bootm() - 2 http://www.mangoboard.com LINUX의 경우는 IH_TYPE_KERNEL Kernel + ramdisk 이미지
do_bootm() - 3 http://www.mangoboard.com 압축된 커널을 압축 해제한다. 압축이 풀리는 위치는 (void *)ntohl(hdr_ih_load)이다
do_bootm() - 4 http://www.mangoboard.com 드디어  Linux kernel 로 진입한다...!!!
do_bootm_linux() http://www.mangoboard.com Bootargs 를 가지고 온다 Kernel에게 이미지  entry poiboot_get_ramdisknt를 저장  Machin id를 가지고 온다 Ram disk가 있는지 없는지 확인

Contenu connexe

Tendances

Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
Houcheng Lin
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
Emertxe Information Technologies Pvt Ltd
 
Linux Porting to a Custom Board
Linux Porting to a Custom BoardLinux Porting to a Custom Board
Linux Porting to a Custom Board
Patrick Bellasi
 

Tendances (20)

Linux device drivers
Linux device drivers Linux device drivers
Linux device drivers
 
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
 
U-Boot Porting on New Hardware
U-Boot Porting on New HardwareU-Boot Porting on New Hardware
U-Boot Porting on New Hardware
 
Introduction to Modern U-Boot
Introduction to Modern U-BootIntroduction to Modern U-Boot
Introduction to Modern U-Boot
 
Introduction to yocto
Introduction to yoctoIntroduction to yocto
Introduction to yocto
 
Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0
 
Linux System Programming - File I/O
Linux System Programming - File I/O Linux System Programming - File I/O
Linux System Programming - File I/O
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
 
Linux-Internals-and-Networking
Linux-Internals-and-NetworkingLinux-Internals-and-Networking
Linux-Internals-and-Networking
 
Linux Internals - Part II
Linux Internals - Part IILinux Internals - Part II
Linux Internals - Part II
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
 
Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratch
 
Linux Porting
Linux PortingLinux Porting
Linux Porting
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 
Linux Porting to a Custom Board
Linux Porting to a Custom BoardLinux Porting to a Custom Board
Linux Porting to a Custom Board
 
Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)
 
Linux Kernel Tour
Linux Kernel TourLinux Kernel Tour
Linux Kernel Tour
 
Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
 
LCU13: An Introduction to ARM Trusted Firmware
LCU13: An Introduction to ARM Trusted FirmwareLCU13: An Introduction to ARM Trusted Firmware
LCU13: An Introduction to ARM Trusted Firmware
 

Similaire à 망고100 보드로 놀아보자 8

망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6
종인 전
 
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
Seongho Park
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324
종인 전
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012
Daum DNA
 

Similaire à 망고100 보드로 놀아보자 8 (20)

컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
 
TestBCD2018-1(answer)
TestBCD2018-1(answer)TestBCD2018-1(answer)
TestBCD2018-1(answer)
 
망고210 android fastboot nand write 방법
망고210 android fastboot nand write 방법망고210 android fastboot nand write 방법
망고210 android fastboot nand write 방법
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6
 
망고100 보드로 놀아보자 5
망고100 보드로 놀아보자 5망고100 보드로 놀아보자 5
망고100 보드로 놀아보자 5
 
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
 
[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들
 
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
 
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
 
PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation
 
TestBCD2016-1(Answer)
TestBCD2016-1(Answer)TestBCD2016-1(Answer)
TestBCD2016-1(Answer)
 
[드론] 펌웨어 분석 [2015.5.23]
[드론] 펌웨어 분석 [2015.5.23][드론] 펌웨어 분석 [2015.5.23]
[드론] 펌웨어 분석 [2015.5.23]
 
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02
 
Avr lecture1
Avr lecture1Avr lecture1
Avr lecture1
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012
 
05. timer.counter.pwm
05. timer.counter.pwm05. timer.counter.pwm
05. timer.counter.pwm
 

Plus de 종인 전

망고100 보드로 놀아보자 19
망고100 보드로 놀아보자 19망고100 보드로 놀아보자 19
망고100 보드로 놀아보자 19
종인 전
 
망고100 보드로 놀아보자 18
망고100 보드로 놀아보자 18망고100 보드로 놀아보자 18
망고100 보드로 놀아보자 18
종인 전
 
망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17
종인 전
 
망고100 보드로 놀아보자 16
망고100 보드로 놀아보자 16망고100 보드로 놀아보자 16
망고100 보드로 놀아보자 16
종인 전
 
망고100 보드로 놀아보자 15
망고100 보드로 놀아보자 15망고100 보드로 놀아보자 15
망고100 보드로 놀아보자 15
종인 전
 
망고100 보드로 놀아보자 12
망고100 보드로 놀아보자  12망고100 보드로 놀아보자  12
망고100 보드로 놀아보자 12
종인 전
 
Mango64 u boot 업데이트 하기
Mango64 u boot 업데이트 하기Mango64 u boot 업데이트 하기
Mango64 u boot 업데이트 하기
종인 전
 
망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9
종인 전
 
망고100 보드로 놀아보자 7
망고100 보드로 놀아보자 7망고100 보드로 놀아보자 7
망고100 보드로 놀아보자 7
종인 전
 
망고100 보드로 놀아보자 3
망고100 보드로 놀아보자 3망고100 보드로 놀아보자 3
망고100 보드로 놀아보자 3
종인 전
 

Plus de 종인 전 (20)

Quick start guide-mango-am335x
Quick start guide-mango-am335xQuick start guide-mango-am335x
Quick start guide-mango-am335x
 
망고210 매뉴얼 2010 12-30
망고210 매뉴얼 2010 12-30망고210 매뉴얼 2010 12-30
망고210 매뉴얼 2010 12-30
 
망고100 보드로 놀아보자 19
망고100 보드로 놀아보자 19망고100 보드로 놀아보자 19
망고100 보드로 놀아보자 19
 
망고100 보드로 놀아보자 18
망고100 보드로 놀아보자 18망고100 보드로 놀아보자 18
망고100 보드로 놀아보자 18
 
망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17
 
망고100 보드로 놀아보자 16
망고100 보드로 놀아보자 16망고100 보드로 놀아보자 16
망고100 보드로 놀아보자 16
 
망고100 보드로 놀아보자 15
망고100 보드로 놀아보자 15망고100 보드로 놀아보자 15
망고100 보드로 놀아보자 15
 
망고100 보드로 놀아보자 14
망고100 보드로 놀아보자 14망고100 보드로 놀아보자 14
망고100 보드로 놀아보자 14
 
망고100 보드로 놀아보자 13
망고100 보드로 놀아보자  13망고100 보드로 놀아보자  13
망고100 보드로 놀아보자 13
 
망고100 보드로 놀아보자 12
망고100 보드로 놀아보자  12망고100 보드로 놀아보자  12
망고100 보드로 놀아보자 12
 
망고100 보드로 놀아보자 11
망고100 보드로 놀아보자  11망고100 보드로 놀아보자  11
망고100 보드로 놀아보자 11
 
망고100 보드로 놀아보자 10
망고100 보드로 놀아보자 10망고100 보드로 놀아보자 10
망고100 보드로 놀아보자 10
 
Mango64 u boot 업데이트 하기
Mango64 u boot 업데이트 하기Mango64 u boot 업데이트 하기
Mango64 u boot 업데이트 하기
 
망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9
 
망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9
 
망고64(s3 c6410) 부팅모드
망고64(s3 c6410) 부팅모드망고64(s3 c6410) 부팅모드
망고64(s3 c6410) 부팅모드
 
망고64 부품도
망고64 부품도망고64 부품도
망고64 부품도
 
망고100 보드로 놀아보자 7
망고100 보드로 놀아보자 7망고100 보드로 놀아보자 7
망고100 보드로 놀아보자 7
 
망고100 보드로 놀아보자 4
망고100 보드로 놀아보자 4망고100 보드로 놀아보자 4
망고100 보드로 놀아보자 4
 
망고100 보드로 놀아보자 3
망고100 보드로 놀아보자 3망고100 보드로 놀아보자 3
망고100 보드로 놀아보자 3
 

망고100 보드로 놀아보자 8

  • 1. U-boot 실행 Sequence 망고100 보드로 놀아보자-8
  • 2. cpu/s5pc1xx/start.s – Jump vector table http://www.mangoboard.com ARM 이 exception 이 걸리면 각 예외에 따라 무조건 정해진 해당번지로 jump Exception vector의 위치를 word(4byte)로 정의
  • 3. cpu/s5pc1xx/start.s – startup code (1) http://www.mangoboard.com 각 보드에 대한 config.mk 는 board/XXXXX/config.mk 에선언되어 있다. 여기서는 TEXT_BASE = 0x33F80000 _start 라는위치로 __armboot_start 을 설정
  • 4. cpu/s5pc1xx/start.s – SVC32 mode http://www.mangoboard.com CPSR 을 R0로 읽어온다. R0 := R0 & 0xFFFFFFE0 (하위 5 비트의 mode 비트를 clear 함) R0 := R0 | 0x11010011 (supervisor 모드로 변경) R0 의값을 CPSR로 로딩
  • 5.
  • 6. MCR, MRC 명령으로 접근 가능OM[0:4] Pin 정보를 읽어서 information REG 에 저장
  • 7. cpu/s5pc1xxx/start.s – Boot mode http://www.mangoboard.com Info regster에서 정보를 읽어서 Nand boot, mmcsd_boot로 분기
  • 8. Lowlevel_init ? http://www.mangoboard.com Cpu/s5pc1xx/start.s에서 call Watchdog,Clock, UART, Nand 을 초기화
  • 9. cpu/s5pc1xx/start.s – setup the stack http://www.mangoboard.com Stack address 를 지정하였으므로 드디어 RAM에서 코드가 동작할 수 있는 조건이 마련되었다. Stack pointer의 최상위 3 개 word를 비워두는 것은 abort exception 발생하면, exception 발생하기 직전 PC 와 CPRS를 저장하여 debugging 정보로 이용하기 위해서이다. Global 변수 들 0 으로 초기화 여기서 RAM의 _start_armboot 로 brach 하여 RAM에 있는 코드가 동작하게 된다. Lib_arm/board.c 의 Start_armboot() 로 JUMP
  • 10. cpu/s5pc1xxx/start.s – setup the stack 후 memory map http://www.mangoboard.com 0x2FFFFFFF .armboot_end + 512k .armboot_end + 512k- 12 Stack(512k) .armboot_end armboot 0x2fe00000 .armboot_end U-boot code area 0x20000000 0x00000000 SDRAM FLASH
  • 11. U-boot 초기화 Diagram http://www.mangoboard.com Cpu/s5pc1xx/start.s Cpu/s5pc1xx/s5pc100/cpu_init.S _start 메모리 제어기 설정 Reset handler 분기 SVC32 mode로 전환 불필요한 HW disable Interrupt disable System clock 설정 MMU/Cache disable Memsetup() 함수로 분기 Lib_arm/board.c Start_armboot() 프로그램 재배치 U-boot 복사 및 PC 값 변경 Stack 설정 common/main.c C 변수 설정 main_loop()
  • 12. U-Boot 실행 순서 개요 [ASM] startup코드 (cpu/s5pc1xx/start.S) CPU초기화, SDRAM 초기화, SDRAM으로 재배치, start_armboot()호출 [C]코드 start_armboot() (lib_arm/board.c) NAND 플래시, 시리얼, 네트워크 카드 등 초기화 main_loop() 호출 main_loop() (common/main.c) 명령어 처리 루틴, run_command() 자동 부팅
  • 14. Lib_arm/board.c– start_armboot() http://www.mangoboard.com Lib_arm/board.c Mem_malloc_init() Lib_arm/board.c Env_relocate() Common/env_common.c Common/devices.c Devices_init) Jumptable_r) Common/exports.c Concole_init_r() Common/console.c Enable_interrupt() Cpu/s5pc1xxx/interrupts.c Main_loop() common/main.c
  • 16. Run_command() http://www.mangoboard.com Command의 인자를 추출... Command list 에서 Command 와 일치하는 것을 Search Match된 명령을 처리할 handle 함수 포인터를 return Command를 실행하기 위해 함수를 호출함
  • 18. U_BOOT_CMD http://www.mangoboard.com _u_boot_cmd_start OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") /*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/ OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS { __u_boot_cmd_start = .; .u_boot_cmd : { *(.u_boot_cmd) } __u_boot_cmd_end = .; } Uboot_cmd_table …... _u_boot_cmd_end
  • 20. do_bootm() - 1 http://www.mangoboard.com Default Load address =0x20000000 Bootm 20008000 : loading 할 address 를 받아 command 로 받는다. zImage의 헤더를 읽어온다. Pointer를 header에서 실제 압축된 커널을 가르킨다.
  • 21. do_bootm() - 2 http://www.mangoboard.com LINUX의 경우는 IH_TYPE_KERNEL Kernel + ramdisk 이미지
  • 22. do_bootm() - 3 http://www.mangoboard.com 압축된 커널을 압축 해제한다. 압축이 풀리는 위치는 (void *)ntohl(hdr_ih_load)이다
  • 23. do_bootm() - 4 http://www.mangoboard.com 드디어 Linux kernel 로 진입한다...!!!
  • 24. do_bootm_linux() http://www.mangoboard.com Bootargs 를 가지고 온다 Kernel에게 이미지 entry poiboot_get_ramdisknt를 저장 Machin id를 가지고 온다 Ram disk가 있는지 없는지 확인
  • 25. do_bootm_linux() http://www.mangoboard.com Kernel image로 제어권을 넘겨준다.