自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Witheart 的博客。

分享有关Rockchip芯片系统适配,Linux开发方面的学习笔记。

  • 博客(247)
  • 收藏
  • 关注

原创 3568 Android 4K显示

本文介绍了在Android设备上设置4K显示的方法。作者Witheart提供了两种设置方式:1)通过系统设置界面进入显示选项手动调节HDMI分辨率;2)使用adb命令设置4K分辨率(3840x2160@60),设置后需重新插拔HDMI线并更新display timeline属性使配置生效。文章还提供了辅助命令,用于检查内核支持的HDMI分辨率列表是否包含4K选项。更新时间为2026年3月13日。

2026-07-21 23:17:13 317

原创 适用于Android内核boot.img生成流程

本文介绍了Android内核boot.img的完整生成流程。首先通过./make.sh编译内核源码,生成初步的boot.img和resource.img;然后进入u-boot目录,使用pack_resource.sh脚本补充完善resource.img内容;最后返回SDK顶层目录,执行make bootimage命令生成包含内核镜像、设备树文件、ramdisk.img和完整resource.img的最终boot.img。文章重点说明了每个步骤的操作方法和注意事项,特别强调了resource.img的补充过程

2026-07-21 23:16:04 215

原创 获取产品对应文件夹

本文介绍了如何获取Android产品对应的目标文件夹。

2026-07-20 22:20:37 44

原创 版型关联的设备树查询方式

本文介绍了如何查询Android编译版型关联的设备树文件。方法是通过执行get_build_var TARGET_DEVICE_DIR命令获取目标设备目录路径,然后在该目录的BoardConfig.mk文件中查找PRODUCT_KERNEL_DTS变量确定设备树名称。此外,BOARD_PREBUILT_DTBIMAGE_DIR变量指定了设备树文件路径,两者结合即可定位完整的设备树文件路径,例如kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.d

2026-07-20 22:19:23 396

原创 如何编译和使用 `unpack_bootimg` 工具

本文介绍了如何在Rockchip Android SDK中编译和使用unpack_bootimg工具。首先需要通过source build/envsetup.sh和lunch命令设置环境,然后使用make unpack_bootimg编译工具。编译完成后,使用unpack_bootimg --boot_img boot.img --out out_dir命令可解包boot镜像,生成内核、设备树、ramdisk等文件。该工具是Rockchip平台开发中分析修改boot镜像的重要工具。

2026-07-19 22:36:18 245

原创 单独编译设备树方法

本文介绍了单独编译设备树文件的方法。首先加载构建环境变量(source build/envsetup.sh),然后进入内核目录(cd kernel/)。接着加载内核默认配置(make ARCH=arm64 NK_RK3568_defconfig),最后执行设备树编译(make ARCH=arm64 rockchip/NK_RK3568.dtb)。整个过程简单高效,输出结果会显示编译成功信息。

2026-07-19 22:35:59 216

原创 内核配置文件

本文档旨在说明内核配置文件与版型的对应,以及如何生成自定义的内核配置文件。

2026-07-16 23:08:16 340

原创 Rockchip `make.sh` 使用与开发文档

`make.sh` 是由 Rockchip 提供的固件构建和打包脚本,主要用于 Rockchip 平台的 U-Boot 固件开发。脚本支持多种开发板和芯片型号,能够完成从编译、配置到生成最终镜像文件的全流程操作,包括 `u-boot.img`、`trust.img` 和 `loader.img` 等固件文件的生成。

2026-07-16 23:07:53 353

原创 lunch选择的版型与版型对应的配置文件

在Android构建系统中,`lunch`命令是用于选择目标产品(版型)的核心工具。它通过加载与版型相关的配置文件,设置环境变量,从而确保构建系统能够正确生成目标镜像。本文将结合`rk3568_HW.mk`文件的内容,详细说明`lunch`命令如何与版型对应。

2026-07-13 23:25:35 326

原创 Lunch选择的版型与对应的U-Boot配置文件

本文介绍了U-Boot配置文件的定义与作用,重点解析了*_defconfig文件在构建系统中的关键功能。文章详细说明了如何通过PRODUCT_UBOOT_CONFIG变量确定U-Boot配置文件路径,并解释了不同版型对应的BoardConfig.mk文件的选择机制。最后总结了确定U-Boot配置文件的三个关键步骤:理解*_defconfig作用、确定BoardConfig.mk文件、查找PRODUCT_UBOOT_CONFIG变量。

2026-07-13 23:24:59 267

原创 深入解析 Kconfig、defconfig 与 .config 之间的关系

