uboot启动流程分析之二

本文详细剖析了UBoot启动过程的关键步骤,从Board.c文件入手,深入理解嵌入式系统的初始化与引导流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Board.c


·  #ifdefined(CONFIG_ARCH_CPU_INIT)
·       arch_cpu_init,
·  #endif
·       board_init,
·  #ifdefined(CONFIG_USE_IRQ)
·      interrupt_init,
·  #endif
·  timer_init,
·  #ifdef CONFIG_FSL_ESDHC
·  get_clocks,
·  #endif
·  env_init,
·  init_baudrate,
·  serial_init,
·  console_init_f,
·  display_banner,
·  #if defined(CONFIG_DISPLAY_CPUINFO)
·  print_cpuinfo,
·  #endif
·  #if defined(CONFIG_DISPLAY_BOARDINFO)
·  checkboard,
·  #endif
·  dram_init,
·  arch_usb_init,
·  NULL,
·  };






//入口

·  void start_armboot (unsigned *pRunning, unsigned startup_flag, unsigned resume_code) 
·  { 
·   init_fnc_t ** init_fnc_ptr; /*双重指针*/ 
 
· 全局数据变量分配空间  
·   gd = (gd_t*)(_armboot_start – CONFIG_BOOTHEAD_GAP 
·   - CONFIG_SYS_MALLOC_LEN – sizeof(gd_t)); 
 /*先在内存中为gd_t分配了空间,然后让前面定义的gd指针指向它的首地址*/  
· /* 接着也分配了bd_t结构体的空间,这个空间在gd_t之下,然后将gd_t中的bd指针赋值为它的首地址。*/ 
·  
·  memset ((void*)gd, 0, sizeof (gd_t));
//开发板的数据变量 分配空间
·   gd->bd =(bd_t*)((char*)gd-sizeof(bd_t));
·  memset(gd->bd,0,sizeof (bd_t));
·  insert_ddr_layout((unsigned int)gd->bd,
·  (unsigned int)((char *)gd+sizeof(gd_t)),"globaldata
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值