Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117123
  • 博文数量: 22
  • 博客积分: 488
  • 博客等级: 下士
  • 技术积分: 265
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-09 09:31
文章分类

全部博文(22)

文章存档

2013年(1)

2011年(20)

2009年(1)

分类: LINUX

2011-03-25 14:08:44

uboot启动过程二阶段代码简单分析(PDK7105开发板 sh架构)
通过前面的汇编代码的分析可以得到,第二阶段从
lib_sh/board.c中的start_sh4boot 函数开始.
 
程序流程为:
 soc_init     //在cpu/sh/stx7105/stx7105.c中 初始化时钟和网卡地址,保存设备ID号

 timer_init   //在lib_sh/time.c中 设置定时器

 board_init   //在board/pdk7105/pdk7105.c中  这个由开发人员来配置 大概是初始化SPI 网卡 PIO等

 env_init     //initialize environment 根据image的启动地点来确定函数位置,              
              //在include/configs/pdk7105.h中我们配置从nand启动,所以这个函数在
              //common/env_nand.c中 检查Flash上的环境参数

 init_baudrate  //initialze baudrate settings 在lib_sh/board.c中

 serial_init  //serial communications setup  这个由宏CONFIG_STM_ASC_SERIAL控制 所以被定义在
              //drivers/serial/stm-asc.c中 初始化asc(异步串行控制器)

 console_init_f //Initial console 在common/console.c中 初始化控制台

 checkboard     //在board/pdk7105/pdk7105.c中 检查CPU的工作模式

 display_banner  //在lib_sh/board.c中 打印U-boot的版本,编译的时间
 
 init_func_ram   //在lib_sh/board.c中 配置可以用ram的大小,显示RAM大小
 
 flashWriteEnable  //configure available FLASH banks  在board/pdk7105/pdk7105.c中

 mem_malloc_init   //initialize malloc() area 在lib_sh/board.c中
 
 nand_init    // go init the NAND 在 drivers/mtd/nand.c中由宏CONFIG_CMD_NAND控制 
 
 spi_init     // go init the SPI  在 cpu/sh/spi.c中 由宏CONFIG_SPI控制 初始化SPI
 
 env_init_after_spi_done //在cpu/sh/env_eeprom.c中 由宏CFG_ENV_IS_IN_EEPROM和CFG_BOOT_FROM_SPI
                         //控制 检查eeprom上的环境参数
 
 env_relocate  // Allocate environment function pointers etc. 在common/env_common.c中
               // 配置环境变量并重新定位

 pci_init  //Do pci configuration 在drivers/pci/pci.c中 由宏CONFIG_PCI控制

 devices_init //Initialize devices 在common/devices.c中 初始化外设 如I2C等
 
 jumptable_init //在common/exports.c中 初始化全局数据表中的跳转表

 console_init_r //Initialize the console after the relocation and devices init) 初始化控制台
 
 misc_init_r // 根据平台初始化设备,没有在STX平台下面找到这个函数原型 所以没有用到 
 
 eth_initialize //在net/eth.c中 初始化网络 由宏CONFIG_CMD_NET控制
 
 main_loop //在common/main.c中 监控串口的输入 如果没有就根据bootcmd这个环境变量载入内核
阅读(2007) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~