自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

习惯就好zz的专栏

学问之道无他 求其放心而已矣

  • 博客(495)
  • 资源 (6)
  • 收藏
  • 关注

原创 Android系统卡顿排查实战:当system_server卡在io_schedule

本文记录了Android系统卡顿问题的完整排查过程,通过分析system_server进程卡在io_schedule状态的现象,揭示了eMMC存储性能瓶颈导致系统响应变慢的根本原因。文章从进程状态、文件描述符、调用栈和系统资源四个视角深入分析,建立了完整的证据链,并提出了从紧急缓解到长期优化的多级解决方案。同时提供了系统化排查流程和监控指标建议,为Android系统性能调优提供了实用参考。

2026-02-04 15:23:31 28

原创 [Android/Linux] 实战记录:利用 Kconfig 精确控制 i.MX8MM 特定 DTB 的编译生成

摘要: 本文介绍了在嵌入式Android/Linux开发中,如何通过修改Kconfig和Makefile实现精确控制i.MX8MM平台特定设备树(DTB)的编译生成。针对NXP i.MX系列默认编译所有DTB导致的问题,提出了三层解决方案:1)在Kconfig中定义可见的配置选项;2)修改DTS Makefile将特定DTB与配置选项绑定;3)在产品配置文件中启用对应选项。重点强调了Kconfig选项必须包含提示字符串才能使defconfig赋值生效,并提供了详细的代码修改示例和验证方法。该方案成功解决了多

2026-02-04 11:33:52 582

原创 解决VMware Ubuntu端口映射SSH连接失败问题:无需重启服务器的快速修复方案

通过重启VMware NAT和DHCP服务解决端口映射问题,比重启整个Windows服务器更加高效和安全。快速:只需几秒钟完成安全:不影响其他Windows服务可自动化:可以通过脚本实现自动监控和修复可预防:通过服务自动恢复和定期检查减少故障发生建议将自动化脚本部署到生产环境中,并设置监控告警,确保VMware虚拟机的远程访问稳定性。相关资源VMware官方文档:配置NAT网络PowerShell服务管理命令Windows端口转发配置指南。

2026-01-22 09:09:38 823

原创 [实战笔记] 从 Qt 5.12.9 跨越到 Qt 6.x 完美迁移指南 (Windows + VS)

Qt 5.12.9到Qt 6迁移实战指南 本文详细记录了从Qt 5.12.9升级到Qt 6.x的全过程,重点解决跨版本迁移中的常见问题。关键步骤包括:安装Qt 6时勾选兼容模块,修改.pro文件强制使用C++17并引入必要模块,调整构建路径解决编译错误。在代码层面,需注意容器类的const限制、网络模块变动和字符串编码安全。QML部分需重写被移除的控件,调整Connections语法,并解决Windows下的UI样式问题。通过关注核心变更点,项目最终在Qt 6环境下获得性能提升。

2026-01-21 15:09:20 840

原创 从奶牛NPC到完整场景构建

本教程详细介绍了如何使用Godot 4引擎构建一个生动的2D游戏世界。主要内容包括:创建随机移动的奶牛NPC,通过状态机和动画系统实现智能行为;添加静态与可交互物体如宝箱和床铺;利用多层瓦片地图构建复杂场景,包括图层管理、碰撞设置和建筑技巧;以及相机系统与游戏体验优化。教程提供了完整的代码示例和可视化指导,帮助开发者从基础到进阶逐步构建一个功能完善的2D游戏原型。

2026-01-20 09:42:47 702

原创 使用Confluence REST API v2自动创建Jira传统模式表格页面并集成到GitHub Actions CI/CD

本文介绍了如何通过Confluence REST API v2自动创建包含Jira传统模式表格的页面,并将其集成到GitHub Actions CI/CD流程中。主要内容包括:1) 获取必要的Confluence认证信息;2) API测试过程中遇到的挑战及解决方案,如Space ID类型、JSON格式、Jira宏serverId等问题;3) 最终实现的Bash脚本,可从GitHub Release Notes中提取VUL编号并构建JQL查询;4) 如何将该脚本集成到GitHub Actions工作流中。该方

2026-01-19 09:03:16 117

原创 地图编辑部分教程总结

