1、set the cpu to SVC32 mode
2、turn off the watchdog
3、mask all IRQs by setting all bits in the INTMR - default
4、设置频比
5、flush v4 I/D caches、disable MMU stuff and caches
6、memory control configuration
7、relocate U-Boot to RAM
8、Set up the stack,
9、clear_bss
10、调用函数start_armboot
start_armboot
init_sequence
board_init, /* basic board dependent setup */
设置MPLL UPLL I/O端口 cache等
interrupt_init, /* set up exceptions */
env_init, /* initialize environment */
init_baudrate, /* initialze baudrate settings */
serial_init, /* serial communications setup */
console_init_f, /* stage 1 init of console */
display_banner, /* say that we are here */
dram_init, /* configure available RAM banks */
display_dram_config,
mem_malloc_init
env_relocate //初始化环境
getenv_IPaddr //获取ID
getenv_r //获取MAC地址
devices_init //get the devices list going
jumptable_init
console_init_r //fully init console as a device
enable_interrupts //enable exceptions
cs8900_get_enetaddr //网卡
simple_strtoul //Initialize from environment
eth_initialize
main_loop //成功启动
2、turn off the watchdog
3、mask all IRQs by setting all bits in the INTMR - default
4、设置频比
5、flush v4 I/D caches、disable MMU stuff and caches
6、memory control configuration
7、relocate U-Boot to RAM
8、Set up the stack,
9、clear_bss
10、调用函数start_armboot
start_armboot
init_sequence
board_init, /* basic board dependent setup */
设置MPLL UPLL I/O端口 cache等
interrupt_init, /* set up exceptions */
env_init, /* initialize environment */
init_baudrate, /* initialze baudrate settings */
serial_init, /* serial communications setup */
console_init_f, /* stage 1 init of console */
display_banner, /* say that we are here */
dram_init, /* configure available RAM banks */
display_dram_config,
mem_malloc_init
env_relocate //初始化环境
getenv_IPaddr //获取ID
getenv_r //获取MAC地址
devices_init //get the devices list going
jumptable_init
console_init_r //fully init console as a device
enable_interrupts //enable exceptions
cs8900_get_enetaddr //网卡
simple_strtoul //Initialize from environment
eth_initialize
main_loop //成功启动