CPU上电后加载程序的流程 | 基于RK3399
芯片上电解复位之后执行的第一段程序,在芯片中称之为Bootrom loader
。这部分程序在芯片制造过程中固化到其内部的ROM空间,具备只读属性,在实际使用过程中无法修改这部分内容,这部分程序的知识产权也仅归属于芯片公司所有。其实,你也可以将Bootrom loader
称之为固件。
对于ARM架构的处理器而言,芯片上电解复位后的PC通常是指向0x00000000
或0xffff0000
地址,也就是说,它会去该地址处取第一条指令、译码、执行。CPU能支持的启动模式通过硬件拨码的方式告知CPU,CPU上电解复位后内部逻辑会识别bootmode
。依据识别出的bootmode
决定去何处取第一条指令。假设解析bootmode
后发现并不是从bootrom
启动,而是从其他存储外设启动,例如norflash
、nandflash
、qspiflash
等,这些外设就会变为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 FLASH
、SPI NAND FLASH
、eMMC
、SD
以及USB load,可以将二级启动程序放置于上述静态存储设备中,RK3399通过读取ID BLOCK信息决定当前启动程序是否有效。
RK3399提供了镜像文件更新的软件工具AndroidTool.exe
,该工具可以更新二级启动程序及之后的所有镜像。
对于如何进入到固件更新模式,这取决于板卡的设计方式,例如我们手中的这块板子,它进入固件更新方式如下:
使用 Type-C 线连接开发板和主机,按住 recover 键然不要松开然后按 reset 键系统复位,大约两秒后,松开 recover 键。系统将提示发现 loader 设备。
推荐阅读:
专辑|Linux文章汇总
专辑|程序人生
专辑|C语言
我的知识小密圈
关注公众号,后台回复「1024」获取学习资料网盘链接。
欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~
嵌入式Linux
微信扫描二维码,关注我的公众号
CPU上电后加载程序的流程 | 基于RK3399相关推荐
- Z-Wave 700应用程序框架第七章 - 固件更新和引导加载程序
本节的目的是描述如何生成和管理固件更新映像. ZW700 SDK附带三个引导加载程序映像. 一个是FG14模块的OTW图像. 这个引导加载程序只适用于运行SerialAPI的FG14设备. 另外两个引 ...
- win10升级后CFT加载程序占用CPU高解决办法
win10升级后CFT加载程序占用CPU高,目前网上的解释是微软BUG,需要待后续版本解决,CPU持续占用较高,干不了其它事情,可以用如下方法解决. 用windows进程管理杀死后,由于此进程会自动启 ...
- 安装Keil537加载程序并编译后
安装Keil5.37版本,加载程序,编译时终止,出现错误: *** Target 'Target 1' uses ARM-Compiler 'Default Compiler Version 5' w ...
- BootLoader——嵌入式系统的引导加载程序
BootLoader--嵌入式系统的引导加载程序 一.BootLoader的简介 1.1 BootLoader在固态存储设备中的位置 1.2 BootLoader的启动过程 1.3 BootLoade ...
- 搞一下TDA4 | 03 TDA4 辅助引导加载程序SBL
前言 本系列请点击:<搞一下TDA4> 所有系列请点击:<汽车电子系列分享> 本文档将介绍如何在处理器SDK TDA4(RTOS/Linux) 中理解辅助引导加载程序SBL 全 ...
- 【Android 插件化】基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )
文章目录 一.自定义路径加载插件 二.系统路径加载插件 三.用户同意后加载插件 四.隐藏恶意插件 一.自定义路径加载插件 插件化应用中 , 宿主应用 加载 插件 APK , 需要获取该插件 APK 文 ...
- html中加载解析,HTML页面加载和解析流程详细介绍
序言: 我一直都认为"网页制作"这个词是一个不怎么高端的词,在我的印象中网页制作的词是没有生命力的一个制作,我喜欢用HTML 这样简单直接,这词凸显高端,有大气漂亮的UI.一套完美 ...
- cwyw不是有效的加载项_ADAS/AD开发09 - UDS与引导加载程序
本文属于ADAS控制器开发系列.以智能前视摄像头模块为基础. 前言 引导加载程序,即Bootloader(简称BL),是ECU的基本模块,实现方式也很多. 本文介绍的Bootloader刷写功能的下载 ...
- HTML页面加载和解析流程详细介绍
浏览器加载和渲染html的顺序.如何加快HTML页面加载速度.HTML页面加载和解析流程等等,在本文将为大家详细介绍下,感兴趣的朋友不要错过 浏览器加载和渲染html的顺序 1. IE下载的顺序是从上 ...
最新文章
- 杂志类(CMS)主题使用攻略
- ARM体系结构及内核回顾总结(一)
- ACM入门之【前缀和】
- BJUI+SSM实现报表添加时间筛选功能
- 泛型集合 无序泛型 c#
- PHP的几个常用加密函数
- ubuntu 操作记录
- Beta函数与Gamma函数及其与Beta分布的关系
- 添加css单词换行连字符
- 二叉排序树BST代码(JAVA)
- Python数据结构与算法--面向对象
- VSCode安装LeetCode插件
- 什么叫服务器加密狗信息异常,加密狗不能识别,只是服务器能用,客户端提示到期,是什么原因,已经换了口,也重启过电脑了。...
- 证件照排版软件_傻瓜式证件照片排版以及尺寸的调整
- 【PTA 6-10】输入多个单词,统计以指定字母开头的单词个数
- 第一次QQ群视频教育有感
- 如何使用HTML5+CSS3绘制一个QQ 企鹅Logo
- 计算机整理桌面怎么弄,图文详解如何整理桌面
- 基于微信小程序食谱大全系统(微信小程序毕业设计)
- VMware15虚拟机安装MacOS10.13苹果系统教程