uboot分析——初始化
1.start.S
初始化 icache
看门狗
时钟
DDR
设置栈
初始化串口,并打印 OK
以上完成 lowlevel_init
-----------------------------------------
重定位
开启MMU
清BSS
远跳转到 _start_armboot
2.start_armboot
|
|------------init_sequence
| |---------------------cpu_init 空
| |---------------------board_init 初始化网卡设置 arch_number boot_params 基地址
| |---------------------interrupt_init 初始化定时器
| |---------------------env_init 获得合法的环境变量的基地址
| |-------------------- init_baudrate 取得波特率值
| |--------------------- serial_init 初始化串口
| |--------------------- console_init_f 控制台的首次初始化
| |---------------------display_banner 打印uboot version 等信息
| |---------------------printcpuinfo 打印cpu时钟频率
| |---------------------checkboard 打印板子版本信息
| |---------------------init_func_i2c 初始化i2c
| |---------------------- dram_init 记录DDR地址信息
| |--------------------- display_dram_config 打印DDR地址信息
|
|------------------------------ 初始化堆空间
|------------------------------ 根据soc不同,初始化flash
|------------------------------ 开启异常中断处理
|------------------------------ main_loop
环境变量:如果没有合法的环境变量,uboot会使用程序内嵌的默认环境变量。
需要注意的是 arch_number, uboot的 arch_number将作为参数传给kernel,kernel有自己的arch_number,两者必须一样,kernel才能继续执行。
重要的还有内存地址,uboot初始化DDR设置的地址表,必须和kernel 使用的地址表相同
可以看出 start.S 阶段是初始化Soc内部,start_armboot 是初始化Soc外部并准备启动参数。
uboot分析——初始化的更多相关文章
- u-boot分析(九)----nand flash初始化|nand flash读写分析
u-boot分析(九) 上篇博文我们按照210的启动流程,分析到了初始化串口,由于接下来的取消存储保护不是很重要,所以我们今天按照u-boot的启动流程对nand flash初始化进行分析. 今天我们 ...
- u-boot分析(八)----串口初始化
u-boot分析(八) 上篇博文我们按照210的启动流程,分析到了内存初始化,今天我们继续按照u-boot的启动流程对串口的初始化进行分析. 今天我们会用到的文档: 1. 2440芯片手 ...
- u-boot分析(七)----内存初始化
u-boot分析(七) 上篇博文我们按照210的启动流程,分析到了时钟初始化,今天我们继续按照u-boot的启动流程对内存的初始化进行分析. 今天我们会用到的文档: 1. 2440芯片手 ...
- u-boot分析(六)----时钟初始化
u-boot分析(六) 上篇博文我们按照210的启动流程,分析到了关闭看门狗,今天我们继续按照u-boot的启动流程进行分析,今天我们会主要分析时钟的初始化. 今天我们会用到的文档: 1. ...
- Linux之uboot分析与移植20160601
说一下uboot分析与移植: 1.下载.建立source insight工程.编译.烧写.如果无运行分析原因 tar xjf u-boot-2012.04.01.tar.bz2 cd u-boot-2 ...
- u-boot分析(十一)----MMU简单分析|u-boot分析大结局|学习规划
u-boot分析(十一) 通过前面十篇博文,我们已经完成了对BL1阶段的分析,通过这些分析相信我们对u-boot已经有了一个比较深入的认识,在BL2阶段大部分是对外设的初始化,并且有的我们已经分析过, ...
- u-boot分析(十)----堆栈设置|代码拷贝|完成BL1阶段
u-boot分析(十) 上篇博文我们按照210的启动流程,分析到了初始化nand flash,由于接下来的关闭ABB比较简单所以跳过,所以我们今天按照u-boot的启动流程继续进行分析. 今天我们会用 ...
- u-boot分析(五)----I/D cache失效|关闭MMU和cache|关闭看门狗
u-boot分析(五) 上篇博文我们按照210的启动流程,对u-boot启动中的设置异常向量表,设置SVC模式进行了分析,今天我们继续按照u-boot的启动流程对以下内容进行分析. 今天我们会用到的文 ...
- u-boot分析(四)---设置异常向量表|设置SVC模式
u-boot分析(四) 通过前三篇的分析,我们对u-boot已经有了整体的认识和掌握,但是我们仍然对于其部分硬件是如何初始化的不太清楚,所以接下来几篇博文我将会对我们在http://www.cnblo ...
随机推荐
- jsoncpp笔记
Json Json是一种轻量级数据交换格式,可以表示数字,字符串,布尔值,null,数组,键值对: { "encoding" : "UTF-8", " ...
- k8s node上查看节点
node执行 mkdir -p /root/.kube master执行 scp admin.conf node1:/root/.kube/config
- linux(centos8):prometheus使用alertmanager发送报警邮件(prometheus 2.18.1/alertmanager 0.20.0)
一,alertmanager的用途 1,Alertmanager的作用: Alertmanager是一个独立的报警模块, 它接收Prometheus等客户端发来的警报,并通过分组.删除重复等处理, 通 ...
- linux(centos8):用tr替换或删除字符
一,tr命令的用途 tr命令可以替换或删除文件中的字符 它从标准输入设备读取数据, 处理完成将结果输出到标准输出设备 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnbl ...
- 赋予楼宇“智慧大脑”:厦门双子塔3D可视化
前言 今年10月7日,是国务院批准设立厦门经济特区40周年纪念日.1980年的这一天,国务院正式批复同意在厦门湖里地区划出一块2.5平方公里的土地,设立经济特区.厦门,成为中国最早设立的四个经济特区之 ...
- C++ Primer第5版 第一章课后练习
练习1.9 #include <iostream> int main() { int sum = 0, val = 50; while (val <= 100) { sum += v ...
- laytable 前台删除后加载当前页数据。
laytable一次性获取数据后,点击删除调用后台删除.返回成功状态后刷新当前页数据. 渲染方法: //渲染表格 function renderingTable(pageIndex, sourceDa ...
- django—视图相关
FBV与CBV FBV:function based view 基于函数的视图 CBV:class based view 基于类的视图 CBV的定义: from django.views imp ...
- CocoaFoundation和CoreFoundation之间数据转换(桥接__bridge)
ARC仅管理Objective-C指针(retain.release.autorelease),不管理CoreFoundation指针,CF指针由人工管理,手动的CFRetain和CFRelease来 ...
- 自动识别PC端、移动端,并跳转
PC端和移动端代码是分开的,各有一套代码的情况下: 在PC端的HTML文件head标签中间添加一段自动识别移动端的JavaScript代码: <script type="text/ja ...