调用一系列的初始化函数

1. 指定初始函数表:

init_fnc_t *init_sequence[] = {

cpu_init,           /* cpu 的基本设置         */

board_init, /* 开发板的基本初始化 */ interrupt_init,      /* 初始化中断             */ env_init,            /* 初始化环境变量        */ init_baudrate,       /* 初始化波特率       */ serial_init,  /* 串口通讯初始化  */ console_init_f, /* 控制台初始化第一阶段 */ display_banner, /* 通知代码已经运行到该处 */ dram_init,   /* 配制可用的内存区      */ display_dram_config,

#if defined(CONFIG_VCMA9) || defined (CONFIG_CMC_PU2) checkboard,

#endif

};

NULL,

执行初始化函数的代码如下:

for (init_fnc_ptr
= init_sequence; *init_fnc_ptr;
++init_fnc_ptr) { if ((*init_fnc_ptr)() != 0) {

hang ();

}

}

2. 配置可用的
Flash 区

flash_init ()

3. 初始化内存分配函数

mem_malloc_init()

4. nand
flash 初始化

#if (CONFIG_COMMANDS &
CFG_CMD_NAND) puts ("NAND:");

nand_init();            /* 初始化 NAND */ 见第七部分
3.2.3 节中的第 3 点 nand_init()函数.

5. 初始化环境变量

env_relocate ();

6.  外围设备初始化

devices_init()

7. I2C 总线初始化 i2c_init();

  1. LCD 初始化 drv_lcd_init();
  1. VIDEO 初始化 drv_video_init();

10. 键盘初始化 drv_keyboard_init();

11. 系统初始化 drv_system_init();

初始化网络设备

初始化相关网络设备,填写 IP、MAC 地址等。 1. 设置 IP 地址

/* IP Address */

gd->bd->bi_ip_addr = getenv_IPaddr
("ipaddr");

/* MAC Address */

{

int i; ulong reg;

char *s, *e; uchar tmp[64];

i = getenv_r ("ethaddr", tmp, sizeof (tmp)); s
= (i > 0) ? tmp : NULL;

for (reg = 0; reg < 6; ++reg) {

gd->bd->bi_enetaddr[reg] = s ? simple_strtoul (s, &e, 16)
: 0; if (s)

s = (*e) ? e + 1 : e;

}

}

进入主 UBOOT 命令行

进入命令循环(即整个 boot 的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

for (;;) {

main_loop (); /* 在
common/main.c */

}

代码搬运

为了支持 NAND flash 起动,S3C2410 内建了内部的 4k 的 SRAM 缓存“Steppingstone”。当起动时,NAND flash 最初的 4k 字节将被读入”Steppingstone”然后开始执行起动代码。通常起动代码会把 NAND flash 中的内容 拷到 SDRAM 中以便执行主代码。

使用硬件的 ECC, NAND flash 中的数据的有效性将会得到检测。

功能

  1. NAND flash 模式:支持读/删除/编程 NAND Flash

2. 自动起动模式:在复位时起动代码将被读入”Steppingstone”中,然后开始执行起动代码。

3. 硬件 ECC 检测模块(硬件检测,软件纠正)

4.
“Steppingstone” 4­KB 内部 SRAM 在起动后可以另外使用。

最新文章

  1. WinForm设置控件焦点focus
  2. VS2010中dumpbin工具的使用
  3. windows7设置开机启动方式
  4. 实现一个小目标,动动小指,分享可得iphone7/ipad/U盘|奥威软件
  5. MySQL 解压包 安装
  6. STM32 ADC 测电压
  7. Atitit &#160;rgb yuv &#160;hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
  8. Fragment与Activity之间的通信
  9. linux修改系统编码
  10. zend 快捷键
  11. cannot change version web module 3.0
  12. 50个android开发技巧
  13. 热点块引发的cache buffers cahins latch
  14. Web 开发后端缓存思路
  15. JavaScript内置对象-Object
  16. 深入探究stm32GPIO口模式(类比51)
  17. 走过夏天,我的H5旅程,一路慢行
  18. Ubuntu安装Flash视频插件
  19. [转载]LVS+Keepalived之三大模式
  20. css3多個佈局

热门文章

  1. 线性dp(记忆化搜索)——cf953C(经典好题dag和dp结合)
  2. storm集群的安装
  3. android 插件化框架VitualAPK
  4. js函数中的apply()、call()、bind()方法
  5. 剑指offer——08斐波那契数列
  6. pip安装时ReadTimeoutError解决办法
  7. Day 14: 内置函数:
  8. mybatis 3 批量插入返回主键 Parameter &#39;id&#39; not found
  9. python 在机器学习中应用函数
  10. 21-Ubuntu-文件和目录命令-复制文件和目录-cp