本文解析了Linux内核等嵌入式系统中Kconfig、defconfig和.config文件之间的关系。Kconfig是核心配置语言,定义编译选项及其默认值;defconfig提供推荐的初始配置;.config则是最终控制编译的配置文件。当执行make defconfig时,defconfig中的值会覆盖Kconfig的默认值生成.config文件。开发者可通过交互式配置工具或命令更新这些文件,其中defconfig优先级高于Kconfig的默认值,而.config可手动覆盖所有设置。掌握三者关系有助于高效

2026-07-07 23:12:17 683

原创 如何确认 defconfig 中的配置项最终是否生效

本文介绍了确认Linux内核配置项是否生效的方法。作者指出,内核根目录下的.config文件才是最终生效的配置方案,而defconfig仅作为初始配置参考。由于defconfig中的配置项可能不会全部进入.config文件,建议开发者直接检查.config文件来验证配置是否真正生效。

2026-07-07 23:11:49 224

原创 如何查看 defconfig 中选项的依赖项 depends on

本文介绍两种查看Linux内核defconfig中选项依赖项(depends on)的方法:1)直接在内核driver目录下的Kconfig文件中查找;2)通过make menuconfig界面,按/键搜索选项(去掉CONFIG_前缀)查看依赖关系。两种方式都能有效获取配置项的依赖信息,后者更为直观便捷。

2026-07-07 23:11:19 210

原创 vermagic check 问题

摘要:内核模块加载失败通常由模块与系统内核版本的vermagic不匹配导致。本文分析了加载dhd-cyw43430.ko模块时的Invalid module format错误,通过uname和modinfo命令确认了版本差异(5.4.0-g123-dirty vs 5.4.0-g120-dirty)。提出了三种解决方案:重新编译模块确保版本一致、修改内核编译配置去除哈希版本号差异,或使用insmod的-f强制加载选项。核心在于保证模块编译环境与运行环境的内核版本一致。

2026-07-06 22:55:57 209

原创 RK 如何更换 ddr 相关 bin 文件(降频、眼图测量)

RK平台DDR bin文件操作指南 本文介绍了Rockchip平台DDR相关bin文件的更换和操作方法,主要内容包括: DDR bin文件位置及更换方法:通过修改RK3588MINIALL.ini配置文件指定不同频率的bin文件 烧录注意事项:Loader烧录步骤及眼图测试bin的特殊处理 bin文件编辑工具:使用rk_ddrBin_tool进行频点修改 训练结果解读:开机时会输出DDR训练结果,包含频率、容量等信息 适用于需要进行DDR降频、眼图测量等调试场景,提供了从文件替换到实际烧录的完整流程说明。

2026-07-06 22:54:39 334

原创 defconfig 配置项不生效问题

摘要: 本文分析了 Linux 内核配置中 defconfig 选项不生效的两种情况及解决方法。第一种情况是 Kconfig 未正确定义选项,即使 defconfig 添加了参数也不会生效,需在 Kconfig 中明确定义并设置依赖关系。第二种情况是 defconfig 中选项被覆盖,需确保选项唯一性。文章详细说明了配置优先级(.config > defconfig > Kconfig default),并提供了 make defconfig、make oldconfig 等命令的使用建议,以及如何通过检查

2026-06-23 23:10:20 218

原创 defconfig 选项缺失

摘要: 本文由吴思含(Witheart)撰写,解释了Linux内核中defconfig与.config的区别。defconfig是.config的简化版,仅保存非默认配置项,因此可能缺失某些选项字段。这些缺失的选项可能存在于其他内核文件(如Makefile或Kconfig)中。例如,CONFIG_USB_SERIAL_QT2虽未出现在defconfig中,但可在drivers/usb/serial/目录下的相关文件中找到。最后更新于2025年4月16日。(字数:149)

2026-06-23 23:10:05 265

原创 defconfig 编译选项依赖关系(Kconfig,select、depends on)

本文介绍了Linux内核Kconfig中depends on和select两种依赖关系的区别。depends on定义当前选项的依赖条件,如示例中限制BRCMFMAC只能编译为模块并依赖CFG80211。select则是反向依赖,当启用当前选项时会自动启用指定选项,如BRCMFMAC选中时会自动启用BRCMUTIL。关键区别在于:depends on是正向依赖且不自动启用依赖项,select是反向依赖且自动启用目标项;depends on会检查依赖关系更安全,select可能破坏依赖关系需谨慎使用。

2026-06-23 23:09:34 350

原创 chown Operation not permitted 权限问题解决

概要:在编译 Linux 内核并打包 Debian 包时,可能会遇到 `chown: Operation not permitted` 的错误。本文介绍如何使用 `fakeroot` 解决该问题,并正确生成 `.deb` 包。

2026-06-23 23:09:18 266

