当前位置: Home > Linux > 嵌入式系统 > Boot loader > 文章 |
|
ARM的嵌入式Linux移植体验之BootLoader
|
文章来源: 天极开发
文章作者: 宋宝华
发布时间: 2006-08-12
字体:
[大
中
小]
|
|
3.3进入C代码
首先要设置堆栈指针sp,堆栈指针的设置是为了执行C语言代码作好准备。设置好堆栈后,调用C语言的main函数:
@ get read to call C functions ldr sp, DW_STACK_START @ setup stack pointer mov fp, #0 @ no previous frame, so fp=0 mov a2, #0 @ set argv to NULL
bl main @ call main
mov pc, #FLASH_BASE @ otherwise, reboot |
4. BootLoader第二阶段
vivi Bootloader的第二阶段又分成了八个小阶段,在main函数中分别调用这几个小阶段的相关函数:
int main(int argc, char *argv[]) { int ret;
/* * Step 1: */ putstr("\r\n"); putstr(vivi_banner);
reset_handler();
/* * Step 2: */ ret = board_init(); if (ret) { putstr("Failed a board_init() procedure\r\n"); error(); }
/* * Step 3: */ mem_map_init(); mmu_init(); putstr("Succeed memory mapping.\r\n");
/* * Now, vivi is running on the ram. MMU is enabled. */
/* * Step 4: */ /* initialize the heap area*/ ret = heap_init(); if (ret) { putstr("Failed initailizing heap region\r\n"); error(); }
/* Step 5: */ ret = mtd_dev_init();
/* Step 6: */ init_priv_data();
/* Step 7: */ misc();
init_builtin_cmds();
/* Step 8: */ boot_or_vivi();
return 0; } |
|
|
↑返回顶部
打印本页
关闭窗口↓
|
|
|
|