Click here to load reader

망고100 보드로 놀아보자 8

  • Upload
    -

  • View
    1.991

  • Download
    6

Embed Size (px)

DESCRIPTION

mango100(cpu:s5pc100) u-boot booting Sequence http://cafe.naver.com/embeddedcrazyboys

Citation preview

  • 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. cpu/s5pc1xxx/start.s cpu_init_crit
http://www.mangoboard.com
CP15 : system controlprocessor

  • cache, MMU, protection system, clocking mode, big /litter endian operation arm920t . 6.MCR, MRC

OM[0:4] Pin information REG
7. cpu/s5pc1xxx/start.s Boot mode
http://www.mangoboard.com
Inforegster Nand boot, mmcsd_boot
8. Lowlevel_init ?
http://www.mangoboard.com
Cpu/s5pc1xx/start.scall
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-bootDiagram
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()

13. Lib_arm/board.c start_armboot()
http://www.mangoboard.com
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
15. Main_loop()
http://www.mangoboard.com
16. Run_command()
http://www.mangoboard.com
Command ...
Commandlist Command Search
Match handle return
Command
17. U_BOOT_CMD
http://www.mangoboard.com
Example
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
19. Boot_os_Fcn
http://www.mangoboard.com
Lib_arm/armlinux.c
20. do_bootm() - 1
http://www.mangoboard.com
DefaultLoad 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 .