芯片上电解复位之后执行的第一段程序,在芯片中称之为Bootrom loader。这部分程序在芯片制造过程中固化到其内部的ROM空间,具备只读属性,在实际使用过程中无法修改这部分内容,这部分程序的知识产权也仅归属于芯片公司所有。其实,你也可以将Bootrom loader称之为固件。

对于ARM架构的处理器而言,芯片上电解复位后的PC通常是指向0x000000000xffff0000地址,也就是说,它会去该地址处取第一条指令、译码、执行。CPU能支持的启动模式通过硬件拨码的方式告知CPU,CPU上电解复位后内部逻辑会识别bootmode。依据识别出的bootmode决定去何处取第一条指令。假设解析bootmode后发现并不是从bootrom启动,而是从其他存储外设启动,例如norflashnandflashqspiflash等,这些外设就会变为CPU的一级启动设备,而CPU内部逻辑也会将这些启动外设的地址空间进行remap处理。

RK3399内部包含4个ARM cortex-A53以及2个cortex-A72,典型的cluster结构,cortex-A53作为小核而cortex-A72作为大核。当系统上电解复位之后,cortex-A53的core0作为第一个启动的核心,执行0xffff0000处的Bootrom loader程序。

其完整的启动流程如下图所示:

+--------+----------------+----------+-------------+---------+
| Boot   | Terminology #1 | Actual   | Rockchip    | Image   |
| stage  |                | program  |  Image      | Location|
| number |                | name     |   Name      | (sector)|
+--------+----------------+----------+-------------+---------+
| 1      |  Primary       | ROM code | BootRom     |         |
|        |  Program       |          |             |         |
|        |  Loader        |          |             |         |
|        |                |          |             |         |
| 2      |  Secondary     | U-Boot   |idbloader.img| 0x40    | pre-loader
|        |  Program       | TPL/SPL  |             |         |
|        |  Loader (SPL)  |          |             |         |
|        |                |          |             |         |
| 3      |  -             | U-Boot   | u-boot.itb  | 0x4000  | including u-boot and atf
|        |                |          | uboot.img   |         | only used with miniloader
|        |                |          |             |         |
|        |                | ATF/TEE  | trust.img   | 0x6000  | only used with miniloader
|        |                |          |             |         |
| 4      |  -             | kernel   | boot.img    | 0x8000  |
|        |                |          |             |         |
| 5      |  -             | rootfs   | rootfs.img  | 0x40000 |
+--------+----------------+----------+-------------+---------+

RK3399的二级启动设备支持SPI NOR FLASHSPI NAND FLASHeMMCSD以及USB load,可以将二级启动程序放置于上述静态存储设备中,RK3399通过读取ID BLOCK信息决定当前启动程序是否有效。

RK3399提供了镜像文件更新的软件工具AndroidTool.exe,该工具可以更新二级启动程序及之后的所有镜像。

对于如何进入到固件更新模式,这取决于板卡的设计方式,例如我们手中的这块板子,它进入固件更新方式如下:

使用 Type-C 线连接开发板和主机,按住 recover 键然不要松开然后按 reset 键系统复位,大约两秒后,松开 recover 键。系统将提示发现 loader 设备。


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

嵌入式Linux

微信扫描二维码,关注我的公众号

