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

RK3566开发板Recovery分区实战:手把手教你扩展SD卡镜像并烧录recovery.img

RK3566开发板Recovery分区深度实践从分区规划到系统部署全解析1. 开发环境与硬件准备在开始Recovery分区的实战操作前我们需要确保开发环境配置正确。以下是基于Orange Pi 3B开发板的硬件规格和开发环境要求硬件配置清单主控芯片Rockchip RK3566四核Cortex-A55处理器内存2GB LPDDR4存储32GB eMMC支持SD卡启动显示输出HDMI 2.0接口扩展接口40pin GPIO含UART、I2C、SPI等开发主机软件要求Ubuntu 20.04/22.04 LTS推荐交叉编译工具链aarch64-linux-gnu-gcc必要工具包sudo apt install git make gcc bison flex libssl-dev libncurses-dev parted开发板连接示意图[USB转串口] ---- [UART调试口] | [TF卡槽] ---- [已烧录镜像的SD卡] | [电源输入] ---- [5V/2A适配器]2. Recovery系统架构解析2.1 Recovery镜像组成要素RK3566的Recovery系统采用FITFlattened Image Tree格式包含三个核心组件内核镜像压缩的Linux内核Image.gz设备树文件.dtb内核配置需启用RAM磁盘支持CONFIG_BLK_DEV_RAMy CONFIG_BLK_DEV_RAM_COUNT1 CONFIG_BLK_DEV_RAM_SIZE131072根文件系统基于Buildroot构建的轻量级ramdisk典型目录结构/bin # 基础命令 /etc # 配置文件 /sbin # 系统管理命令 /usr # 用户程序 /var # 可变数据设备树配置需适配开发板硬件版本如rk3566-orangepi-3b.dtb或rk3566-orangepi-3b-v2.dtb2.2 存储分区规划推荐的分区方案针对32GB存储设备分区名称类型GUID大小挂载点说明bootfsBC13C2FF-59E6...1GB/bootFAT32格式存放内核和引导文件recoveryB2F2DCBB-03C4...128MB-Recovery系统镜像image169D9DD18-36BE...4GB/oem出厂系统备份只读image2A2092B92-AF29...4GB/userdata用户数据分区rootfs0FC63DAF-8483...剩余空间/根文件系统分区表生成命令示例sudo sgdisk -n 1:61440:2158591 -t 1:BC13C2FF-59E6-4262-A352-B275FD6F7172 -c 1:bootfs \ -n 2:2158592:2420735 -t 2:B2F2DCBB-03C4-472F-B79C-942895CEC1A9 -c 2:recovery \ -n 3:2420736:10809343 -t 3:69D9DD18-36BE-4631-9EBB-78F05FE3217F -c 3:image1 \ -n 4:10809344:19197951 -t 4:A2092B92-AF29-4760-8E68-7A201922573B -c 4:image2 \ -n 5:19197952: -t 5:0FC63DAF-8483-4772-8E79-3D69D8477DE4 -c 5:rootfs \ /dev/sdX3. 构建Recovery系统镜像3.1 内核配置与编译获取内核源码git clone https://github.com/orangepi-xunlong/orangepi-build.git cd orangepi-build/kernel/orange-pi-5.10-rk35xx关键配置选项make menuconfig确保启用以下选项Device Drivers → Block devices → RAM block device support General setup → Initial RAM filesystem and RAM disk support编译命令./build.sh BOARDorangepi3b BRANCHlegacy BUILD_OPTkernel3.2 Buildroot根文件系统构建基础配置wget https://buildroot.org/downloads/buildroot-2024.02.4.tar.gz tar xzf buildroot-2024.02.4.tar.gz cd buildroot-2024.02.4 make menuconfig关键配置项Target options → ARM64 (AArch64) System configuration → Enable root login with password Filesystem images → initial RAM filesystem linked into linux kernel自定义配置 创建board/rockchip/rk356x/fs-overlay目录添加/etc/network/interfaces网络配置/etc/init.d/rcS启动脚本/usr/bin/recovery-tool自定义恢复工具编译命令make -j$(nproc)3.3 镜像打包脚本详解创建mk-fitimage.sh脚本实现自动化打包#!/bin/bash TARGET_IMGrecovery.img ITSboot4recovery.its # 组件路径配置 KERNEL_IMGImage.gz RAMDISK_IMGramdisk.gz KERNEL_DTBrk3566-orangepi-3b.dtb KERNEL_DTB_V2rk3566-orangepi-3b-v2.dtb # 生成临时ITS文件 TMP_ITS$(mktemp) sed -e s|KERNEL_DTB|$(realpath $KERNEL_DTB)| \ -e s|KERNEL_DTB_V2|$(realpath $KERNEL_DTB_V2)| \ -e s|KERNEL_IMG|$(realpath $KERNEL_IMG)| \ -e s|RAMDISK_IMG|$(realpath $RAMDISK_IMG)| \ $ITS $TMP_ITS # 使用mkimage工具打包 mkimage -f $TMP_ITS -E -p 0x800 $TARGET_IMG rm -f $TMP_ITS4. U-Boot定制与烧录4.1 启动流程改造修改U-Boot源码arch/arm/mach-rockchip/boot_mode.c实现GPIO检测int rockchip_get_boot_mode(void) { struct rockchip_gpio_regs *regs (void *)GPIO3_BASE; CLRBITS_LE32(regs-swport_ddr, BIT(27)); // 设置GPIO3_D3为输入 if (readl(regs-ext_port) BIT(27)) { env_set(update_mode, recovery); return BOOT_MODE_RECOVERY; } return BOOT_MODE_NORMAL; }4.2 关键环境变量变量名默认值说明bootcmdrun distro_bootcmd默认启动命令boot_targetsmmc0 mmc1启动设备顺序update_modenormal恢复模式标志4.3 烧录方法对比SD卡烧录sudo dd ifOrangepi3b_1.0.6_ubuntu_jammy_server_linux5.10.160.img of/dev/sdX bs4M statusprogress单独烧录Recovery分区# 通过U-Boot命令行 tftp 0x10000000 recovery.img mmc write 0x10000000 0x20F000 0x40000 # 在Linux系统中 sudo dd ifrecovery.img of/dev/mmcblk1p25. 实战问题排查指南5.1 常见错误与解决方案问题现象可能原因解决方案无法进入Recovery模式GPIO检测失败检查硬件连接和U-Boot代码内核panic设备树不匹配确认dtb文件与硬件版本对应根文件系统挂载失败ramdisk损坏重新构建并验证ramdisk.gz分区识别错误GPT表损坏使用sgdisk重新生成分区表5.2 调试技巧U-Boot调试setenv bootargs earlyconuart8250,mmio32,0xfe660000 consolettyFIQ0 saveenv内核日志获取dmesg | grep -i error cat /proc/cmdline存储设备检查lsblk -o NAME,PARTLABEL,PARTUUID,LABEL blkid6. 扩展应用场景6.1 系统升级方案设计双系统切换流程进入Recovery模式验证新镜像签名将image2分区内容写入rootfs更新引导配置重启进入新系统升级脚本示例#!/bin/bash UPDATE_IMG/userdata/update.img # 验证镜像 verify_image $UPDATE_IMG || exit 1 # 解压镜像到临时目录 mkdir -p /tmp/update unsquashfs -d /tmp/update $UPDATE_IMG # 写入分区 dd if/tmp/update/rootfs.img of/dev/mmcblk1p5 bs4M # 更新环境变量 fw_setenv bootpart 5 sync6.2 硬件诊断功能集成可在Recovery系统中集成以下诊断工具内存测试memtester 512M 1存储健康检查smartctl -a /dev/mmcblk0网络连通性测试ping -c 4 8.8.8.87. 性能优化建议内核裁剪移除不需要的驱动模块禁用调试符号CONFIG_DEBUG_INFOn启动加速CONFIG_BOOTDELAY1 CONFIG_FASTBOOTy文件系统优化tune2fs -o journal_data_writeback /dev/mmcblk1p2通过本方案的完整实施开发者可以获得一个稳定可靠的Recovery系统为RK3566开发板的维护和升级提供坚实基础。实际部署时建议根据具体硬件版本调整设备树和分区方案并通过自动化测试验证关键功能。

