当前位置: 首页 > java >正文

RK3399 启动流程 --从复位到系统加载

一、启动入口:ROM Code的执行

RK3399的启动流程始于Cortex-A53核心从固定地址​​0xFFFF0000​​获取第一条指令。这个地址是Rockchip芯片设计的硬件复位向量,由内置的​​ROM Code​​(固化在芯片内部的引导代码)开始执行。ROM Code作为启动流程的"第一推动力",负责初始化基础硬件并寻找可启动的存储设备。

二、存储设备探测:四级递进式检查

ROM Code会按照特定顺序探测外部存储设备,采用经典的"设备树"式检测逻辑:

  1. ​SPI Nor Flash优先检测​​:首先检查高速串行闪存,适合存储小型引导程序。
  2. ​SPI NAND Flash次之​​:针对采用NAND架构的串行闪存设备。
  3. ​eMMC设备检测​​:嵌入式存储介质,常见于工业级应用。
  4. ​SD/MMC卡最后检测​​:作为可移动存储的备选方案。

每个检测环节都会验证设备的​​ID BLOCK​​(标识块),这是Rockchip定义的特定数据结构,包含设备签名和基础参数。只有当ID BLOCK验证通过时,才会进入对应设备的启动流程。

三、备用方案:USB启动模式

当所有存储介质均未通过验证时,系统会初始化​​USB OTG端口​​,进入下载模式(Download Mode)。这种设计为系统恢复提供了最后手段:

  • 开发者可通过USB烧录工具重新写入引导程序
  • 支持Rockchip特有的MaskROM模式修复砖机
四、内存初始化:精密的三阶段加载

成功识别启动设备后,系统执行精密的初始化序列:

  1. ​SRAM阶段​​:将SDRAM初始化代码(通常<32KB)加载到芯片内部SRAM运行,避开未初始化的DDR内存。
  2. ​DDR初始化​​:运行SRAM中的代码配置内存控制器,使外部DDR内存可用。
  3. ​代码转移​​:将更大的引导代码从存储设备搬运到已初始化的DDR内存。
五、多级引导架构

RK3399采用典型的嵌入式系统引导链:

  1. ​DDR Image​​:包含基础硬件驱动和文件系统支持
  2. ​Loader Image​​:实现更复杂的设备初始化和安全验证
  3. ​最终引导​​:加载操作系统内核(如Linux)或进入Fastboot等特殊模式
六、设计特点分析
  1. ​容错机制​​:多级存储检测确保单一存储故障不影响系统恢复能力
  2. ​安全考虑​​:每阶段代码都需验证完整性签名
  3. ​性能优化​​:通过SRAM先行初始化DDR的设计避免内存冲突
  4. ​扩展性​​:USB下载模式支持后期固件更新

该流程图清晰展现了现代ARM SoC从硬件复位到软件加载的完整过程,其模块化设计思想值得嵌入式开发者借鉴。理解这个流程对于进行RK3399平台的低层开发、系统移植和故障诊断都具有重要意义。

http://www.xdnf.cn/news/16898.html

相关文章:

  • 双网卡UDP广播通信机制详解
  • Leetcode 11 java
  • fastGEO v1.7.0 大更新,支持PCA、差异分析、火山图、热图、差异箱线图、去批次等分析
  • uniapp 富文本rich-text 文本首行缩进和图片居中
  • Flutter开发 dart语言基本语法
  • 基于单片机一氧化碳CO检测/煤气防中毒检测报警系统
  • 深入理解 Docker 容器网络:为什么用 host 网络模式能解决连通性问题?
  • Vue3 setup的两个注意点
  • Spring AI MCP 技术深度解析:从工具集成到企业级实战
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路车辆事故的检测识别(C#代码UI界面版)
  • LeeCode 88. 合并两个有序数组
  • RAGFLOW~Enable RAPTOR
  • 亚像素级精度的二维图像配准方法
  • 上海月赛kk
  • HCLP--ospf综合实验
  • RabbitMQ-镜像队列(Mirrored Queues)
  • VMware 下 Ubuntu 操作系统下载与安装指南
  • RAGFLOW~knowledge graph
  • Redis的ZipList、SkipList和ListPack之间的区别
  • 【Linux】重生之从零开始学习运维之Mysql
  • Au速成班-多轨编辑流程
  • STM32学习记录--Day5
  • 《C++》STL--list容器详解
  • EasyExcel 公式计算大全
  • 谷歌Firebase动态链接将失效:如何选择深度链接替代方案?
  • 11.Layout-Pinia优化重复请求
  • 51单片机入门:模块化编程
  • 利用 AI 在 iPhone 上实现 App 文本情绪价值评估(下)
  • 【string类常见接口】
  • 智能Agent场景实战指南 Day 28:Agent成本控制与商业模式