- 博客(145)
- 资源 (8)
- 收藏
- 关注
原创 深入理解 eMMC RPMB 与 OP-TEE 在 Linux 系统中的应用开发
本文系统介绍了可信执行环境(TEE)中eMMC的RPMB安全存储机制及其在ARM平台的应用。RPMB作为eMMC/UFS的硬件安全分区,通过计数器保护和HMAC验证确保数据安全,适合存储密钥等敏感信息。文章详细解析了开源TEE实现OP-TEE的架构模块,包括其与RPMB的集成方式、开发结构(CA/TA)及通信机制,并提供了Hello Secure World示例。同时阐述了RPMB文件系统的加密机制和密钥分层结构,以及OP-TEE在Linux平台的适配方案。最后指出需注意内核配置和tee-supplican
2025-07-24 20:05:31
579
原创 标记当前处理的音频源类型
帮助开发者跟踪音频策略引擎在为不同音频源选择输入设备时的执行路径。当有音频输入相关问题时,可以通过这些日志快速定位问题源头。调试时可以验证是否进入了预期的 case 分支。可以清楚地看到系统处理了哪个音频源类型。
2025-07-23 14:00:59
178
原创 XDG 自动启动机制 ≠ systemd 服务
摘要:XDG自动启动与systemd服务是Linux中两种不同的自动运行机制。XDG用于桌面级程序启动,通过.desktop文件配置,由图形界面触发;而systemd管理后台服务,通过.service文件配置,系统启动时运行。主要区别在于:XDG适用于GUI程序(如屏保),systemd用于系统服务(如网络服务)。两者可配合使用,但机制独立,XDG属于用户态,systemd涉及系统级管理。
2025-07-17 13:45:11
332
原创 Linux 显示管理机制与工具概览
本文介绍了Linux显示控制工具DPMS及其相关命令。DPMS是VESA制定的显示器节能规范,支持Standby、Suspend和Off三种电源管理状态。文章对比了xset、xrandr、modetest等常用显示控制工具的层级、依赖环境和使用场景,并提供了息屏、分辨率调整、背光控制等实用命令示例。最后提到可根据需求深入探讨DRM驱动或自动息屏脚本等定制化内容。
2025-07-17 11:21:15
374
原创 在 RK3588 Ubuntu 上编译 eglinfo:全流程实战 + 常见报错修复
[`dv1/eglinfo`](https://github.com/dv1/eglinfo) 是一个开源的 EGL 信息检测工具,广泛用于 OpenGL ES 图形栈调试、驱动验证和嵌入式平台图形支持排查。在 Rockchip RK3588 上编译该工具可以协助我们确认 EGL + DRM 是否配置正确,尤其在无窗口系统(如 eglfs、framebuffer)环境中非常实用。
2025-06-30 11:20:45
368
原创 Linux 图形栈的几大核心组件之间的关系
图形系统层级解析:通过构件表、类比和拓扑关系梳理图形渲染流程。核心组件包括OpenGL ES(渲染指令)、EGL(连接API与显示平台)及底层显示接口(X11/DRM/eglfs)。类比绘画过程:OpenGL ES如画笔颜料,EGL是画框挂钉,显示接口决定墙面类型。典型应用场景包括嵌入式系统(eglfs+DRM)和桌面环境(X11)。数据流从应用层经渲染API、EGL绑定,最终输出到显示设备,形成完整的图形呈现链路。
2025-06-30 10:16:53
558
原创 视频压缩、码率与流媒体传输知识总结
本笔记整理了 I/P/B 帧结构、码率计算、文件大小估算、压缩格式对比、推流带宽建议等视频工程常见技术要点。H.265 / HEVC 高效压缩 5–10 Mbps 3–7 GB ≥10 Mbps。H.264 有损压缩 8–16 Mbps 6–12 GB ≥20 Mbps。未压缩 无压缩 ~1524 Mbps ~960 GB ≥1.6 Gbps。AV1 极致压缩 2–6 Mbps 2–4 GB ≥6 Mbps。二、压缩格式与文件大小对比(1.5 小时)
2025-06-21 00:07:25
468
原创 Android 多屏幕旋转控制原理与实战
摘要:本文探讨Android多屏幕旋转控制的实现与限制。系统通过DisplayManager管理屏幕(主屏ID=0,外接屏ID=2),但freezeDisplayRotation()API对非主屏常失效,原因包括:1)缺少FLAG_ROTATES_WITH_CONTENT标志;2)屏幕无内容;3)系统限制。解决方案推荐:1)视图级旋转(View.setRotation());2)渲染矩阵调整;3)系统源码修改(需ROM权限)。分析表明,主屏可原生控制旋转,外接屏需采用替代方案,并附架构设计示例说明属性配置策
2025-06-16 17:15:18
722
原创 Wi-Fi 6 在 2.4GHz 频段的速率与优化分析
Wi-Fi 6(802.11ax)在 **2.4GHz 和 5GHz** 频段均可工作,理论最高速率可达 **1200 Mbps**(5GHz,80MHz,2×2 MIMO)。但在 **2.4GHz 频段**,速率受 **信道宽度、MIMO、调制方式、干扰、协议开销** 影响,实际吞吐量通常低于理论速率。本文将详细解析 **Wi-Fi 6 在 2.4GHz 频段的速率计算、影响因素及优化方案**。
2025-06-13 11:56:28
1953
原创 v4l2_subdev 与 /dev/videoX 的关联
本文分析了Linux V4L2框架中传感器驱动与视频设备的关联机制。核心流程包括:1)传感器驱动通过v4l2_subdev注册,实现控制接口;2)SoC驱动创建video_device,生成用户空间设备节点;3)通过媒体控制器或异步子设备机制建立两者连接。关键是通过v4l2_subdev_call()实现用户操作到I2C控制的转发,形成"用户空间-video_device-v4l2_subdev"的三层控制链,最终完成从软件操作到硬件寄存器配置的完整通路。该机制实现了传感器驱动与平台驱动的解耦,支持灵活的视
2025-06-11 16:57:00
660
原创 Android Wi-Fi 连接失败日志分析
Android Wi-Fi 连接异常分析日志显示设备Wi-Fi连接失败,主要原因包括:1) 设备主动断开连接(CTRL-EVENT-DISCONNECTED reason=3),可能因信号弱或省电模式触发;2) Wi-Fi扫描失败(errorCode: -7),可能受系统限制或省电策略影响;3) 网络配置丢失(networkId 1找不到),表明保存的Wi-Fi信息可能被清除;4) 网卡异常(ifindex 13 down),提示Wi-Fi驱动或硬件问题。建议检查信号强度、关闭省电模式,并验证Wi-Fi配
2025-06-10 13:13:16
609
原创 如何使用 IP 地址修改 Android 的 Captive Portal 校验 URL
本文介绍了Android设备的Captive Portal检测机制及修改方法。主要内容包括:1) 通过ADB命令修改检测URL地址,指向自定义服务器;2) 服务器需正确配置HTTP 204响应;3) 提供Nginx、Apache和Python示例配置;4) 可选完全禁用检测或调整检测模式;5) 查看当前配置的方法。该方案适用于解决Wi-Fi自动连接问题,但需确保服务器可访问并正确响应。
2025-06-10 10:51:08
626
原创 Android AIDL Hal最低保证出现的问题
Android AIDL HAL的"乐观假设"设计解析在Android AIDL HAL(如IComposer)中,部分功能直接返回true而非动态查询,这源于协议层面的强制支持要求。与HIDL需运行时检查不同,AIDL通过版本号约束基础功能(如可变刷新率、帧调度等),确保厂商必须实现。这种设计减少了Binder通信开销,用静态决策替代动态检查,提升性能。Google通过CTS认证和版本协商机制保障兼容性——若厂商虚报支持将导致认证失败。关键功能(如亮度控制)因Android版本要求而默认可用。该优化
2025-05-29 09:58:59
994
原创 Android SurfaceFlinger核心工作机制
SurfaceFlinger是Android图形系统的核心服务,负责管理图形缓冲区合成及显示输出。其核心工作流程包括:1) 通过main()函数初始化并注册系统服务;2) 采用分层架构与硬件交互,优先使用HWC硬件合成,失败时回退GPU混合模式;3) 通过HAL抽象层实现硬件厂商适配,支持DRM/KMS驱动交互。关键设计包括动态硬件能力查询、分层解耦架构和性能优化策略。调试时可查看HWC版本或强制GPU合成分析问题。整体设计在保证兼容性的同时最大化硬件加速能力。
2025-05-29 09:26:01
828
原创 Systemd服务重启策略详解:on-failure与相关配置
Systemd作为现代Linux系统的初始化系统,提供了强大的服务监控和自动重启功能。
2025-05-23 16:50:13
663
原创 Linux 磁盘管理、分区和文件系统检查
本文介绍了三个关键命令及其在排查和修复SD卡或eMMC存储设备问题中的应用。首先,gdisk -l /dev/mmcblk0用于查看分区表,确认分区布局、类型和文件系统。其次,cat /etc/fstab用于检查系统自动挂载的磁盘配置,确保分区正确挂载。最后,fsck /dev/mmcblk0p7用于检查和修复文件系统错误,如超级块损坏或文件系统不一致。
2025-05-23 14:39:07
524
原创 PCIe EP/RC 核心功能解释
本文介绍了 PCIe 设备中几种关键技术的功能与应用,包括 BAR 访问、DMA 传输、MSI 中断、EP 卡中断事件以及 ELBI 中断。BAR 用于主机与设备之间的寄存器访问,DMA 实现高效数据传输,MSI 提供低延迟中断通知,EP 卡中断事件处理设备内部状态,ELBI 则用于设备内部模块通信。文章还通过数据采集卡的示例展示了这些技术的协同工作流程,并对比了它们的特点与适用场景,如数据采集、GPU/FPGA 加速和网络适配器等。这些技术共同提升了 PCIe 设备的性能与效率。
2025-05-20 18:02:26
1166
原创 [特殊字符] 10个Linux系统急救神技:死机、卡顿、崩溃?一招全搞定!
列出了所有可用的 SysRq 功能键及其作用。SysRq 是 Linux 内核提供的“魔法键”组合(通常通过。触发),用于在系统崩溃、死锁或调试时执行底层操作。触发了 Linux 内核的。
2025-04-30 15:45:30
483
原创 深入解析:GCC 默认路径与库文件管理指南
在 Linux 开发中,GCC/G++ 的默认搜索路径决定了编译器如何查找头文件(理解这些路径的规则,能帮助你解决。链接失败、运行时库缺失等问题。
2025-04-30 11:53:48
562
原创 从摄像头到 RAW 数据:MJPEG 捕获与验证
MJPEG(Motion JPEG)是一种常见的视频压缩格式,广泛应用于摄像头、监控系统和嵌入式设备。在某些场景下,我们需要直接从摄像头获取 MJPEG 原始数据,并验证其正确性。命令进行验证,同时拓展相关技术细节。工具捕获 MJPEG 帧,并通过。
2025-04-29 17:36:44
429
原创 不用setWindow=手动造轮子?揭秘Qt坐标系系统的设计哲学
通过这种方式,您会直观感受到逻辑坐标系如何像"虚拟摄像机"一样控制图形的显示范围与比例。
2025-04-28 15:12:45
798
原创 内核调试目录文件详解 Linux /proc/sys/kernel
目录包含了Linux内核运行时参数的设置,这些参数可以动态调整系统行为而无需重新启动系统。
2025-04-28 10:11:11
574
原创 [特殊字符] Qt信号槽终极指南:传统vs Lambda,谁才是王者?
那么,传统方式与Lambda方式各有什么优缺点?本文全面对比,帮你做出最佳决策!在合适的场景选择最优雅的方式,让代码既简洁又健壮!函数是信号槽机制的核心,而Qt5之后引入了。
2025-04-24 15:17:17
429
原创 ❌ 你的 Linux 图形性能差?可能选错了显示后端!
新项目优先评估 Wayland,兼容需求通过 XWayland 解决;嵌入式场景可结合 Qt/Wayland 或专用框架。
2025-04-23 13:43:44
837
原创 Qt 容器类使用指南
Qt提供了一系列容器类,类似于STL容器但更紧密集成到Qt框架中。Qt容器与STL容器可以互相转换,根据具体需求选择合适的容器类型。
2025-04-23 09:53:34
398
原创 PCM 参数深度解析:采样率、帧、缓存大小与多通道关系
采样率(rate):定义每秒处理的帧数(48000 Hz),与通道数无关。帧(Frame):是一个包含所有通道采样的最小数据单位,每帧字节数由 channel 数×(每个采样的字节数)决定。:单次数据传输的帧数(1024 帧),也意味着单个周期的时长为 1024/48000 秒(约 21.33 毫秒)。:缓冲区中周期的总数(4),影响整个缓冲区的大小和抗系统调度抖动的能力(总帧数 4096)。数据大小:通过可把帧数转换为字节数,方便内存分配和数据传输;反之。
2025-04-18 17:47:46
1287
原创 Android tinyalsa库函数剖析
检查特定的 PCM 格式(例如 PCM_FORMAT_S16_LE)是否在支持的格式中,返回 1 表示支持,0 表示不支持。通过 ioctl 调用发送控制命令给 PCM 驱动,允许更底层的控制和调整,这是更底层的设备操作接口。返回当前 PCM 流的延迟(以毫秒为单位)。从已打开的 PCM 流中获取当前的配置信息(例如实际启用的通道数、采样率、缓冲区设置等)。修改已经打开的 PCM 流的配置(如果硬件和驱动支持动态调整的话)。打开指定声卡(card)和设备(device)的 PCM 流。
2025-04-18 17:14:22
847
原创 C++构造函数加不加explicit?90%程序员都踩过的坑!(附最佳实践)
关键字就像一道"安全锁",防止编译器偷偷做你不想要的类型转换。(附:如果你在团队中发现有人乱用隐式转换,可以把这篇文章甩给他~ 😉)你在代码中遇到过最奇葩的隐式转换问题是什么?:代码行为不直观,容易引发隐蔽bug!在C++中,构造函数前的。
2025-04-16 16:05:27
231
原创 揭秘移远EC25 VoLTE:Modem内置IMS,Android层无需实现ims service
当设备插入SIM卡时,基带会根据SIM卡的运营商信息(MCC/MNC)自动加载对应的MBN配置。MBN(Modem Binary Configuration)是高通(Qualcomm)平台用于。移远EC25模块(基于高通芯片)内置了。提供,并预置在设备的。,说明IMS已启用。
2025-04-15 15:55:06
1315
原创 后台进程管理之pstree 和 job
以树状结构显示进程间的父子关系,直观展示进程的层次结构。管理当前 Shell 会话中的后台任务(仅限当前终端)。
2025-04-12 12:15:46
312
原创 C++ 极简常用内容
封装数据(成员变量)和行为(成员函数)的自定义类型。:表示实体(如用户、订单)或封装逻辑(如文件操作)。:代码复用(如多种GUI控件共享基类功能)。:通过对象生命周期管理资源(如内存、文件)。:通过基类指针/引用调用派生类的重写函数。:统一接口不同实现(如游戏角色行为差异)。:资源需自动释放(如数据库连接、锁)。:派生类复用基类的属性和方法。:自动管理动态内存,避免泄漏。:编写与类型无关的代码。)或算法(如排序)。
2025-04-04 10:13:52
612
i.MX 6ULL Applications Processor Reference Manual.pdf
2020-03-14
东荣VLASV(新型东荣伺服器).pdf
2020-03-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人