相关文章:

RK3566开发板Recovery分区实战:手把手教你扩展SD卡镜像并烧录recovery.img

RK3566开发板Recovery分区深度实践:从分区规划到系统部署全解析 1. 开发环境与硬件准备 在开始Recovery分区的实战操作前,我们需要确保开发环境配置正确。以下是基于Orange Pi 3B开发板的硬件规格和开发环境要求: 硬件配置清单: 主…...

10. 监控与可视化

10. 监控与可视化 本章介绍如何对 OR-Tools 求解过程进行监控,以及结果的可视化展示 目录 求解监控概述 内置统计信息 自定义监控 结果可视化 地图集成 监控大盘 日志与追踪 1. 求解监控概述 1.1 为什么要监控?...

OWL ADVENTURE处理复杂表格图像:从截图到结构化数据

OWL ADVENTURE处理复杂表格图像:从截图到结构化数据 每次看到同事为了把一张财务报表截图里的数据录入Excel而手动敲打半天,或者为了整理一份实验报告里的表格而焦头烂额时,我就在想,这事儿能不能让机器来干?传统的方…...

Qwen3-14B代码解释效果:将100行Python重构为可读注释+优化建议

Qwen3-14B代码解释效果:将100行Python重构为可读注释优化建议 1. 模型能力展示:代码解释与重构 Qwen3-14B作为一款强大的大语言模型,在代码理解与重构方面展现出惊人的能力。我们测试了它对100行复杂Python代码的解释与重构效果&#xff0c…...