CPU上电后加载程序的流程 | 基于RK3399相关推荐

  1. Z-Wave 700应用程序框架第七章 - 固件更新和引导加载程序

    本节的目的是描述如何生成和管理固件更新映像. ZW700 SDK附带三个引导加载程序映像. 一个是FG14模块的OTW图像. 这个引导加载程序只适用于运行SerialAPI的FG14设备. 另外两个引 ...

  2. win10升级后CFT加载程序占用CPU高解决办法

    win10升级后CFT加载程序占用CPU高,目前网上的解释是微软BUG,需要待后续版本解决,CPU持续占用较高,干不了其它事情,可以用如下方法解决. 用windows进程管理杀死后,由于此进程会自动启 ...

  3. 安装Keil537加载程序并编译后

    安装Keil5.37版本,加载程序,编译时终止,出现错误: *** Target 'Target 1' uses ARM-Compiler 'Default Compiler Version 5' w ...

  4. BootLoader——嵌入式系统的引导加载程序

    BootLoader--嵌入式系统的引导加载程序 一.BootLoader的简介 1.1 BootLoader在固态存储设备中的位置 1.2 BootLoader的启动过程 1.3 BootLoade ...

  5. 搞一下TDA4 | 03 TDA4 辅助引导加载程序SBL

    前言 本系列请点击:<搞一下TDA4> 所有系列请点击:<汽车电子系列分享> 本文档将介绍如何在处理器SDK TDA4(RTOS/Linux) 中理解辅助引导加载程序SBL 全 ...

  6. 【Android 插件化】基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )

    文章目录 一.自定义路径加载插件 二.系统路径加载插件 三.用户同意后加载插件 四.隐藏恶意插件 一.自定义路径加载插件 插件化应用中 , 宿主应用 加载 插件 APK , 需要获取该插件 APK 文 ...

  7. html中加载解析,HTML页面加载和解析流程详细介绍

    序言: 我一直都认为"网页制作"这个词是一个不怎么高端的词,在我的印象中网页制作的词是没有生命力的一个制作,我喜欢用HTML 这样简单直接,这词凸显高端,有大气漂亮的UI.一套完美 ...

  8. cwyw不是有效的加载项_ADAS/AD开发09 - UDS与引导加载程序

    本文属于ADAS控制器开发系列.以智能前视摄像头模块为基础. 前言 引导加载程序,即Bootloader(简称BL),是ECU的基本模块,实现方式也很多. 本文介绍的Bootloader刷写功能的下载 ...

  9. HTML页面加载和解析流程详细介绍

    浏览器加载和渲染html的顺序.如何加快HTML页面加载速度.HTML页面加载和解析流程等等,在本文将为大家详细介绍下,感兴趣的朋友不要错过 浏览器加载和渲染html的顺序 1. IE下载的顺序是从上 ...

最新文章

  1. 杂志类(CMS)主题使用攻略
  2. ARM体系结构及内核回顾总结(一)
  3. ACM入门之【前缀和】
  4. BJUI+SSM实现报表添加时间筛选功能
  5. 泛型集合 无序泛型 c#
  6. PHP的几个常用加密函数
  7. ubuntu 操作记录
  8. Beta函数与Gamma函数及其与Beta分布的关系
  9. 添加css单词换行连字符
  10. 二叉排序树BST代码(JAVA)
  11. Python数据结构与算法--面向对象
  12. VSCode安装LeetCode插件
  13. 什么叫服务器加密狗信息异常,加密狗不能识别,只是服务器能用,客户端提示到期,是什么原因,已经换了口,也重启过电脑了。...
  14. 证件照排版软件_傻瓜式证件照片排版以及尺寸的调整
  15. 【PTA 6-10】输入多个单词,统计以指定字母开头的单词个数
  16. 第一次QQ群视频教育有感
  17. 如何使用HTML5+CSS3绘制一个QQ 企鹅Logo
  18. 计算机整理桌面怎么弄,图文详解如何整理桌面
  19. 基于微信小程序食谱大全系统(微信小程序毕业设计)
  20. VMware15虚拟机安装MacOS10.13苹果系统教程

热门文章

  1. rabbitmq的安装全过程
  2. iOS - Swift SQLite 数据库存储
  3. 限制MySQL Binlog的传输速率
  4. 真格量化-隐含波动率购买
  5. 学成在线--18.新增课程(课程分类查询)
  6. Flask项目--发送短信验证码
  7. php按照文件名字排序,php readdir 排序问题,如何按照日期进行排序
  8. Linux 修改系统编码
  9. 电脑键盘练习_电脑新手最关心的:零基础如何快速掌握电脑打字的技巧?
  10. 【Python基础入门系列】第03天:Python 变量与数据类型