本教程介绍了如何使用Godot 4的TileMap系统构建游戏地图。主要内容包括:创建TileMap节点并配置TileSet资源;导入素材并自动切分瓦片;通过多层(Layers)实现深度效果,利用Z-index控制渲染顺序;为瓦片添加碰撞体实现物理阻挡;使用随机工具增强地图自然感;锁定TileMap防止误操作;以及添加跟随相机实现动态视角。这些步骤共同构建了一个具有视觉层次和物理交互的完整游戏世界。相关素材和脚本资源链接已提供。

2026-01-17 23:24:44 853

原创 Godot Player CharacterBody2D 移动和停止配置

本文介绍了在Godot 4中实现2D角色八方向移动动画系统的详细步骤。主要内容包括:基础节点结构配置(CharacterBody2D、Sprite2D等)、精灵图导入与动画制作、AnimationTree状态机设置(使用BlendSpace2D节点)、脚本控制动画切换逻辑。关键点在于通过Discrete模式保持像素动画清晰度,利用blend_position根据输入方向混合动画,实现idle和walk状态的平滑过渡。文末提供了完整的GDScript代码示例,可实现角色根据WASD输入自动切换对应方向动画的功

2026-01-15 11:34:31 614

原创 Linux Kernel 4.4 `printk` 源码分析与使用详解

本文分析了Linux Kernel 4.4中printk的实现机制与使用方法。重点介绍了printk的8个日志级别及其控制策略,通过/proc/sys/kernel/printk可动态调整打印级别。文章详细剖析了printk的数据流架构,包括驱动层调用、内核缓冲区存储、控制台过滤和硬件输出四个阶段。在源码层面,解析了printk入口函数、NMI安全机制、核心处理函数vprintk_emit以及控制台输出逻辑console_unlock的实现细节,揭示了消息过滤和分发的底层机制。

2026-01-07 21:45:48 820

原创 在 Ubuntu 18.04 (WSL) 上配置 LazyVim

摘要: 在Ubuntu 18.04(WSL)上配置LazyVim面临GLIBC版本过低(2.27)和Tree-sitter依赖问题。解决方案包括:1)使用Homebrew替代apt管理软件包,安装新版Neovim(≥0.10);2)通过Rust手动编译兼容的Tree-sitter-cli(v0.22.6),并创建软链接覆盖Mason自动安装的版本;3)安装LazyVim并修复Locale和字体设置。该方法成功绕过了系统限制,实现了现代化Neovim体验,尽管checkhealth可能显示版本警告,但功能完全

2026-01-07 19:09:49 603

原创 【嵌入式开发】WSL2 终极环境搭建:Windows TFTP + WSL NFS 挂载指南

摘要:WSL2嵌入式开发环境搭建指南(Windows TFTP + WSL NFS) 本文介绍了一种高效的嵌入式Linux开发方案,利用Windows 11的WSL2"镜像网络模式"实现混合架构开发环境: 内核传输:通过Windows端的Tftpd64实现TFTP服务 根文件系统:通过WSL2(Ubuntu)搭建NFS服务器,保持完整Linux权限 网络配置:详细说明了镜像网络设置、防火墙配置和IP共享方法 开发板配置:提供完整的U-Boot环境变量设置方案 问题排查:总结了常见问题的解

2026-01-07 11:57:29 668

原创 在 Ubuntu 18.04 旧系统上部署新版 GitHub Actions Runner 的终极方案

本文分享了在Ubuntu 18.04旧系统上部署新版GitHub Actions Runner的解决方案。针对GLIBC版本冲突问题,采用Docker+SSH分离架构:Runner运行在Ubuntu 20.04容器中,通过SSH连接宿主机执行编译任务。文章详细记录了网络配置、容器化部署、SSH免密登录、脚本化管理及内存优化等关键步骤,最终实现了旧编译环境与新Runner的兼容共存,解决了嵌入式项目CI/CD的部署难题。该方案无需重构项目或升级硬件,通过容器化和资源优化实现了低成本自动化。

2026-01-06 17:21:09 852

原创 Android 12 RK3588平台电源菜单深度定制指南

Android 12 RK3588电源菜单定制指南摘要 本文详细介绍了在Android 12 RK3588平台上深度定制电源菜单的全过程。首先分析了定制电源菜单的必要性(品牌差异化、功能扩展等)和技术挑战(系统组件修改复杂度)。通过逆向工程定位到核心源码文件GlobalActionsDialogLite.java和布局文件global_actions_grid_lite.xml。

2025-12-26 15:37:34 1138

原创 在安卓设备上测试 AWS S3 下载速度的完整指南