IQuest-Coder-V1-40B-Instruct新手入门:3步搭建代码生成与审查环境

IQuest-Coder-V1-40B-Instruct新手入门:3步搭建代码生成与审查环境 1. 引言:为什么选择IQuest-Coder-V1-40B-Instruct 1.1 模型核心能力概述 IQuest-Coder-V1-40B-Instruct是一款专为软件工程和竞技编程设计的大型语言模型,它能帮你&#…...

MGeo门址解析模型实际作品分享:1000+真实地址文本结构化结果集

MGeo门址解析模型实际作品分享:1000真实地址文本结构化结果集 1. 引言:从混乱文本到清晰结构,地址解析的价值有多大? 想象一下,你收到了一条用户留言:“麻烦送到朝阳区望京SOHO塔3B座15层1501室&#xff…...

若依前后端分离版部署实战:Nginx反向代理+生产环境优化配置

若依前后端分离版生产环境部署全攻略:Nginx调优与安全实践 第一次将若依框架部署到生产环境时,我遇到了前端资源加载缓慢、后端接口频繁超时的问题。经过多次实战调优,终于总结出一套兼顾性能与安全的部署方案。本文将分享从基础部署到深度优…...

实战指南:5个技巧高效使用计算机视觉特征匹配基准数据集

实战指南:5个技巧高效使用计算机视觉特征匹配基准数据集 【免费下载链接】hpatches-dataset HPatches: Homography-patches dataset. 项目地址: https://gitcode.com/gh_mirrors/hp/hpatches-dataset 在计算机视觉和图像处理研究领域,特征匹配算法…...

Apex压枪宏终极指南:如何快速提升射击精度与稳定性

Apex压枪宏终极指南:如何快速提升射击精度与稳定性 【免费下载链接】Apex-NoRecoil-2021 Scripts to reduce recoil for Apex Legends. (auto weapon detection, support multiple resolutions) 项目地址: https://gitcode.com/gh_mirrors/ap/Apex-NoRecoil-2021 …...