原创 RK 3588 Ubuntu SDK 编译流程

本文介绍了 RK3588 Ubuntu SDK 的编译流程,主要包括: 编译步骤:依次执行./build.sh uboot、./build.sh kernel和./build.sh firmware命令编译U-Boot、内核和固件,生成文件会链接到rockdev/目录。 文件结构:rockdev/目录包含boot.img、MiniLoaderAll.bin等关键文件,通过ls -al可查看详细列表。 打包固件:将rootfs.ext4放入rockdev/后,运行./build.sh updateimg生成最

2026-06-15 21:56:03 353

原创 RK 3588 Ubuntu SDK 编译 Linux Header(标头)

本文介绍了如何在RK3588 Ubuntu SDK环境下编译Linux Header(标头),用于内核模块开发。作者首先解释了Linux Header的作用——支持内核模块(KO)的编译。随后详细说明了编译步骤:1)设置交叉编译工具链路径;2)使用fakeroot命令编译生成.deb格式的头文件包。文中还提示若编译失败可先编译内核再重试。该教程为RK3588平台的内核模块开发提供了基础支持。

2026-06-15 21:55:29 496

原创 3588 只读根文件系统配置 overlayroot(防掉电损坏)

本文介绍了在RK3588开发板上配置overlayroot只读根文件系统的方法,通过OverlayFS实现系统防掉电损坏保护。主要内容包括: OverlayFS工作原理解析,通过下层(只读rootfs)、上层(可写tmpfs/userdata)和合并层的结构实现文件系统保护; 两种运行模式:内存测试模式(重启清空)和持久化模式(数据保存在userdata分区); 详细配置步骤: 获取和准备包含Overlay驱动的initrd镜像 修改FIT镜像打包配方(boot.its) 在内核设备树中硬编码启动参数 安装

2026-06-11 21:42:11 964

原创 关于 uname 查看的内核版本号的后缀

本文解释了Linux内核版本号后缀的来源,重点分析了uname -r命令显示结果的构成机制。当CONFIG_LOCALVERSION_AUTO=y时,版本号会附加Git哈希值和dirty标记;设为n时,仅对非官方修改会显示"+"号。文章还提及去除"+"号的方法可能引发kernel panic问题,因此不建议修改。该文由Witheart撰写,最后更新于20250407。

2026-06-11 21:40:06 263

原创 Ubuntu 根文件系统开发流程及注意事项

为确保系统修改的可追溯性、镜像的纯净度及交付质量

2026-06-11 21:39:16 238

原创 make menuconfig 使用全流程

本文详细介绍了使用 make menuconfig 配置 Linux 内核的完整流程,涵盖从 defconfig 生成 .config 文件、使用 menuconfig 编辑配置,到将配置保存回 defconfig 的全过程,并指出了使用中的关键注意事项与缺点。

2026-06-11 21:38:45 258

原创 Linux SDK 中 build.sh 打包 updateimg 流程分析

本文分析了Linux SDK中build.sh脚本打包update.img的流程: build.sh软链接指向device/rockchip/common/build.sh,其build_updateimg函数负责打包逻辑 核心通过调用mkupdate.sh(实际为rk356x-mkupdate.sh)完成打包 使用afptool和rkImageMaker工具,将Image/目录(链接至rockdev)下的文件打包为最终镜像 支持A/B分区配置判断,生成镜像后存放至rockdev目录 整个流程通过多层软链接

2026-06-11 21:38:07 286

原创 自行打包 update.img 的方法

本文介绍了在Linux环境下使用Android SDK工具打包update.img的方法。首先需进入SDK源码目录下的rockdev工具目录,根据产品型号选择合适的打包脚本,可通过查看build.sh文件或环境变量确定。打包前需创建Image目录并放入所需的镜像文件,执行相应脚本后生成的update.img在rockdev目录下可直接用于刷写。

2026-06-10 22:04:16 320

原创 rk3568 交叉编译链

本文介绍了RK3568平台的交叉编译链配置方法。作者通过分析kernel的Makefile文件,指出系统会优先检查Linaro 6.3.1工具链,若不存在则使用Android 4.9工具链。文中提供了实际使用的交叉编译链绝对路径和相对路径,并展示了如何通过设置ARCH、CROSS_COMPILE和PATH环境变量来配置编译环境。这些配置对于在RK3568平台上进行交叉编译工作至关重要。

2026-06-10 22:03:50 68

原创 rk3588 交叉编译链

本文介绍了RK3588芯片交叉编译链的配置方法。通过在build.sh脚本中分析build_check_cross_compile函数,确定了ARM64架构的交叉编译器路径为:/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-。该路径会根据RK_ARCH变量的值自动选择对应的交叉编译工具链,并导出CROSS_COMPILE环境变量供编译使

