uboot——初始化阶段
start.S
|-------------设置cpu状态
|--------------开cache
|--------------获得启动方式
|--------------------------------------lowlevel_init
| |---------------关看门狗
| |---------------PS_HOLD
| |---------------初始化时钟
| |---------------初始化DDR
| |---------------初始化uart 并打印 ok
|------------设置C栈
|------------重定向
|-----------开MMU
|------------设置栈
|------------清BSS
|-------------bl start_armboot
start.S 有两点重要:
(1)打印OK
(2)能获得物理和虚拟的内存地址和栈顶地址
start_armboot
|------------定义变量 gd
|------------init_sequence
| |-----------------board_init
| | |--------------初始化网卡,获得arh_number 和 内核传参基地址
| |-----------------interrupt_init
| | |--------------初始化PWM定时器
| |------------------env_init
| | |---------------定义环境变量
| |------------------init_baudrate
| | |---------------获得波特率
| |------------------display_banner
| | |---------------显示版本信息
| |------------------print_cpuinfo
| | |----------------显示cpu时钟信息
| |------------------dram_init
| | |-----------------记录DDR起始地址和大小
|-------------初始化堆
|-------------初始化存储介质
|-------------环境变量重定位
|-------------从环境变量中读取自己的IP地址和MAC地址
|-------------初始化控制台,中断
|-------------main_loop
这部分主要工作是初始化外设和完成软件层的初始化
main_loop
查找命令
find_cmd
根据输入的命令名称,遍历__u_boot_cmd_start 到 __u_boot_cmd_end 段,找到对应的cmd_tbl_t 定义。
执行命令
rcode = (cmdtp->cmd)
(cmdtp, flag,child->argc-i,&child->argv[i]);
前两个参数cmdtp flag没什么用
后两个参数为 该命令的 argc, argv
uboot——初始化阶段的更多相关文章
- uboot启动阶段修改启动参数方法及分析
作者:围补 本来启动方式这节不是什么复杂的事儿,不过想简单的说清楚明白,还真是不知道怎么组织.毕竟文字跟有声语言表达有别.但愿简单的东西别让我讲的太复杂! Arm板系统文件一般有三个——bootloa ...
- 【ARM-Linux开发】 uboot启动阶段修改启动参数方法及分析
作者:围补 本来启动方式这节不是什么复杂的事儿,不过想简单的说清楚明白,还真是不知道怎么组织.毕竟文字跟有声语言表达有别.但愿简单的东西别让我讲的太复杂! Arm板系统文件一般有三个--bootloa ...
- React组件生命周期-初始化阶段的函数执行顺序
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
- junit源码解析--初始化阶段
OK,我们接着上篇整理.上篇博客中已经列出的junit的几个核心的类,这里我们开始整理junit完整的生命周期. JUnit 的完整生命周期分为 3 个阶段:初始化阶段.运行阶段和结果捕捉阶段. 这篇 ...
- react初始化阶段
初始化阶段可以使用的函数:getDefaultProps:只调用一次,实例之间共享引用.只有在组件的第一个实例被初始化的时候,才会调用他,然后react会把这个函数的返回结果保存起来,从第二个实例开始 ...
- uboot第一阶段关键位置分析
/* * the actual reset code */ reset: /* * set the cpu to SVC32 mode */ mrs r0,cpsr bic r0,r0,#0x1f o ...
- 深入理解JVM-类加载初始化阶段-类的主动与被动引用
JVM的类加载阶段中初始化阶段 P210 虚拟机规定的五种情况必须对类的“初始化”情况 1.遇到new.getstatic.putstatic.或invokestic 四条字节码指令时,如果类没有经过 ...
- openresty开发系列32--openresty执行流程之1初始化阶段
openresty开发系列32--openresty执行流程之初始化阶段 一)初始化阶段 1)init_by_lua init_by_lua_block init_by_lua_file语 ...
- JVM 初始化阶段的重要意义分析
1.创建一个Mytest6类和Singleton类 public class MyTest6 { public static void main(String[] args) { Singleton ...
随机推荐
- Linux Centos7 安装Docker-CE
先确保yum 是最新版本 执行: sudo yum update 添加docker源地址 sudo yum-config-manager --add-repo https://download.doc ...
- Verilog基础入门——简单的语句块编写(一)
[题干] [代码] module top_module ( input in, output out ); assign out = ~in; endmodule 简单的实现一个非门
- Jmeter之参数化函数助手__CSVRead
1.在Tool->函数对话框中选择__CSVRead,2处填写测试用例的文档地址(测试用例要以csv格式保存),3处是测试用例中参数的位置,第一栏参数的CSV文件列号填0,第二栏参数的CSV文件 ...
- JetBrains-CLion永久激活教程
前言 JetBrains Clion 是一款专为 C/C++ 开发所设计的跨平台 IDE.本文适用 JetBrains CLion v2019.3/3.1/3.2/3.3 永久激活,附破解补丁和激活码 ...
- 解决/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory报错 (转)
解决/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory报错 念淅 2020-01-03 15:02:25 3793 收 ...
- 通过SQL自动添加流水号
通过SQL自动添加流水号 项目中往往有一些单据流水号或者流程流水号是希望通过新增一条记录后自动产生一个编号的,比如新增一条流程就自动根据当前日期自动添加该流程的流程流水号,下面介绍两种不同类型流水号通 ...
- matplotlib作图 归零编码、曼切斯特编码、非归零编码、差分曼切斯特编码
效果图 代码 import matplotlib.pyplot as plt config = { 'color': 'black', 'lw': 5, } def init(): plt.figur ...
- APP打开(一)—以亲身经历谈APP注册登录
如果不是自己接手过这样的产品,我可能也很难相信,会有公司能够做出十四个注册页面的APP,将选站点.输账号.输密码.用户协议.用户权限等全部拆解成一个一个单独的页面来做,用户在注册的时候仿佛在攀登一座云 ...
- 【线上排查实战】AOP切面执行顺序你真的了解吗
前言 忙,是我这个月的主旋律,也是我频繁鸽文章的接口----蛮三刀把刀 公司这两个月启动了全新的项目,项目排期满满当当,不过该学习还是要学习.这不,给公司搭项目的时候,踩到了一个Spring AOP的 ...
- RxJava用法
首先导入依赖: implementation 'io.reactivex.rxjava2:rxjava:2.2.9'implementation 'io.reactivex.rxjava2:rxand ...