别光看模型列表!Spring AI和LangChain4j在向量数据库支持上的真实体验对比

别光看模型列表!Spring AI和LangChain4j在向量数据库支持上的真实体验对比 当开发者选择Java生态的AI框架时,往往被琳琅满目的模型支持列表吸引注意力。但在实际构建RAG系统或知识库应用时,向量数据库的集成体验才是决定开发效率的关键因素。…...

ComfyUI Segment Anything:零基础也能掌握的智能图像分割神器

ComfyUI Segment Anything:零基础也能掌握的智能图像分割神器 【免费下载链接】comfyui_segment_anything Based on GroundingDino and SAM, use semantic strings to segment any element in an image. The comfyui version of sd-webui-segment-anything. 项目地…...

Obsidian科研知识管理架构:构建高效学术工作流的本地化解决方案

Obsidian科研知识管理架构:构建高效学术工作流的本地化解决方案 【免费下载链接】obsidian_vault_template_for_researcher This is an vault template for researchers using obsidian. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian_vault_template_fo…...

yz-bijini-cosplay性能优化指南:GPU资源高效利用

yz-bijini-cosplay性能优化指南:GPU资源高效利用 1. 为什么需要GPU优化 当你运行yz-bijini-cosplay这类图像生成模型时,可能会遇到这样的情况:生成速度慢、图片分辨率上不去,甚至有时候程序直接崩溃报"显存不足"。这些…...

从MCAS系统缺陷看软件安全:一个传感器故障如何导致波音737MAX两次空难?

从MCAS系统缺陷看航空软件安全设计的致命盲区 当一架现代客机以每小时800公里的速度巡航在万米高空时,它的每一个飞行动作背后都有数百万行代码在实时运算。2018年至2019年发生的两起波音737MAX空难,将航空电子系统中一个名为MCAS的软件模块推上了风口浪…...

EPLAN项目标准化实战:如何用结构标识符打造高效电气设计模板

EPLAN项目标准化实战:如何用结构标识符打造高效电气设计模板 电气设计领域正经历着从传统绘图向智能化管理的转型。在这个背景下,EPLAN作为行业领先的电气工程设计软件,其结构标识符功能已成为实现项目标准化的核心工具。我曾参与过多个大型工…...

MicroBlue:Arduino轻量级BLE消息通信框架

1. MicroBlue库概述:面向Arduino的BLE消息通信框架 MicroBlue是一个专为Arduino平台设计的轻量级蓝牙低功耗(BLE)通信库,核心目标是建立Arduino硬件与MicroBlue移动应用之间的可靠、结构化消息通道。该库并非直接操作BLE协议栈&am…...

深入解析 | 萤火虫算法在Matlab中的高效实现与优化技巧

1. 萤火虫算法基础与Matlab环境搭建 第一次接触萤火虫算法时,我被它优雅的生物灵感所吸引。想象夏夜里的萤火虫,它们通过发光相互吸引,最终形成有序的群体行为——这正是算法名称的由来。2008年由剑桥学者Yang提出的这个算法,如今…...

5分钟掌握Warframe自动演奏:ShawzinBot终极免费指南 [特殊字符]

5分钟掌握Warframe自动演奏:ShawzinBot终极免费指南 🎮 【免费下载链接】ShawzinBot Convert a MIDI input to a series of key presses for the Shawzin 项目地址: https://gitcode.com/gh_mirrors/sh/ShawzinBot 想让你的Warframe角色在游戏中演…...

如何快速掌握抗体序列分析:ANARCI完整入门指南

如何快速掌握抗体序列分析:ANARCI完整入门指南 【免费下载链接】ANARCI Antibody Numbering and Antigen Receptor ClassIfication 项目地址: https://gitcode.com/gh_mirrors/an/ANARCI 抗体序列编号是抗体研究和药物开发中的关键环节,而ANARCI&…...

如何快速上手w64devkit:面向开发者的轻量级跨平台编译指南

