|   当前位置: 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; } | 
         
    
 
 
		    
                      
		      
		      
		   | 
		 
               
	     | 
	   
	  
	    | 
	      ↑返回顶部
	       
	      打印本页
	       
	      关闭窗口↓
	       
	     | 
	   
	  
	    
	       
	      
	      
	      
             | 
           
         
        | 
       
        
	  
	  
          
          
         
         
         
         
         
         
         
         
         
         
         
         
	  
        |