调用一系列的初始化函数

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 在起动后可以另外使用。

UBOOT的的 C 语言代码部分的更多相关文章

  1. Latex中插入C语言代码

    Latex是一个文本排版的语言,能排版出各种我们想要的效果.而且用代码排版的优点是易于修改板式,因此在文本内容的排版时,Latex应用十分广泛. 当我们需要在Latex中插入代码时,就需要用到 \us ...

  2. loadrnner添加C语言代码的几种方式

    今天有人在群里问,想直接把自己的C语言代码让lr调用,该怎么搞. 这东西说来简单,只是对Loadrunner这工具不熟悉可能才会有这种问题吧.个人理解,一般有三种方法吧,废话不多,直接干货. 1.直接 ...

  3. HTML之一语言代码

    HTML的lang属性可用于网页或部分网页的语言.这对搜索引擎和浏览器是有帮助的. 同时也可以是指HTTP Header中的Accept-Language/Content-Language. ISO ...

  4. 让你的Windows不断重启的C语言代码

    原文:让你的Windows不断重启的C语言代码 没有写Linux的原因是因为搞不定Linux下的权限问题,而Windows下基本上使用电脑的用户都是管理员,所以钻个空了,不多说下面是代码#includ ...

  5. 国家语言,语言代码,locale id对应表

    国家语言,语言代码,locale id对应表.比如 en_US对应的id为1033, 中文的locale=zh_CN,id=2052. Locale Languagecode LCIDstring L ...

  6. 如何提高单片机C语言代码效率

    代码效率包括两个方面内容:代码的大小和代码执行速度.如果代码精简和执行速度快,我们就说这个代码效率高.一般情况下,代码精简了速度也相应提上来了.单片机的ROM和RAM的空间都很有限,当您编程时遇到单片 ...

  7. 使用highlight.js高亮静态页面的语言代码

    显示静态的代码其实html的pre标签基本可以满足需求了,至少不会将换行的文本显示成一堆字符串. 不过能使静态的文本能高亮显示,倒更炫酷一点.其实很简单的,引入highlight.js包,可以使用cd ...

  8. HTML5 脚本 语言代码 URL 符号实体 ASCII码 颜色

    1.HTML<noscript> 标签 <noscript> 标签提供无法使用脚本时的替代内容,比方在浏览器禁用脚本时,或浏览器不支持客户端脚本时. <noscript& ...

  9. 02 How to Write Go Code 如何编写go语言代码

    How to Write Go Code   如何编写go语言代码 Introduction   介绍 Code organization  组织代码 Overview  概述 Workspaces  ...

随机推荐

  1. Lua的控制流程

    一.条件语句 if语句 if语句是由一个布尔表达式作为条件判断,或者紧跟其他语句组成. if else语句 if语句可以是else搭配使用,在if条件表达式为false时执行else语句代码 if嵌套 ...

  2. BZOJ 2159: Crash 的文明世界(组合数学+第二类斯特林数+树形dp)

    传送门 解题思路 比较有意思的一道数学题.首先\(n*k^2\)的做法比较好想,就是维护一个\(x^i\)这种东西,然后转移的时候用二项式定理拆开转移.然后有一个比较有意思的结论就是把求\(x^i\) ...

  3. python解决迅雷下载限制的方法

    一.转换迅雷下载链接 import base64 url='thunder://QUFodHRwOi8veHVubGVpLnhpYXphaS16dWlkYS5jb20vMTkwOC/JqLa+Mi5I ...

  4. Unity中的值传递与引用传递

    1. 值类型 值类型变量本身保存了该类型的全部数据,当声明一个值类型的变量时,该变量会被分配到栈(Stack)上. 2. 引用类型 引用类型变量本身保存的是位于堆(Heap)上的该类型的实例的内存地址 ...

  5. Dll注入技术之输入法注入

    DLL注入技术之输入法注入 输入法注入原理是利用Windows系统中在切换输入法需要输入字符时,系统就会把这个输入法需要的ime文件装载到当前进程中,而由于这个Ime文件本质上只是个存放在C:\WIN ...

  6. ncurses库的介绍与安装

    Frm: http://blog.csdn.net/Mary_Jane/article/details/50769631 介绍 ncurses(new curses)是一套编程库,它提供了一系列的函数 ...

  7. 20130317 如何批量把文件名称写入txt文档

    1.如何批量把文件名称写入txt文档 COMMAND 窗口例:存放图片的文件夹是 D:\123\就用下面一名命令就OKdir d:\123\*.jpg /b > A.TXT 那么你所以JPG格式 ...

  8. javascript es6 语法快速入门

    1. let.const 作用:let 声明变量,const 声明常量 与 var 的区别:不能重复声明,且存在块级作用域,即只在代码块内生效 2. 箭头函数 使用: let show = funct ...

  9. python 16 文件操作(二)

    转自 http://www.cnblogs.com/BeginMan/p/3169020.html 一.文件系统 从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进 ...

  10. POJ Evacuation /// 二分图最大匹配

    题目大意: 在一个n*m的房间中 ‘X’为墙 ‘D’为门 ‘.’为人 门只存在与外围 人每秒钟只能向四连通区域走一步 门比较狭窄 每秒钟只能通过一个人 求所有人逃脱的最短时间 如果不可能则输出impo ...