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. Handler消息传递机制——Handler类简洁

    Handler类的主要作用有两个: 在新启动的线程中发送消息. 在主线程中获取.处理消息. 上面的说法很简单,只要分成两步即可:在新启动的线程中发送消息:然后在主线程上获取.并处理消息.但这个过程涉及 ...

  2. css全局样式表

    http://blog.csdn.net/baok1592/article/details/6448378

  3. delphi BitmapCompress

    unit Unit2; interface uses  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Va ...

  4. gulp源码解析(二)—— vinyl-fs

    在上一篇文章我们对 Stream 的特性及其接口进行了介绍,gulp 之所以在性能上好于 grunt,主要是因为有了 Stream 助力来做数据的传输和处理. 那么我们不难猜想出,在 gulp 的任务 ...

  5. ECMAScript 6 笔记(六)

    编程风格 1. 块级作用域 (1)let 取代 var (2)全局常量和线程安全 在let和const之间,建议优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量. const优于le ...

  6. TV端:通过遥控器的点击实现图片的上下左右抖动的效果

    做TV端有一段时间了,我看到别的TV上有一个通过遥控器的触摸板来控制一张图片的相应方向的抖动,感觉听新奇的,就试着做了一个分享一下: 转载注明出处:http://www.cnblogs.com/hyy ...

  7. WEB安全测试通常要考虑的测试点

    1问题:没有被验证的输入测试方法: 数据类型(字符串,整型,实数,等)允许的字符集 最小和最大的长度是否允许空输入参数是否是必须的重复是否允许数值范围特定的值(枚举型)特定的模式(正则表达式) 2问题 ...

  8. Android仿微信朋友圈,全文收起功能,附源码

    在众多的社交类软件中,朋友圈是必不可少的,可以与好友.同学等分享自己的日常和有意思的事情,在开发社交类App时,朋友圈发表的内容你不可能让他全部显示,全部显示的话用户体验度会非常不好,这时就要用到全文 ...

  9. setObject:forKey和setValue:forKey的区别

    setObject:forKey: 是NSMutableDictionary类的方法                              key参数类型可以是任意类型对象             ...

  10. vue2重写饿了么

    构建 vue有自己的脚手架构建工具vue-cli,使用起来非常方便,使用webpack来集成各种开发便捷工具,比如: 代码热更新,修改代码之后网页无刷新改变,对前端开发来说非常的方便 PostCss, ...