调用一系列的初始化函数

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. 如何将Canvas中内容保存为图片

    Bitmap bm = Bitmap.createBitmap(320, 480, Config.ARGB_8888); Canvas canvas = new Canvas(bm); Paint p ...

  2. arcgis api for javascipt 输出图片

    地图模板制作-发布-gpurl调用 window.open可以直接打开url链接. saveas可以另存,仅支持ie浏览器 <!DOCTYPE html><html><h ...

  3. Spring源码由浅入深系列二 类结构

    BeanFactory 上一章中,我们提过Spring的依赖注入容器是BeanFactory.BeanFactory是一个基础接口,它有一个默认实现类:DefaultListableBeanFacto ...

  4. 『BASH』——Learn BashScript from Daniel Robbins——[003]

    ABSTRACT: Daniel Robbins is best known as the creator of Gentoo Linux and author of many IBM develop ...

  5. centos 7 设置IP地址

    先说下安装方式:我是采用的最小化安装 虚拟机软件:vmware 设置IP有两种情况,动态IP和静态IP,下面分别说明两种IP地址的设置方法 1.动态IP 条件:路由设置了动态分配IP地址(一般默认是动 ...

  6. Day15:Python 【模块】及__name__:

    什么是模块: 在Python中,随着这代码的撰写,代码越来越长,所以产生了,模块这个概念,模块是什么?模块就是一个.py文件,在撰写代码时,我们把不同的功能的代码封装到一个.py文件里,用得时候导入 ...

  7. 实时查询系统架构:spark流式处理+HBase+solr/ES查询

    最近要做一个实时查询系统,初步协商后系统的框架 1.流式计算:数据都给spark 计算后放回HBase 2.查询:查询采用HBase+Solr/ES

  8. 28-Ubuntu-远程管理命令-02-查看网卡的配置信息

    命令 功能 ifconfig 查看网卡配置信息 ifconfig | grep inet 查看网卡对应的IP地址 ping  127.0.0.1 检测本地网卡是否正常 ping  IP地址 检测到目标 ...

  9. 2019-4-29-win10-uwp-如何判断一个控件在滚动条的里面是用户可见

    title author date CreateTime categories win10 uwp 如何判断一个控件在滚动条的里面是用户可见 lindexi 2019-04-29 10:40:33 + ...

  10. C 自己实现strcpy,strcmp,strlen,strcat等函数

    // mystrlen() 测试字符长度方法 int mystrlen(char *str) { int cnt = 0; char *p= str; while(*p++ != '\0') { cn ...