am335x uboot2016.05 (MLO u-boot.img)执行流程(转)
am335x的cpu上电后,执行流程:ROM->MLO(SPL)->u-boot.img
第一级bootloader:引导加载程序,板子上电后会自动执行这些代码,如启动方式(SDcard、SPI、NOR),然后跳转至第二级bootloader。这些代码应该是存放在 176KB 的 ROM 中
第二级bootloader:MLO(SPL),用于硬件初始化,关看门狗,关中断,设置CPU时钟频率、速度、加载uboot.img、dts等操作,MLO文件应该会被映射到 64 KB的 Internal SRAM 中。
第三级bootloader:u-boot.img, C代码的入口
MLO与u-boot执行流程如下:
reset //(arch/arm/cpu/armv7/start.S)
save_boot_params_ret //(arch/arm/cpu/armv7/start.S)
|- disable interrupts
|- cpu_init_cp15 //(arch/arm/cpu/armv7/start.S)
| |- Invalidate L1 I/D
| |- disable MMU stuff and caches
|- cpu_init_crit //(arch/arm/cpu/armv7/start.S)
| |- lowlevel_init //(arch/arm/cpu/armv7/lowlevel_init.S)
| |- Setup a temporary stack
| |- Set up global data
| |- s_init //(arch/arm/cpu/armv7/am33xx/board.c)
| |- watchdog_disable
| |- set_uart_mux_conf
| |- setup_clocks_for_console
| |- uart_soft_reset
|- _main //(arch/arm/lib/crt0.S)
|(MLO)如果是 MLO 文件
|- board_init_f //(arch/arm/cpu/armv7/am33xx/board.c)
| |- board_early_init_f //(arch/arm/cpu/armv7/am33xx/board.c)
| | |- prcm_init
| | |- set_mux_conf_regs
| |- sdram_init //(board/ti/am335x/board.c) 初始化 DDR
|- spl_relocate_stack_gd
|- board_init_r //(common/spl/spl.c) 【完成u-boot.img dts加载】
|- ...
|- spl_load_image //根据不同的启动方式加载 u-boot 镜像,
|- jump_to_image_no_args //进入u-boot代码运行
|(U-Boot)如果是U-Boot 镜像
|- board_init_f //(common/board_f.c)
| |- ...
| |- initcall_run_list(init_sequence_f)
| |- ...
|
|- relocate_code //(arch/arm/lib/relocate.S) 代码重定位
|- relocate_vectors //(arch/arm/lib/relocate.S) 向量表重定义
|- Set up final (full) environment
|- board_init_r //(common/board_r.c)
|- initcall_run_list(init_sequence_r)//初始化各种外设
|- main_loop()
am335x uboot2016.05 (MLO u-boot.img)执行流程(转)的更多相关文章
- am335x uboot2016.05 (MLO u-boot.img)执行流程
am335x的cpu上电后,执行流程:ROM->MLO(SPL)->u-boot.img 第一级bootloader:引导加载程序,板子上电后会自动执行这些代码,如启动方式(SDcard. ...
- Spring Boot程序的执行流程
Spring Boot的执行流程如下图所示:(图片来源于网络) 上图为SpringBoot启动结构图,我们发现启动流程主要分为三个部分,第一部分进行SpringApplication的初始化模块,配置 ...
- Spring Boot可执行Jar包运行原理
目录 1. 打可执行Jar包 2. 可执行Jar包内部结构 3. JarLauncher 4. 简单总结 5. 远程调试 Spring Boot有一个很方便的功能就是可以将应用打成可执行的Jar.那么 ...
- Gradle 如何打包 Spring Boot 可执行 JAR
如何在 Gradle 中配置一个项目可以打包为 Spring Boot 可执行 Jar? 你首先需要添加到 org.springframework.boot 到插件中: 例如下面的代码: plugin ...
- 040 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 02 while循环的执行流程
040 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 02 while循环的执行流程 本文知识点:while循环的执行流程 三种循环结构中的第一种--wh ...
- Android系统Recovery工作原理之使用update.zip升级过程---updater-script脚本语法简介以及执行流程(转)
目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本 ...
- 追源索骥:透过源码看懂Flink核心框架的执行流程
li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt, ...
- Spring Security Oauth2 单点登录案例实现和执行流程剖析
Spring Security Oauth2 OAuth是一个关于授权的开放网络标准,在全世界得到的广泛的应用,目前是2.0的版本.OAuth2在“客户端”与“服务提供商”之间,设置了一个授权层(au ...
- Spring Security 案例实现和执行流程剖析
Spring Security Spring Security 是 Spring 社区的一个顶级项目,也是 Spring Boot 官方推荐使用的安全框架.除了常规的认证(Authentication ...
随机推荐
- python之通过thread来实现多进程
代码如下: import threading, time class Test1(threading.Thread): def __init__(self, name): super().__init ...
- Best Free Hacking E-Books 2017 In PDF Format
1.Best Free Hacking E-Books 2017 In PDF Format: 电子书籍下载地址 后续我会更新在我的百度云资源 上,需要的留言Black Belt Hacking &a ...
- Python中什么是深拷贝和浅拷贝且有什么区别
浅拷贝: >>> a = [1, 2, 3] >>> b = a >>> a [1, 2, 3] >>> b [1, 2, 3] ...
- vue指令问题
挂载点:最外层标签就是vue实例的挂载点,即id或者类对应的 dom节点 模板:指挂载点内部的内容,在实例里使用template标签来构 建 h1标签放在body里面不使用 “template”是一样 ...
- python截图
import time import os, win32gui, win32ui, win32con, win32api def window_capture(dpath,name,srcbmp=[0 ...
- ORACLE EHCC(exadata hybrid columnar compression)
目录: 1. 简介 2. 压缩方式及压缩比 3. 压缩哪些数据 4. 可能有用的脚本 一.简介 EHCC(Exadata Hybrid Columnar Compression),是Oralce 数据 ...
- 【C++ Primer | 15】继承的构造函数
继承的构造函数 子类为完成基类初始化,在C++11之前,需要在初始化列表调用基类的构造函数,从而完成构造函数的传递.如果基类拥有多个构造函数,那么子类也需要实现多个与基类构造函数对应的构造函数. cl ...
- 报错ERR_CONNECTION_REFUSED,如何解决(原创)
当我访问我的一个后天地址的时候,突然出现了ERR_CONNECTION_REFUSED,但是之前是可以访问的. 我先ping了下这个网址,发现是OK的 然后我想可能是80端口有问题,也就是说可能是WE ...
- gradle repo conf - maven-central.storage-download.googleapis.com
repositories { google() jcenter() maven { // The google mirror is less flaky than mavenCentral() url ...
- C#学习-字段
字段的定义由3部分组成,访问修饰符.字段的类型和字段的名称.以下是 public class Person { //姓名,类型为字符串类型 private string name; //年龄,类型为i ...