如何快速上手w64devkit:面向开发者的轻量级跨平台编译指南 【免费下载链接】w64devkit Portable C and C Development Kit for x64 (and x86) Windows 项目地址: https://gitcode.com/gh_mirrors/w6/w64devkit w64devkit是一个专为Windows平台设计的轻量级C和…...

GreaterWMS开源仓库管理系统:从传统仓储到智能供应链的三大技术突破

GreaterWMS开源仓库管理系统:从传统仓储到智能供应链的三大技术突破 【免费下载链接】GreaterWMS This Inventory management system is the currently Ford Asia Pacific after-sales logistics warehousing supply chain process . After I leave Ford , I start …...

3分钟快速上手:ESM蛋白质语言模型完全指南

3分钟快速上手:ESM蛋白质语言模型完全指南 【免费下载链接】esm Evolutionary Scale Modeling (esm): Pretrained language models for proteins 项目地址: https://gitcode.com/gh_mirrors/esm/esm ESM(Evolutionary Scale Modeling)…...

GIMP Resynthesizer终极指南:5步掌握智能纹理合成与图像修复

GIMP Resynthesizer终极指南:5步掌握智能纹理合成与图像修复 【免费下载链接】resynthesizer Suite of gimp plugins for texture synthesis 项目地址: https://gitcode.com/gh_mirrors/re/resynthesizer GIMP Resynthesizer是一套功能强大的GIMP纹理合成插件…...

APA第7版Microsoft Word样式文件:3分钟搞定学术论文引用格式

APA第7版Microsoft Word样式文件:3分钟搞定学术论文引用格式 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 还在为学术论文的APA第7版引用…...

Web Scraper完整指南:零代码网页数据抓取终极解决方案

Web Scraper完整指南:零代码网页数据抓取终极解决方案 【免费下载链接】web-scraper-chrome-extension Web data extraction tool implemented as chrome extension 项目地址: https://gitcode.com/gh_mirrors/we/web-scraper-chrome-extension Web Scraper是…...

别再手动算反射率了!用Python一键搞定大疆P4M多光谱影像辐射定标(附完整代码)

用Python自动化处理大疆P4M多光谱影像:从DN值到反射率的一站式解决方案 多光谱影像分析在精准农业、环境监测等领域发挥着越来越重要的作用。大疆精灵4多光谱无人机(P4M)凭借其便携性和专业级的多光谱数据采集能力,已成为众多研究机构和企业的首选设备。…...

UTM虚拟机架构解析与iOS/macOS跨平台虚拟化技术实现深度指南

UTM虚拟机架构解析与iOS/macOS跨平台虚拟化技术实现深度指南 【免费下载链接】UTM Virtual machines for iOS and macOS 项目地址: https://gitcode.com/gh_mirrors/ut/UTM UTM是一款基于QEMU技术的开源虚拟化解决方案,专为iOS和macOS平台设计,实…...

为什么要做 GeoPipeAgent每

指令替换 项目需求:将加法指令替换为减法 项目目录如下 /MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass2.cpp # pass 项目代码 一,测试代码示例 test.c // test.c #includ…...

Vivado IP核的Modelsim仿真库管理:一次配置,多个工程复用指南

Vivado IP核的Modelsim仿真库管理:一次配置,多个工程复用指南 在FPGA开发中,Vivado IP核与Modelsim的协同仿真一直是工程师们绕不开的痛点。每次新建工程都要重复导出IP库、配置路径、添加文件的繁琐流程,不仅浪费时间&#xff0c…...

Maxwell磁场仿真实战:无线传能线圈建模与优化

1. 无线传能线圈建模基础 第一次用Maxwell做无线传能线圈仿真时,我对着空白的建模界面发呆了半小时——到底该从哪下手?后来发现,把复杂问题拆解成小步骤才是关键。我们先从最简单的单匝圆环线圈开始,就像学画画先从画圆圈开始一…...