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 ...
随机推荐
- Python 爬取12306火车票
获取火车站 stations.py #import certifi #import urllib3 import re import requests from pprint import pprin ...
- hive的数据存储格式
hive的数据存储格式 Hive支持的存储数的格式主要有:TEXTFILE(行式存储) .SEQUENCEFILE(行式存储).ORC(列式存储).PARQUET(列式存储). 1 列式存储和行式存储 ...
- NX二次开发-将工程图上的每个视图导出PNG图片
大概思路是将每个视图导出PDF,在调另一个项目的EXE(PDF转PNG) //ExportDrawViewPng // Mandatory UF Includes #include <uf.h& ...
- NX二次开发-UFUN获取工程图详细信息UF_DRAW_ask_drawing_info
NX9+VS2012 #include <uf.h> #include <uf_draw.h> #include <uf_part.h> UF_initialize ...
- NX二次开发-UFUN创建块UF_MODL_create_block1
NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); UF_FEATURE_SIGN Sign = ...
- NX二次开发-算法篇-判断找到两个数组里不相同的对象
NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_modl.h> #include < ...
- string替换所有指定字符串(C++)【转载】
转载自https://blog.csdn.net/a_222850215/article/details/79985504 C++的string提供了replace方法来实现字符串的替换,但是对于将字 ...
- python 16 文件操作(二)
转自 http://www.cnblogs.com/BeginMan/p/3169020.html 一.文件系统 从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进 ...
- jdbc加载驱动方法
1.Class.forName("com.mysql.jdbc.Driver"); 2. DriverManager.registerDriver(new com.mysql.jd ...
- Linux内存 mem 和 swap
摘抄并用于自查 Linux mem/swap/buffers/cached区别 free命令相对于top,提供了更简洁的查看系统内存使用情况: # free -m mem:表示物理内存统计 buff/ ...