1、启动过程特征总结
  (1)第一阶段为汇编阶段、第二阶段为C阶段
  (2)第一阶段在SRAM中、第二阶段在DRAM中
  (3)第一阶段注重SoC内部、第二阶段注重SoC外部Board内部

2、uboot的第一阶段做了哪些工作
  (1)构建异常向量表
  (2)设置CPU为SVC模式
  (3)关看门狗
  (4)开发板供电置锁
  (5)时钟初始化
  (6)DDR初始化
  (7)串口初始化并打印"OK"
  (8)重定位
  (9)建立映射表并开启MMU
  (10)跳转到第二阶段

3、uboot第二阶段主要是对开发板级别的硬件、软件数据结构进行初始化。

  init_sequence
  cpu_init 空的
  board_init 网卡、机器码、内存传参地址
  dm9000_pre_init 网卡
  gd->bd->bi_arch_number 机器码
  gd->bd->bi_boot_params 内存传参地址
  interrupt_init 定时器
  env_init
  init_baudrate gd数据结构中波特率
  serial_init 空的
  console_init_f 空的
  display_banner 打印启动信息
  print_cpuinfo 打印CPU时钟设置信息
  checkboard 检验开发板名字
  dram_init gd数据结构中DDR信息
  display_dram_config 打印DDR配置信息表
  mem_malloc_init 初始化uboot自己维护的堆管理器的内存
  mmc_initialize inand/SD卡的SoC控制器和卡的初始化
  env_relocate 环境变量重定位
  gd->bd->bi_ip_addr gd数据结构赋值
  gd->bd->bi_enetaddr gd数据结构赋值
  devices_init 空的
  jumptable_init 不用关注的
  console_init_r 真正的控制台初始化
  enable_interrupts 空的
  loadaddr、bootfile 环境变量读出初始化全局变量
  board_late_init 空的
  eth_initialize 空的
  x210_preboot_init LCD初始化和显示logo
  check_menu_update_from_sd 检查自动更新
  main_loop 主循环

1、在uboot中因为有汇编阶段参与,因此不能直接找main.c。整个程序的入口取决于链接脚本中ENTRY声明的地方。
ENTRY(_start)因此_start符号所在的文件就是整个程序的起始文件,_start所在处的代码就是整个程序的起始代码。

_start在start.S文件中

基于s5pv210的uboot总结的更多相关文章

  1. 基于s5pv210嵌入式linux系统sqlite3数据库移植

    基于s5pv210嵌入式linux系统sqlite3数据库移植 1.下载源码 http://www.sqlite.org/download.html 最新源码为3080100 2.解压 tar xvf ...

  2. 基于s5pv210嵌入式系统busybox文件系统移植

    基于s5pv210嵌入式系统busybox文件系统移植 1.下载源码 busybox.net/downloads下载最新版的busybox源码,最新源码为1.21.1 2.解压源码文件 tar xvf ...

  3. 基于cygwin构建u-boot(五)结尾:shell 工具

    结尾,基于cygwin对u-boot的处理,很大一部分都是再处理 路径等相关的问题,只有一个涉及到gcc的参数配置. 为了达到顺利编译的目的,使用shell下的部分工具进行处理. 1.sed sed简 ...

  4. 基于cygwin构建u-boot(一)环境搭建

    从本文开始,更系统的描述基于cygwin构建u-boot. 之前<痛苦的版本对齐>系列,对于cygwin环境下Sourcery CodeBench,u-boot-1.1.6的构建有侧面的说 ...

  5. 基于335X的UBOOT网口驱动分析

    基于335X的UBOOT网口驱动分析 一.软硬件平台资料 1.  开发板:创龙AM3359核心板,网口采用RMII形式 2.  UBOOT版本:U-Boot-2016.05,采用FDT和DM. 参考链 ...

  6. 基于S3C2440的U-BOOT的start.S分析

    基于S3C2440的U-BOOT的start.S分析 在了解了ARM相关的汇编指令后,同时结合网上各位大虾的提点开始阅读u-boot的启动代码,现将分析过程记录如下 可执行文件及内存映射 我们可以把可 ...

  7. tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 启动

    我们知道 s5pv210启动方式有非常多种,sd卡和nand flash 启动就是当中的两种,前面我们实现的都是基于sd卡启动,这节我们開始实现从nand flash 启动: 从 NAND 启动 u- ...

  8. tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 8位硬件ECC

    这节我们实现nand的ecc,保存环境变量到nand flash 中.然后把我们之前的led灯烧写到nand flash 中.开机启动.在 tiny210.h 中定义宏 CONFIG_S5PV210_ ...

  9. tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——移植u-boot.bin(打印串口控制台)

    在之前我们移植的代码中,都没看到明显的效果,这节我们实现控制台的信息打印. 在上节.我们看到调用 relocate_code 重定位.在 u-boot 的帮助文档 doc/README.arm-rel ...

随机推荐

  1. Virtual Box创建共享目录

    1.先关闭ubuntu,在virtualbox“设置”中找到“共享文件夹”,点击进入,点击右边添加目录按钮,添加windows中要共享的目录,取一个名.比如我在D盘建一个名为share的文件夹,如下图 ...

  2. Linux中信号量处理

    参考文章: http://blog.csdn.net/qinxiongxu/article/details/7830537/ 信号量一. 什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个 ...

  3. freopen()——重定向标准输入输出流

    freopen()——重定向标准输入输出流 头文件:stdio.h 函数原型:FILE * freopen(const char *filename , const char *type ,  FIL ...

  4. hdu 4584 水题爽一发 *

    #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #i ...

  5. AppInventor学习笔记(四)——打地鼠应用学习

    一.组件设计 1.整体预览 2.图片精灵的添加 (1)首先加入一个画布进去 调节属性如图 (2)添加精灵 添加精灵,然后上传张图片进行属性修改 3.加入Clock 直接加入,设定为1000ms 二.B ...

  6. JVM的栈内存

    每当启动一个新线程时,Java虚拟机都会为它分配一个Java栈.Java栈以帧为单位保存线程的运行状态.虚拟机只会直接对Java栈执行两种操作:以帧为单位的压栈和出栈. 某个线程正在执行的方法被称为该 ...

  7. 远程连接Kali Linux使用PuTTY实现SSH远程连接

    远程连接Kali Linux使用PuTTY实现SSH远程连接 本书主要以在Android设备上安装的Kali Linux操作系统为主,介绍基于Bash Shell渗透测试.由于在默认情况下,在Andr ...

  8. 直接操作游戏对象C#游戏开发

    直接操作游戏对象C#游戏开发 2.2.3  直接操作游戏对象 在Inspector视图里通过设置属性而改变游戏场景中游戏对象的状态,太过抽象,毕竟数字并不够直观.其实,改变游戏对象的状态,完全有最最直 ...

  9. cocos2d 单点触控

    // // Single.hpp // dev // // Created by sun on 15/12/20. // // #ifndef Single_hpp #define Single_hp ...

  10. 命令模式坚决svn树冲突(local unversioned, incoming add upon update)

    当工作目录修改删除过时更新使用svn更新就容易发生树冲突“Tree Confilict”.会出现类似提示. local unversioned, incoming add upon update 如果 ...