网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: 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;
}

 
推荐文章
·嵌入式系统 Boot Loader 技术内
 
 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·U-Boot简介
·U-BOOT的启动流程及移植
·嵌入式系统 Boot Loader
·Bootloader存在的必要性
·U-Boot在S3C2410上的移
·bootloader的加载和运行
相关文章
·ARM的嵌入式Linux移植体
·ARM的嵌入式Linux移植体
·ARM的嵌入式Linux移植体
·ARM的嵌入式Linux移植体
·Linux PDA和手持PC一览
·嵌入式Linux系统中的GUI
·嵌入式Linux操作系统启
·QTE/Qtopia在Liod-270上
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统