[国嵌笔记][030][U-Boot工作流程分析]
uboot工作流程分析
程序入口
1.打开顶层目录的Makefile,找到目标smdk2440_config的命令中的第三项(smdk2440)
2.进入目录board/samsung/smdk2440/,找到u-boot.lds文件。uboot的链接都是由这个链接器脚本来控制的
3.打开u-boot.lds文件,找到.text(代码段)的第一个文件cup/s3c24xx/start.o,该文件就是uboot的入口代码。链接器脚本中的ENTRY用来表明整个程序的入口,那么标号_start就是整个程序的入口
4.第一阶段入口在cup/s3c24xx/start.S文件的_start处
5.第二阶段入口在lib_arm/board.c文件的start_armboot处
第一阶段(BL1)代码分析
1.打开source insight工程,并打开start.S文件,[shift]+F8高亮显示
2.分析代码是只关心做了什么,不关怎么做。可以通过注释找到做了什么。边分析边通过思维导图记录下来。
3.通过make smdk2440_config执行相应的配置项
4.执行make,编译uboot。在顶层目录下会产生u-boot(elf)文件和u-boot.bin(二进制)文件
5.通过反汇编u-boot(elf)文件可以查看相关信息
arm-linux-objdump -D -S u-boot >dump
搜索start_armboot可以找到start_armboot的地址为0x30001100, 在内存中。说明在这个时候BL1会跳转到内存中执行BL2
6.打开顶层目录下的config.mk文件,config.mk文件会由Makefile 包含进去。搜索TEXT_BASE(代码段的基地址),会找到 -T(LDSCRIPT) -Ttext $(TEXT_BASE) 表示指定链接器脚本的地址由TEXT_BASE覆盖掉。TEXT_BASE变量在boot/samsung/smdk2440/config.mk文件中定义,该值为0x30000000
7.b指令相对跳转,只会在SteppingStone中跳转,不会跳转到内存中。ldr pc, start_armboot会修改pc指针的值,使跳转到内存中运行
8.2440、6410和210的第二阶段执行的代码都相同
9.2440和6410的BL1和BL2产生的是一个bin文件,210的BL1和BL2产生的是两个bin文件
10.210的BL1的链接脚本位于spl/u-boot-spl.lds。入口程序在arch/arm/cpu/armv7/start.S
11.BL1会把BL2复制到内存中的0x23E00000处。BL1(16KB)与BL2之间有8KB的填空,所以BL2的地址在BL1后24KB处
12.210的BL2的链接器脚本位于arch/arm/cpu/armv7/u-boot.lds。程序入口同样在arch/arm/cpu/armv7/start.S中
2440第一阶段启动流程分析
1.设置中断向量表
2.设置处理器为svc模式
3.刷新I/D cache
4.关闭mmu和cache
5.关闭看门狗
6.关闭所有中断
7.初始化时钟
8.初始化串口
9.简单初始化nand flash
10.内存初始化
11.复制nand flash中的bl2到内存中
12.设置堆栈,为C语言做准备
13.清除bss段
14.跳转到BL2
2440第二阶段启动流程分析
1.分析时,只关心硬件的初始化,不关心软件的初始化
2.初始化串口
3.初始化LCD
4.初始化网卡
5.初始化LED
6.执行用户输入的命令
[国嵌笔记][030][U-Boot工作流程分析]的更多相关文章
- [国嵌笔记][029][ARM处理器启动流程分析v2]
2440启动流程 启动方式:nor flash启动.nand flash启动 地址布局: 选择nor flash启动时,SROM(nor flash)地址为0x00000000 选择nand flas ...
- [国嵌笔记][021-022][ARM处理器工作模式]
[ARM处理器工作模式] 处理器工作模式 1.User(urs):用户模式,linux应用程序运行在用户模式 2.FIQ(fiq):快速中断模式 3.IRQ(irq):中断模式 4.Superviso ...
- [国嵌笔记][008-009][远程登录Linux]
[国嵌笔记][008][远程登录Linux] 1.windows与Linux能够相互ping通 2.关闭Linux防火墙 /etc/init.d/iptables stop 3.通过ssh(字符界面) ...
- u-boot分析(二)----工作流程分析
u-boot分析(二) 由于这两天家里有点事,所以耽误了点时间,没有按时更新,今天我首先要跟大家说说我对于u-boot分析的整体的思路,然后呢我以后的博客会按照这个内容更新,希望大家关注. 言归正传, ...
- 【转】Hostapd工作流程分析
[转]Hostapd工作流程分析 转自:http://blog.chinaunix.net/uid-30081165-id-5290531.html Hostapd是一个运行在用户态的守护进程,可以通 ...
- 第2章 rsync算法原理和工作流程分析
本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释. 以下是本文的姊妹篇: 1.rsync(一):基本命令和用法 2.rsync(二):ino ...
- rsync算法原理和工作流程分析
本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释.本文不会介绍如何使用rsync命令(见rsync基本用法),而是详细解释它如何实现高效的增 ...
- nodejs的Express框架源码分析、工作流程分析
nodejs的Express框架源码分析.工作流程分析 1.Express的编写流程 2.Express关键api的使用及其作用分析 app.use(middleware); connect pack ...
- Mysql工作流程分析
Mysql工作流程图 工作流程分析 1. 所有的用户连接请求都先发往连接管理器 2. 连接管理器 (1)一直处于侦听状态 (2)用于侦听用户请求 3. 线程管理器 (1)因为每个用户 ...
随机推荐
- UWP 在Xaml中使用cu和fcu资源
之前一直不知道这个,最近看微软的WTS项目更新,在Xaml中定义了 xmlns:fcu ="http://schemas.microsoft.com/winfx/2006/xaml/pres ...
- 记录一个从没见过的bug
js的默认启动 $(function(){ )}; 不识别,意思是如果你把js内容放入这个东西里面,它不会执行.必须把它去掉才可以. 包括.tag里的文件也是一样. 这是发生在系统框架迁移发生的事,以 ...
- 全国交通咨询系统 by C++ on Linux
信息存储 利用邻接表存储城市信息与线路信息,比邻接矩阵更加高效. 主要数据结构 I)Time,规范时间的输入输出格式 II)VNode,头结点,用于建立顶点表,存储城市信息 III)ArcNode,表 ...
- Ubuntu 安装MyEclipse10
Ubuntu 安装MyEclipse10 1.安装JDK 2.下载myeclipse.run 3. 现在假设你的 myeclipse.run 的路径是/home/yourname/myeclipse ...
- java的Xmx是设置什么的?
我们使用java -X可以看到java的-X系列的参数,Xmx和Xms是相对应的.一个是memory max(Xmx) 一个是memory start (Xms). Xmx代表程序最大可以从操作系统中 ...
- 通过window.location.search获取页面url传递的参数
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...
- micropython TPYBoard v202 超声波测距
实验目的 了解超声波模块的工作原理 学习使用超声波模块测量距离 实验器材 TPYBoard v202 1块 超声波模块(HC-SR04)1个 micro USB数据线 1条 杜邦线 若干 超声波模块的 ...
- TurnipBit开发板掷骰子小游戏DIY教程实例
转载请以链接形式注明文章来源(MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇) 0x00前言 下面带大家用TurnipBit开发板实现一个简单的小游戏- ...
- [Spark内核] 第36课:TaskScheduler内幕天机解密:Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解等
本課主題 通过 Spark-shell 窥探程序运行时的状况 TaskScheduler 与 SchedulerBackend 之间的关系 FIFO 与 FAIR 两种调度模式彻底解密 Task 数据 ...
- Javascript中遍历数组方法的性能对比
Javascript中常见的遍历数组的方法 1.for循环 for(var i = 0; i < arr.length; i++) { // do something. } 2.for循环的改进 ...