尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

[Linux外设驱动详解]RK3588 U-Boot Recovery 功能详解

[Linux外设驱动详解]RK3588 U-Boot Recovery 功能详解
📅 发布时间:2026/6/19 2:48:02

RK3588 U-Boot Recovery 功能详解

目录

  1. 概述
  2. 核心数据结构
  3. 启动模式定义
  4. Recovery 触发方式
  5. 启动模式检测机制
  6. Recovery 启动流程
  7. RockUSB 下载模式
  8. 相关文件清单

概述

RK3588 平台的 U-Boot Recovery 功能是 Android 系统恢复机制的重要组成部分。它支持通过多种方式进入 recovery 模式,包括 BCB (Bootloader Control Block)、reboot 命令、环境变量和按键组合等。

主要特性

  • 支持多优先级的启动模式检测
  • 兼容 Android A/B 系统
  • 支持 RockUSB 升级/下载模式
  • 支持 FIT 镜像格式的 recovery 启动
  • 支持热键触发进入 recovery

核心数据结构

bootloader_message 结构

定义在 boot_rkimg.h:

structbootloader_message{charcommand[32];// 启动命令,如 "boot-recovery"charstatus[32];// 状态信息charrecovery[768];// recovery 命令参数charstage[32];// 阶段字符串(多阶段安装包)charslot_suffix[32];// A/B 系统槽后缀 (_a/_b)charreserved[192];// 保留字段};

该结构存储在 misc 分区中,用于在 bootloader、kernel 和 recovery 系统之间传递启动信息。


启动模式定义

enum _boot_mode

定义在 boot_rkimg.h:

enum_boot_mode{BOOT_MODE_NORMAL=0,// 正常启动BOOT_MODE_RECOVERY,// Recovery 模式BOOT_MODE_BOOTLOADER,// Fastboot 模式BOOT_MODE_LOADER,// Rockusb 下载模式BOOT_MODE_CHARGING,// 充电模式BOOT_MODE_UMS,// USB 大容量存储模式BOOT_MODE_BROM_DOWNLOAD,// BootROM 下载模式BOOT_MODE_PANIC,// Panic 重启BOOT_MODE_WATCHDOG,// 看门狗重启BOOT_MODE_DFU,// DFU 下载模式BOOT_MODE_QUIESCENT,// 静默模式BOOT_MODE_UNDEFINE,// 未定义};

Boot Mode 寄存器定义

定义在 boot_mode.h:

#defineREBOOT_FLAG0x5242C300// 高24位标签#defineBOOT_NORMAL(REBOOT_FLAG+0)#defineBOOT_LOADER(REBOOT_FLAG+1)// Rockusb 模式#defineBOOT_RECOVERY(REBOOT_FLAG+3)#defineBOOT_PANIC(REBOOT_FLAG+7)#defineBOOT_WATCHDOG(REBOOT_FLAG+8)#defineBOOT_FASTBOOT(REBOOT_FLAG+9)#defineBOOT_CHARGING(REBOOT_FLAG+11)#defineBOOT_UMS(REBOOT_FLAG+12)#defineBOOT_DFU(REBOOT_FLAG+13)#defineBOOT_QUIESCENT(REBOOT_FLAG+14)#defineBOOT_BROM_DOWNLOAD0xEF08A53C

Recovery 触发方式

1. 通过 Android BCB (Bootloader Control Block)

BCB 存储在 misc 分区中,offset 可以是 0KB (Google 标准) 或 16KB (Rockchip)。

// 在 misc 分区写入 "boot-recovery" 命令android_bcb_write("boot-recovery");

2. 通过 reboot 命令

系统层可以通过写入 boot mode 寄存器触发:

writel(BOOT_RECOVERY,(void*)CONFIG_ROCKCHIP_BOOT_MODE_REG);do_reset(NULL,0,0,NULL);

用户层命令:

rebootrecovery

3. 通过环境变量

U-Boot 环境变量reboot_mode:

setenv reboot_mode recovery saveenv reset

4. 按键触发

在 hotkey.c 中定义的热键支持:

#defineCTRL_F0x06// fastboot mode

启动模式检测机制

rockchip_get_boot_mode()

核心函数定义在 boot_mode.c:

introckchip_get_boot_mode(void){staticintboot_mode[]={-EINVAL,-EINVAL,-EINVAL};// PH, PM, PLstaticintbcb_offset=-EINVAL;uint32_treg_boot_mode;char*env_reboot_mode;intclear_boot_reg=0;intrecovery_msg=0;// 1. 优先检查环境变量env_reboot_mode=env_get("reboot_mode");if(env_reboot_mode){if(!strcmp(env_reboot_mode,"recovery-key"))returnBOOT_MODE_RECOVERY;if(!strcmp(env_reboot_mode,"recovery-usb"))returnBOOT_MODE_RECOVERY;if

相关新闻

  • YOLO如何对接RTSP视频流?GPU解码性能优化
  • YOLO目标检测入门难?我们提供免费GPU token练手
  • YOLO目标检测响应时间SLA保障:GPU资源预留

最新新闻

  • 第23章:LoRA 与多租户模型服务
  • Playwright自动化测试:从核心原理到实战应用全解析
  • Claude Sonnet4:面向工程落地的AI编程协作者
  • BMS开发实战:从PowerTool 800配置到PS8XX芯片校准的完整指南
  • 2026不错的geo推广获客综合实力口碑榜,价格透明零套路避坑必看 - mypinpai
  • 函数调用:聊天机器人的虚拟按钮与业务动作流

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号