UBOOT的的 C 语言代码部分
调用一系列的初始化函数
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();
- LCD 初始化 drv_lcd_init();
- 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 中的数据的有效性将会得到检测。
功能
- NAND flash 模式:支持读/删除/编程 NAND Flash
2. 自动起动模式:在复位时起动代码将被读入”Steppingstone”中,然后开始执行起动代码。
3. 硬件 ECC 检测模块(硬件检测,软件纠正)
4.
“Steppingstone” 4KB 内部 SRAM 在起动后可以另外使用。
UBOOT的的 C 语言代码部分的更多相关文章
- Latex中插入C语言代码
Latex是一个文本排版的语言,能排版出各种我们想要的效果.而且用代码排版的优点是易于修改板式,因此在文本内容的排版时,Latex应用十分广泛. 当我们需要在Latex中插入代码时,就需要用到 \us ...
- loadrnner添加C语言代码的几种方式
今天有人在群里问,想直接把自己的C语言代码让lr调用,该怎么搞. 这东西说来简单,只是对Loadrunner这工具不熟悉可能才会有这种问题吧.个人理解,一般有三种方法吧,废话不多,直接干货. 1.直接 ...
- HTML之一语言代码
HTML的lang属性可用于网页或部分网页的语言.这对搜索引擎和浏览器是有帮助的. 同时也可以是指HTTP Header中的Accept-Language/Content-Language. ISO ...
- 让你的Windows不断重启的C语言代码
原文:让你的Windows不断重启的C语言代码 没有写Linux的原因是因为搞不定Linux下的权限问题,而Windows下基本上使用电脑的用户都是管理员,所以钻个空了,不多说下面是代码#includ ...
- 国家语言,语言代码,locale id对应表
国家语言,语言代码,locale id对应表.比如 en_US对应的id为1033, 中文的locale=zh_CN,id=2052. Locale Languagecode LCIDstring L ...
- 如何提高单片机C语言代码效率
代码效率包括两个方面内容:代码的大小和代码执行速度.如果代码精简和执行速度快,我们就说这个代码效率高.一般情况下,代码精简了速度也相应提上来了.单片机的ROM和RAM的空间都很有限,当您编程时遇到单片 ...
- 使用highlight.js高亮静态页面的语言代码
显示静态的代码其实html的pre标签基本可以满足需求了,至少不会将换行的文本显示成一堆字符串. 不过能使静态的文本能高亮显示,倒更炫酷一点.其实很简单的,引入highlight.js包,可以使用cd ...
- HTML5 脚本 语言代码 URL 符号实体 ASCII码 颜色
1.HTML<noscript> 标签 <noscript> 标签提供无法使用脚本时的替代内容,比方在浏览器禁用脚本时,或浏览器不支持客户端脚本时. <noscript& ...
- 02 How to Write Go Code 如何编写go语言代码
How to Write Go Code 如何编写go语言代码 Introduction 介绍 Code organization 组织代码 Overview 概述 Workspaces ...
随机推荐
- NTT数论变换
数论变换NTT 前置知识 FFT:NTT的思想和FFT一样(FFT介绍) 概述 数论变换,即NTT(Number Theory Transformation?),是基于数论域的FFT,一般我们默认FF ...
- 在 input 的 placeholder中 使用iconfont
写在前面 产品要求放大镜和文字放在一起.用定位,位置不准确,就会导致手机上错位,丑的一批. 进入正题 如何在input的 placeholder 中使用图标呢? 以阿里巴巴的矢量图标库为例, 现在有三 ...
- 执行SQL语句---SELECT
1.通常从MySQL数据库中检索数据有4个步骤: (1)发出查询: 用mysql_query发出查询. (2)检索数据: 用mysql_store_result/mysql_use_result (3 ...
- P1831 杠杆数
P1831 杠杆数 题目描述 如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数. 比如4139就是杠杆数,把3当成支点,我们有这样 ...
- 一次修复MySQL数据库的经历
一次修复MySQL数据库的经历 实验室服务器的硬盘满了,结果导致一个线上服务的MySQL数据库的两个表坏了.具体症状是desc cdb_searchindex显示 ERROR 1017 (HY000) ...
- ssh 私钥和公钥 参考的linux就该这么学
- APIHOOK
#include <stdio.h> #include <windows.h> #include <Dbghelp.h> #pragma comment(lib,& ...
- C++之关键字&标识符命名规则
关键字 **作用:**关键字是C++中预先保留的单词(标识符) * **在定义变量或者常量时候,不要用关键字** C++关键字如下: 提示:在给变量或者常量起名称时候,不要用C++得关键字,否则会产生 ...
- vba取局域网电脑共享文件夹下的Excel文件
Private Sub CommandButton1_Click() Dim xlapp1 As Excel.Application Dim xlbook1 As Excel.Workbo ...
- RAKsmart新出香港服务器的优势
RAKsmart为了更好地服务用户,所以最近RAKsmart新推出得香港服务器又带给了用户更多的选择,那这次RAKsmart新推出香港服务器有哪些优势呢? 1.带宽更大可升至10Mpbs 香港服务器的 ...