本文详细介绍了在安卓设备上测试AWS S3下载速度的方法。通过Termux和AWS CLI的组合,无需Root即可搭建轻量级测试环境。步骤包括:安装Termux、配置AWS CLI、编写测速脚本、执行测试并分析结果。文章还提供了常见问题解决方法及优化建议,如使用大文件测试、多次运行取平均值等。该方法成本低、易复现,适用于移动开发、边缘计算和网络性能调优等场景,能有效验证特定网络环境下AWS S3的实际访问性能。

2025-12-19 09:41:34 637

原创 Godot GDExtension 4.5 windows编译记录

本文记录了将Godot GDExtension插件从Mac移植到Windows(MSVC)时遇到的编译问题及解决方案。主要问题包括:1) reinterpret_cast转换失败和_gde_UnexistingClass报错,原因是MSVC成员指针优化;2) Windows头文件污染;3) 链接器找不到库文件。解决方案:1) 使用PIMPL模式隔离核心逻辑;2) 添加MSVC的/vmg编译选项解决成员指针问题;3) 调整SCons构建脚本处理库文件名。最终提供了精简的SConstruct配置、采用PIMPL

2025-12-15 10:57:58 834

原创 画画抓型学习总结

抓型艺术是绘画的基础技能,本文总结了从工具使用到进阶技巧的完整方法。关键点包括:利用九宫格和转折点简化形状,按一二三级型逐步细化,采用红线检查等纠错方法,并强调手臂发力绘制长线条。建议通过2-4小时的日常练习,结合正确的心理预期,循序渐进地提升抓型能力。持续实践是掌握这项核心技能的关键。

2025-12-11 11:42:30 270

原创 在 RK3588 上彻底禁用 HDMI 音频输出

摘要: 本文详细介绍了在RK3588平台上彻底禁用HDMI音频输出的完整解决方案。首先通过分析audio_policy_configuration.xml文件定位问题根源,手动修改验证后删除HDMI相关配置。随后将修改固化到AOSP源码,重点说明了正确的编译刷机方法(必须使用update.img而非fastboot)。文章总结了常见错误及解决方法,并强调该方案仅影响音频输出,不影响HDMI视频功能。这套从临时调试到源码固化的完整流程,特别适用于数字标牌等需要强制使用板载喇叭的嵌入式场景。

2025-12-11 08:21:12 828

原创 如何解包 Android boot.img 并检查 UART 是否启用

本文详细介绍了如何解包 Android 设备的 boot.img 并检查 UART 是否启用(以 RK3588 为例)。主要内容包括:使用 AOSP 工具 unpack_bootimg 解包 boot.img

2025-12-10 14:38:44 712

原创 修复 macOS 下 Godot-CPP 链接丢失 TLS 符号 (__ZTW) 问题记录

记录修复 macOS 下 Godot-CPP 插件因 TLS 符号缺失导致的加载崩溃问题。当使用 Clang 编译 Godot 4.5.1 GDExtension 插件时,静态库优化会剔除未显式调用的 TLS Wrapper 函数(__ZTW符号),导致动态库加载失败。

2025-12-03 21:29:58 1042

原创 AOSP多板卡配置修改过程记录

本文介绍了基于同一AOSP代码仓库适配多款硬件设备的策略。核心思路是通过构建系统的"配置三角"机制实现差异化定制:1)通过AndroidProducts.mk注册新产品;2)在BoardConfig.mk中定义硬件参数;3)在产品配置.mk文件中定制软件内容。该方案通过继承通用配置并覆盖差异化配置,避免了代码重复维护,特别适用于同平台不同外设的硬件变种。文中以RK3588平台为例,展示了如何通过修改设备树、WiFi驱动等关键配置来适配新硬件Apollo。

2025-11-26 19:31:21 52

原创 GDExtension学习

本文介绍了Godot引擎与原生共享库交互的三种方法,并详细展示了使用godot-cpp创建GDExtension的完整流程。首先说明了gdextension_interface.h、extension_api.json和*.gdextension三种交互方式,然后逐步演示了从环境配置到实际开发的步骤:确定Godot版本号、安装SCons编译工具、创建项目目录、下载和编译godot-cpp库、创建空Godot项目,最后实现了简单的Sprite2D扩展类GDExample。通过这个示例可以了解如何将C++代码编

2025-11-14 08:22:46 932

原创 WSL2 安装失败终极排查:安全软件静默拦截 vmcompute 服务

