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

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

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
http://www.jsqmd.com/news/154351/

相关文章:

  • YOLO如何对接RTSP视频流?GPU解码性能优化
  • YOLO模型推理使用TensorRT,性能提升3倍实录
  • YOLO目标检测入门难?我们提供免费GPU token练手
  • 利用大模型,生成手机功能测试用例,excel文件
  • “协同效应”经济学下,看阿里的AI棋局
  • YOLO目标检测部署工具链推荐:从训练到GPU上线
  • 二、线性表
  • 天气和百度测试接口的jmx文件
  • YOLO目标检测响应时间SLA保障:GPU资源预留
  • 2025微博AI影响力最新榜单:官方认证的这10位社交媒体AI大V博主
  • YOLO训练任务排队?抢占式GPU资源调度策略
  • YOLO目标检测支持Web端展示?WebGL + GPU加速
  • 引用文章 - curl 的用法指南, 来自 阮一峰的网络日志
  • 微店商品详情API完整指南
  • 2025年12月苏州装修公司与知名建材品牌合作指南 - 品牌测评鉴赏家
  • YOLO训练日志实时查看?GPU节点日志聚合方案
  • 生成式AI如何重塑搜索生态与用户体验
  • 苏州装修公司榜单:这些与知名建材品牌联名的宝藏团队,让家装省心又省钱 - 品牌测评鉴赏家
  • YOLO推理服务部署Kubernetes?GPU资源编排指南
  • 2025郑州服务不错的知名有实力西点培训中心TOP5推荐 - mypinpai
  • fiddler的简介,工作原理,功能,使用场景与常用快捷键
  • 成式AI搜索的技术架构深度解构与实战优化指南
  • 2025石家庄技能培训学校TOP5权威推荐:河北万通技工学校实力凸显 - mypinpai
  • 好写作AI:跨界创新不发愁!看AI如何当你的“学术星图导航员”
  • 黑马进阶 2. 引用
  • 计算机毕业设计springboot社区养老管理系统 基于 SpringBoot 的社区智慧康养服务平台 面向老龄化社区的 SpringBoot 养老综合服务系统
  • 2025年黑龙江轻奢柔光砖品牌排行榜,新测评精选柔光瓷砖优质厂家推荐 - myqiye
  • YOLO开源项目Star破万!背后是强大的GPU支持
  • YOLO模型支持ONNX Runtime?跨GPU平台推理
  • 黑马进阶 3. 函数的提高