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()

详细参考 BeagleBone Black 从零到一 (2 MLO、U-Boot) http://jexbat.com/2016/BBB-Uboot/

am335x uboot2016.05 (MLO u-boot.img)执行流程的更多相关文章

  1. am335x uboot2016.05 (MLO u-boot.img)执行流程(转)

    am335x的cpu上电后,执行流程:ROM->MLO(SPL)->u-boot.img 第一级bootloader:引导加载程序,板子上电后会自动执行这些代码,如启动方式(SDcard. ...

  2. Spring Boot程序的执行流程

    Spring Boot的执行流程如下图所示:(图片来源于网络) 上图为SpringBoot启动结构图,我们发现启动流程主要分为三个部分,第一部分进行SpringApplication的初始化模块,配置 ...

  3. Spring Boot可执行Jar包运行原理

    目录 1. 打可执行Jar包 2. 可执行Jar包内部结构 3. JarLauncher 4. 简单总结 5. 远程调试 Spring Boot有一个很方便的功能就是可以将应用打成可执行的Jar.那么 ...

  4. Gradle 如何打包 Spring Boot 可执行 JAR

    如何在 Gradle 中配置一个项目可以打包为 Spring Boot 可执行 Jar? 你首先需要添加到 org.springframework.boot 到插件中: 例如下面的代码: plugin ...

  5. 040 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 02 while循环的执行流程

    040 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 02 while循环的执行流程 本文知识点:while循环的执行流程 三种循环结构中的第一种--wh ...

  6. Android系统Recovery工作原理之使用update.zip升级过程---updater-script脚本语法简介以及执行流程(转)

    目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本 ...

  7. 追源索骥:透过源码看懂Flink核心框架的执行流程

    li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt, ...

  8. Spring Security Oauth2 单点登录案例实现和执行流程剖析

    Spring Security Oauth2 OAuth是一个关于授权的开放网络标准,在全世界得到的广泛的应用,目前是2.0的版本.OAuth2在“客户端”与“服务提供商”之间,设置了一个授权层(au ...

  9. Spring Security 案例实现和执行流程剖析

    Spring Security Spring Security 是 Spring 社区的一个顶级项目,也是 Spring Boot 官方推荐使用的安全框架.除了常规的认证(Authentication ...

随机推荐

  1. HDU-1994-利息计算

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1994 水题 题目分析 就是两种储存方式,输出所得本金加利息 代码 #include<stdio. ...

  2. BNU Online Judge-29140

    题目链接 http://www.bnuoj.com/bnuoj/problem_show.php?pid=29140 看到这样的题,应该想到an  与an-1  的关系,他们是会有关系的你要去找 代码 ...

  3. jQuery wrap wrapAll wrapInner使用

    jQuery wrap wrapAll wrapInner使用 <%@ page language="java" import="java.util.*" ...

  4. jQ小图标上下滑动特效

    嗯,又到了,夜静饥寒的时候,手指颤抖,回望去,屋内满是寂静,寥寥绰影,咳咳咳,想我程序员之路还没到终点...就...咳咳咳 好了日常神经结束,还要涂我的唇膏.还剩下,最后一章,js动画(四),明天放上 ...

  5. Excel实用知识2(排序,筛选,分析工具)

    [排序,筛选,分析工具(描述统计,相关系数,回归分析,抽样分析,预测工作表)] 纯手打,可能有错别字,使用的版本是office2013 转载请注明出处 http://www.cnblogs.com/h ...

  6. 应用程序初次运行数据库配置小程序(Java版)

    应用程序初始化数据库配置小程序 之前写过一个Java版的信息管理系统,但部署系统的时候还需要手动的去配置数据库和导入一些初始化的数据才能让系统运行起来,所以我在想是不是可以写一个小程序在系统初次运行的 ...

  7. C# 数组、ArrayList、List、Dictionary的用法与区别

    前言 在工作中经常遇到C#数组.ArrayList.List.Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍.于是抽空好好看了下他们的用法和比较,在这 ...

  8. Windows 10 IoT Serials 5 - 如何为树莓派应用程序添加语音识别与交互功能

    都说语音是人机交互的重要手段,虽然个人觉得在大庭广众之下,对着手机发号施令会显得有些尴尬.但是在资源受限的物联网应用场景下(无法外接鼠标键盘显示器),如果能够通过语音来控制设备,与设备进行交互,那还是 ...

  9. ADO.NET 防止SQL注入

    规避SQL注入 如果不规避,在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入Code值 p001' union select * from Info where '1'='1 //这样可 ...

  10. 游戏音频技术备忘 (三) 集成Wwise到Unreal Engine

    当前受众较广的商业游戏引擎有 Unreal Engine.Unity.cocos2d-x等,在音频领域的第三方中间件则有Wwise.FMOD.Criware等,言多且烦,我们首先集成Wwise到 Un ...