最近我在 Windows 上尝试安装 Windows Subsystem for Linux 2(WSL2),用于日常开发。安全管家在后台阻止了 vmcompute 服务的启动,导致 WSL2 无法创建轻量级虚拟机,从而报错 HCS_E_SERVICE_NOT_AVAILABLE。DISM /RestoreHealth → 失败(错误 0x800f0915),因预览版无公开修复源,可忽略。这不是系统损坏,也不是配置错误,而是安全管家主动拦截(我哪天发神经关掉了)。服务存在,但无法启动,且无详细错误码;

2025-11-07 19:12:49 1150 2

原创 3588 AP6275s的Wifi驱动升级记录

从瑞芯微的厂商那要到了新的 bcmdhd_101.10.591.91.39.tar.gz 解压发现。检查 Makefile 确认编译文件夹是 bcmdhd。编译通过后替换 wifi 供应商提供的固件。搜索相关的编译参数,并移除后重新编译。在我的 3588 的镜像里搜索。重新烧录后,wifi 固件从。

2025-10-30 13:18:09 136

原创 Godot学习记录 简单回合战斗

PlayerUnit 位置(200,300)EnemyUnit位置(600,300)

2025-10-21 17:35:19 285

原创 nvim的cpp代码里使用cpplint提醒

conform.nvim 的一个非常好的功能是,当使用像 prettier 这样的格式化程序时,它会检查你的 node_modules 中是否存在该版本,并改用该版本。如果你使用的是 Mac 或 Linux,配置应该在 ~/.config/nvim 在 Windows 上它应该位于 ~/AppData/Local/nvim/在 ~/.config/nvim/lua/[name]/plugins/lsp/ 下添加 mason.lua 文件。还有其他可能的原因,例如格式化程序未安装。

2025-09-08 09:10:48 848

原创 ubuntu24下keychorn键盘连接不了的改建页面的问题修复

网页:https://launcher.keychron.com/#/keymap。chrome 没有访问权限,打开chrome://device-log/发现/dev/hidraw4 无法连接,没有权限。刷新连接网页后能正常连接。

2025-08-12 21:53:57 325

原创 版本号内容定义Semantic Versioning

是一种用于软件版本管理的约定,它帮助开发者清晰地表达软件版本的更新内容及其兼容性。。

2025-07-10 09:57:17 616

原创 Android系统启动流程学习(五).MainActivity启动过程

这里的 mH 指的是H,它是 ActivityThread 的内部类并继承自 Handler,是应用程序进程中主线程的消息管理类。因此,虽然 ApplicationThread 的存在是为了让应用进程能够与 AMS 通信,但它并不是在 Zygote 初始化阶段创建的,而是在应用进程启动之后,由该进程内部自行创建并初始化的。根 Activity 启动过程中涉及 4 个进程,分别是 Zygote 进程、Launcher 进程、AMS 所在的进程(SystemServer 进程)、应用程序进程。

2025-04-18 14:01:03 1096

原创 ubuntu1804服务器开启ftp,局域网共享特定文件给匿名用户

可以使用vsftpd(Very Secure FTP Daemon)来实现。首先,安装vsftpd编辑vsftpd指定匿名用户的根目录为(你可以根据需要更改此路径)。假设你希望共享设置目录的所有者和组如果你的系统启用了防火墙(如ufw),需要开放 FTP 相关端口。从另一台设备(例如 Windows 或其他 Linux 设备)访问 FTP 服务器。可以使用浏览器、命令行工具或 FTP 客户端。

2025-04-16 10:20:12 896

原创 Android系统启动流程学习(四)应用程序进程启动过程

想要启动一个应用程序,必须先启动应用程序进程。AMS 启动应用程序时先检查需要的进程是否存在,不存在就请求 Zygote 进程启动进程。Zygote 启动时的 Socket 就是用来等待 AMS 的新建应用进程的请求的。Zygote 通过 fork 自身创建应用程序进程,这样就能继承 Zygote 启动时的虚拟机实例,同事也创建了 Binder 线程池和消息循环,这样就能方便的进行 Binder 进行进程间通信以及处理消息了。

2025-03-27 11:50:24 965

原创 Android系统Launcher启动流程学习(三)Launcher启动流程