2026-06-10 22:03:28 239

原创 rk3588 Android15 编译报错 BTF .tmp_vmlinux.btf pahole (pahole) is not available Failed to generate BTF f

摘要:RK3588 Android15编译时出现"BTF生成失败,缺少pahole工具"错误。该问题是由于内核编译需要生成BPF类型格式(BTF)信息,但系统未安装dwarves工具包(内含pahole)。解决方法是通过sudo apt install dwarves安装该工具包。BTF是一种调试信息格式,主要用于增强eBPF程序的调试和性能分析功能,pahole工具负责从DWARF调试信息生成BTF数据。 (字数:146字)

2026-06-10 22:02:35 226

原创 RK3588 Android15 .gitignore

【代码】RK3588 Android15 .gitignore。

2026-06-03 22:01:31 284

原创 RK Android OTA U盘升级指南

本指南用于指导如何使用`update.zip`进行 U盘 OTA 升级。具体的`update.zip`编译方式请看`《RK Android OTA U盘升级包编译指南》`。

2026-06-03 22:01:04 637

原创 RK Android OTA USB Upgrade Guide

**Overview**: This guide provides instructions on how to perform a USB OTA upgrade using `update.zip`. For details on how to compile the `update.zip` package, please refer to the **"RK Android OTA USB Upgrade Package Compilation Guide"**.

2026-06-03 22:00:35 298

原创 RK Android OTA U盘升级包编译指南

本指南用于指导如何编译出可供U盘 OTA 升级的`update.zip`。具体升级方式见`《RK Android OTA U盘升级指南》`。

2026-06-03 22:00:05 324

原创 搭建编译 HW-T3568 安卓固件的环境

本文介绍了搭建HW-T3568安卓固件编译环境的完整流程。主要内容包括:1)安装必备软件包,涵盖编译工具链和依赖库;2)常见问题解决方案,如Python版本切换、缺失软件包处理等;3)配置repo工具和Git环境。文中提供了详细的命令行操作指南,并针对编译Android 11所需环境特别说明了Python2的默认版本设置要求。该环境配置适用于Ubuntu系统,通过完整的依赖安装和问题排查可确保后续固件编译顺利进行。

2026-06-02 22:08:37 662

原创 HW-T3568 安卓固件编译指南

本文档旨在指导如何进行 **HW-T3568** 的安卓固件编译,最终生成 **update.img** 文件以供烧录。

2026-06-02 22:07:53 343

原创 Android编译错误:Soong阶段因缺失res目录导致panic (Iwlan模块)

文章摘要: Android编译过程中出现Soong阶段错误,报错显示packages/services/Iwlan/Android.bp模块引用了不存在的res资源目录,导致系统panic。错误源于代码仓库缺失packages/services/Iwlan/res目录,而构建系统对此路径校验失败。解决方法是在对应路径下创建res目录并添加空的.gitignore文件。该问题属于资源路径配置缺失导致的编译中断,通过补全目录结构即可修复。

2026-06-02 22:03:26 287

原创 Android 驱动编译为模块或者built-in内核

本文介绍了Android系统中驱动程序的两种编译方式:模块化编译(生成独立KO文件)和内核集成编译(直接编译进内核)。模块化编译需创建专用目录,配置模块Makefile和交叉编译环境后执行编译;内核集成编译则需要修改Kconfig配置项,集成到构建系统,并通过menuconfig启用驱动。两种方式分别适用于驱动调试和最终产品集成场景,开发者可根据需求选择合适方式。

2026-06-02 22:02:44 524

原创 Android RK SDK只编译和烧录kernel(boot.img)

在Android开发时,编译Android层耗时很长。而有时一些改动只涉及内核,能否只编译更新内核,而不编译Android部分?例如设备树的修改、内核的驱动适配。注意:不同SDK有时候该boot.img可以生效,有时候无法生效,比较坑,推荐还是编译烧录完整的镜像。

2026-05-31 18:23:48 406

原创 3588 安卓编译空间不足报错

直接导致编译报错的是。

2026-05-31 18:21:37 268

暴力风扇改造桌上风扇__外壳模型

请配合笔者的文章【项目记录】服务器暴力风扇改造桌上风扇食用

2022-09-11

可适用于ESP32的Adafruit_PN532库

修改了针对ESP32的PN532SPI通信速度配置,使用宏定义选择速度,所以其原来适用于其他板子的能力不受影响 具体修改方法查看本人主页文章《【ESP32】Adafruit_PN532库用于ESP32上时出现的问题及解决方法》

2022-08-31

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除