系统启动的最后一步是启动一个应用程序用来显示系统中已经安装的应用程序,并作为这些安装程序的启动入口,这个应用程序就是Launcher。上面得知SystemServer 进程启动中会启动很多其他的服务,其中一个就是 ActivityManagerService,在 startOtherServices 中会调用 AMS 的 systemReady() 方法将 Lanuncher 启动起来。

2025-03-26 11:26:35 926

原创 Kotlin标准函数库学习

apply:apply 函数可看作一个配置函数:你可以传入一个接收者,然后调用一系列函数来配置它以便使用。takeUnless 和takeIf 唯一的区别是:只有判断你给定的条件结果是false 时,takeUnless 才会返回原始接收者对象。它们的功能行为是一样的,但with 的调用方式不同。takeIf:和其他标准函数有点不一样,takeIf 函数需要判断lambda中提供的条件表达式(叫predicate),给出true 或false 结果。apply 可以用在初始化时,的不断引用的情况。

2025-03-18 14:02:14 432

原创 使用tslib调试触摸问题

执行命令脚本,或把下面这些环境变量添加进当前用户。然后在/etc/ld.so.conf里添加。然后就可以使用ts_print进行调试了。一、在开发板上下载tslib。并运行ldconfig更新库。

2025-03-12 15:21:24 335

原创 编译aws-sdk-cpp的s3库 windows和mac

windows下使用cmake和msvc2017x64来编译aws sdk cpp库

2024-10-24 14:33:45 1179 2

原创 qtcreator的vim模式下commit快捷键ctrl+g,ctrl+c没有反应的问题

qtcreator在vim模式下ctrl快捷键没反应,修改办法

2024-08-24 10:13:35 548

原创 软件无法卸载Persistent apps are not updateable

安卓app无法删除问题分析

2024-08-05 15:07:42 805

原创 RK3588 AB镜像升级学习(一)

这里的步骤跟生成system.img基本一致,宏函数build-userdataimage-target内通过build_image.py来将$(PRODUCT_OUT)/data目录内容打包生成userdata.img,不同的是,这里不再需要放入ramdisk的内容。对比A/B系统下boot.img生成方式和非A/B系统下recovery.img的生成方式,基本上是一样的,所以A/B系统下的boot.img相当于非A/B系统下的recovery.img。

2024-05-31 15:00:33 3059

原创 ADIL简单测试实例

这个连接是Java的代码,我根据它的链接写了一个kotlin版本的。(Android Interface Definition Language)是Android平台上用于进程间通信(IPC)的一种接口定义语言。它允许不同进程中的组件(如服务和服务、服务和活动等)相互通信。AIDL是Android平台上实现跨进程通信的重要工具,它为开发者提供了一种方便、高效的方式来实现不同进程间的数据交换和方法调用。

2024-05-28 18:50:59 1601 1

原创 香橙派 AIpro使用评测

在本项目中,我们通过使用Sysbench这一强大的性能测试工具,对OrangePi AIpro AI芯片和RK3399芯片进行了深入的性能对比。测试配置为32个线程,持续时间为30秒,每2秒报告一次结果,以确保获得详尽且准确的性能数据。通过对比分析,我们发现了OrangePi AIpro AI芯片在CPU性能方面的一些显著优势,这些优势使其在处理多线程和高负载任务时表现更为出色。

2024-05-28 08:50:33 1433

原创 kotlin 编写一个简单的天气预报app (八)获取设备坐标

通过网络获取了安卓设备的坐标,并请求对应的天气情况

2024-05-24 17:08:22 1390

arm gicv3的相关架构资料

arm gicv3的相关架构资料

2022-05-26

极客班C++设计模式课件资料.zip

极客班C++设计模式课件资料,网易公开课C++设计模式相关资料。各类模式的PPT,和一个项目PDF手册

2020-06-27

0024-qt5.11.3_linuxfb_rotation.patch

qt支持界面旋转,在启动时可以增加roration=90

2021-12-20

STM32F4xx_DSP_StdPeriph_Lib_V1.4.0.zip

\8,STM32 参考资料\STM32F4xx 固件库\stm32f4_dsp_stdperiph_lib.zip

2020-07-26

template_FWLib.zip

STM32F429使用标准库的模板工程,不是HAL库。正点原子没有提供标准库,就自己搞了一个。主要是配置了工程的一些选项,然后把标准库放进去了,构建了一个普通的工程。

2020-07-26

swt-3.5.2-gtk-linux-x86_64

swt-4.2.2-win32-win32-x86_64.zip

2014-11-22

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

TA关注的人

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