自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jongden的专栏

力行善事,广积阴德,无福不可求~~

  • 博客(201)
  • 资源 (2)
  • 收藏
  • 关注

原创 Qt Q_OBJECT宏,5分钟讲清楚

在 Qt 开发中,Q_OBJECT不仅仅是一个宏,它是连接 C++ 静态世界与 Qt 动态元对象系统的桥梁。

2026-05-08 09:57:00 101

原创 Python struct模块使用方法,10分钟讲清楚

struct = Python 与 C 二进制数据之间的翻译官。

2026-04-29 10:28:30 337

原创 Python logging.TimedRotatingFileHandler使用方法详解

TimedRotatingFileHandler = 按时间自动切日志 + 控制历史数量。

2026-04-27 19:22:31 172

原创 Python threading模块,10分钟讲清楚

✅ 优先使用✅ 用Queue做线程通信✅ 少用共享变量✅ 锁粒度要小✅ IO 密集用线程,CPU 密集用进程。

2026-04-27 11:59:19 176

原创 Linux kernel devm_of_platform_populate()函数浅谈

一个硬件模块包含多个功能单元(如 PMIC),每个功能在设备树中作为子节点描述,父驱动调用此函数创建各功能对应的平台设备。若子设备不需要平台设备驱动(例如已通过其他总线类型处理),则无需调用。(通常是总线控制器、宿主设备或 MFD 设备)中,当其设备树节点包含。如 I2C、SPI、USB 等控制器,其设备树中定义了挂载的子设备(中调用此函数,将子节点转换为平台设备,以便子设备驱动绑定。节点下的所有子节点都会自动成为平台设备,匹配各自的驱动。,会自动在设备卸载时清理创建的设备,避免内存泄漏。

2026-04-23 10:22:18 37

原创 Python argparse模块,10分钟讲清楚

argparse是 Python 标准库中用于的模块,功能强大、易用,适合构建 CLI(命令行界面)工具。

2026-04-22 11:46:05 204

原创 Linux kernel wait queue和completion的区别

等待队列是内核。

2026-04-15 11:22:06 351

原创 Linux kernel kfifo用法,10分钟讲清楚

专为生产者-消费者模型设计,广泛用于内核中的数据暂存与传输(如驱动中的中断上下文与进程上下文通信、模块间数据交换等)。(从用户缓冲区拷贝到kfifo内部缓冲区,或反之),因此效率略低于指针传递,但更安全。:固定大小的缓冲区,写满后覆盖旧数据(或阻塞,取决于使用方式),读空后返回0。(如8、16、32),否则会导致索引计算错误(内核不会自动调整,用户需确保)。:实际拷贝的字节数(若缓冲区剩余空间不足,返回实际能拷贝的字节数)。:实际拷贝的字节数(若缓冲区数据不足,返回实际能取出的字节数)。

2026-04-14 19:56:38 393

原创 Linux kernel completion(完成量)10分钟讲清楚

Linux内核中的completion(完成量)是一种轻量级同步机制,。与信号量相比,completion语义更清晰,开销更小,特别适合单次触发的同步场景。

2026-04-01 11:47:38 418

原创 GNU C语句表达式,10分钟讲清楚

标准 C 中,MAX(a,b)宏若直接写(a > b?a : b),当ab有副作用(如i++(a) : (b))// 展开为 (i++ > j++?i++ : j++) → 先比较i=1,j=2(j变3),再执行j++(j变4)→ 结果错误用语句表达式// 用typeof获取a的类型(GNU扩展),避免类型不匹配 \_a > _b?_a : _b;// 最后一条表达式,返回最大值 \})此时会先缓存i++和j++的值(分别为1、2),再比较,最终i=2j=3,结果为2,正确。

2026-03-31 19:50:34 407

原创 make modules_install和make install的区别

维度操作对象内核模块(.ko)内核镜像、System.map、config、initramfs目标让系统能加载新模块让系统能启动新内核必要前置(如make Image关键输出对引导的影响无更新GRUB/U-Boot配置一句话结论是“装零件”(模块),是“装发动机+钥匙”(内核+引导)——两者结合才能让新内核正常工作。

2026-03-31 17:00:03 414

原创 C++程序的进程内存布局,10分钟讲清楚

C++进程的内存布局是代码段、数据段、BSS段、堆、栈等的有机组合,C++特性(虚函数、继承、对象模型)在此基础上增加了vtable、vptr等结构。

2026-03-31 10:24:35 362

原创 C++11 std::function,10分钟讲清楚

是 C++11 引入的(定义在头文件中),用于它解决了传统函数指针无法兼容 lambda、成员函数、函数对象等场景的痛点,是实现回调、策略模式、事件系统等设计的利器。的本质是(Type Erasure):它通过统一的接口隐藏了不同可调用对象的类型差异,允许你将任何符合签名的可调用对象“包装”成一个对象。:可调用对象的;Args...:可调用对象的(可变模板参数);整体表示“一个接受Args...参数、返回R类型的可调用对象”。

2026-03-21 17:59:14 396

原创 std::unique_lock和std::lock_guard,5分钟讲清楚

和都是 C++ 标准库(<mutex>)中的互斥量管理工具,用于自动处理锁的与,避免手动操作导致的死锁或资源泄漏。是的锁管理器:构造时互斥量(或通过接管已锁定的互斥量);生命周期内(析构时自动解锁);不支持“延迟锁定”“尝试锁定”等操作。是的锁管理器:支持):构造时不锁定,后续手动调用lock();支持):构造时尝试获取锁,失败则立即返回(不阻塞);支持):同lock_guard,但更灵活;提供lock()unlock()try_lock()等手动控制接口,可在临界区中间临时解锁。

2026-03-21 17:02:54 192

原创 C++11 std::map访问,5分钟讲清楚

方法适用场景优点缺点。

2026-03-21 16:37:53 382

原创 Linux kernel container_of宏,10分钟讲清楚

是 Linux 内核中一个,用于通过结构体成员的指针反向推导出包含该成员的结构体本身的指针。它在内核中广泛应用(如链表操作、设备模型、驱动私有数据访问等),是实现“由部分到整体”指针转换的关键工具。假设你有一个结构体struct A,其中包含一个成员struct B b。如果你持有一个指向b的指针(即),会返回指向整个struct A实例的指针(即的典型定义位于。

2026-03-20 15:34:03 327

原创 Qt QQuickView,10分钟讲清楚

所属模块QtQuick。核心作用:加载并渲染QML文件(*.qml),将QML描述的UI转化为可视化窗口;同时作为QQmlEngine的载体,实现C++与QML的双向交互。本质:继承自QWindow的子类),因此是原生窗口(而非QWidget),更适合无桌面环境的嵌入式场景。QQuickView是嵌入式Qt Quick开发的“窗口入口”,核心优势是轻量、硬件加速、无缝连接C++与QML。

2026-03-04 15:49:56 400

原创 Qt QEventLoop类,10分钟讲清楚

QEventLoop是Qt事件驱动模型的核心,其价值在于:用局部事件循环实现“同步等待异步结果”,避免界面冻结;用processEvents()手动控制事件处理,平衡计算与响应性;支撑模态交互多线程通信等复杂场景。事件循环是“事件的处理器”,而QEventLoop是控制这个处理器的开关。

2026-03-04 09:48:51 491

原创 Sensor尺寸介绍:1英寸、全画幅、4/3

​。

2026-02-27 17:21:10 1159

原创 QPD对焦和PDAF对焦的区别?5分钟讲清楚

主要用于高端传感器(如索尼IMX989、IMX866),搭载于旗舰手机(如小米13 Ultra)、专业相机(如索尼A7IV)及高端影像设备。:QPD传感器价格较高(如IMX989约30美元),需平衡性能与成本(比如用次高端的IMX866,支持QPD但更便宜)。旗舰手机(小米13 Ultra)、专业相机(索尼A7IV)、高端云台相机(如大疆Ronin 4D)。(通常为“双光电二极管”结构),占传感器总面积的一部分(约5%-15%)。的专门相位检测像素(部分像素),其余为普通像素。

2026-02-27 11:15:53 572

原创 ND滤镜的作用,5分钟讲清楚

ND滤镜不是“可有可无的配件”,而是从“能拍”到“拍好”的关键工具——尤其对想做“爆款影像产品”的公司来说,解决用户“强光下不会拍”的痛点,就是差异化的机会。在极端环境下保留更多细节,只是ND用“减光”替代“电子算法”,更依赖光学设计,但也更受专业用户认可。

2026-02-27 10:20:42 665

原创 什么是相位检测自动对焦(PDAF)技术?

相位检测自动对焦(Phase Detection Autofocus, PDAF)是一种广泛应用于相机和智能手机摄像头的快速对焦技术。PDAF利用光学中的相位差原理。在传统成像中,光线通过镜头汇聚到传感器上形成清晰图像;若未对焦,光线会形成前后两个虚像(相位差)。PDAF通过传感器上的专用相位检测像素(或像素对)捕捉这两个虚像的位置差异,直接计算出需要移动镜头的方向和距离,快速调整至准确对焦位置。需要传感器上集成相位检测点(如双像素结构),每个点可独立接收光线并比较相位差。

2026-02-27 10:07:35 392

原创 Qt QJsonDocument 10分钟讲清楚

是 Qt 中处理 JSON 数据的核心容器类,属于QtCore模块(需包含头文件,并在.pro中添加QT += core解析​ JSON 字符串/字节流为结构化的 Qt 对象(QJsonArray生成​ JSON 字符串/字节流(从QJsonArray转换);封装​ JSON 文档的根元素(JSON 根必须是对象或数组,不能是单个值)。Qt 的 JSON 模块是轻量级、隐式共享(Implicitly Shared)的,适合嵌入式场景,资源占用低且性能足够。是 Qt 处理 JSON 的核心入口,结合。

2026-02-11 10:26:54 792

原创 Qt QSettings 10分钟讲清楚

若需存储自定义结构体,需注册元类型并实现流操作符(<<>>// 自定义设备校准参数// R通道增益// B通道偏移// 注册元类型(需唯一名称)// 写自定义类型// 读自定义类型QSettings 是配置持久化的首选方案——它帮你屏蔽了跨平台差异,用简单的键值对管理复杂配置。

2026-02-11 10:00:40 718

原创 SerDes IP基础概念浅谈

便携监视器可能需无线图传(如 Wi-Fi 6E/5G)或有线光纤传输,SerDes IP 可将视频流串行化后通过光纤模块(如 SFP+)远距离传输(公里级),减少布线重量和干扰。:ZynqMP 的 PS(ARM 核)与 PL(FPGA 逻辑)间需传输高清视频流(如 4K@60fps 未压缩视频约 12Gbps),可通过。如 8b/10b、64b/66b、128b/132b 编码,解决直流平衡(避免信号基线漂移)、插入同步码(便于时钟恢复)。

2026-02-10 16:46:18 677

原创 Ethernet loopback mode 10分钟讲清楚

Ethernet Loopback Mode是你开发流媒体时的“基础调试工具”——从硬件验证到流媒体功能调试,再到性能评估,都能帮你快速定位问题。

2026-02-10 11:04:37 672

原创 Video Linear Mode和Video HDR Mode浅谈

默认模式选Linear:兼顾功耗与兼容性,适合大多数室内/光线均匀的广电场景;HDR模式作为可选功能:针对户外/复杂光照场景(如外拍、现场直播),通过按键切换或自动检测光照触发;硬件优化:利用ZynqMP的PL侧FPGA逻辑加速HDR的关键步骤(如色调映射、多帧融合),降低ARM核负载;兼容性测试:确保HDR输出能适配主流HDR显示器(如支持HLG的监视器),同时提供SDR fallback(向下转换)。

2026-02-07 14:19:04 658

原创 Qt QOpenGLFramebufferObject类详解

OpenGL的默认帧缓冲(Default Framebuffer)是直接关联窗口/屏幕的,无法直接用于“离屏渲染”(比如先渲染到纹理再做后期处理、多Pass合成、动态纹理生成)。帧缓冲对象(FBO, Framebuffer Object)​ 是OpenGL的扩展(OpenGL 2.1+原生支持,OpenGL ES 2.0+通过扩展支持),允许开发者创建离屏的自定义帧缓冲,将渲染结果输出到纹理(Texture)或渲染缓冲区(Renderbuffer),而非屏幕。Qt的是对OpenGL FBO的跨平台封装。

2026-02-07 13:58:02 751

原创 C++引用(Reference)10分钟讲清楚

引用是某个已存在变量的别名,声明时必须立即初始化(绑定到一个变量),且终身无法重新绑定到其他变量。类型& 引用名 = 原变量名;int a = 10;// ref_a 是 a 的别名(引用)ref_a = 20;// 等价于 a = 20,此时 a 的值变为 20cout << a;// 输出 20(引用操作直接影响原变量)引用是变量的别名,必须初始化且不可重绑定。左值引用(类型&)绑定左值,用于函数参数、返回引用等;右值引用(类型&&)绑定右值,用于移动语义。

2026-02-07 09:36:58 702

原创 Qt QOffscreenSurface类详解

的核心类,它提供了一种不依赖窗口系统的渲染表面,允许在后台生成 OpenGL 内容(如纹理、像素数据),无需关联任何可见窗口。:将摄像头采集的原始帧(如 YUV 格式)渲染到离屏表面,进行色彩空间转换(YUV→RGB)、色彩校正、叠加 OSD(时间码、台标)等操作。:将多个视频源(如 HDMI 输入、USB 摄像头)分别渲染到独立的离屏表面,再合成到一个大的离屏表面,最终输出到显示设备。:将动态生成的图形(如二维码、图表)渲染到离屏表面,转为 OpenGL 纹理,供主渲染管线使用。

2026-02-06 17:26:20 459

原创 Linux DMA-BUF内存共享机制浅谈

DMABUF是Linux下流媒体零拷贝传输的基石,通过“导出-传递-导入”的流程,解决了跨驱动内存共享的效率问题。它能帮你实现“摄像头采集→编码→显示”的低延迟 pipeline,提升产品竞争力。后续可深入研究的方向:结合V4L2-HEVC或DRM Prime接口优化DMABUF的使用;用GStreamer或FFmpeg的DMABUF插件快速搭建原型;(查看DMABUF使用情况)、perf(分析拷贝开销)。惠州大亚湾。

2026-02-06 16:22:05 749

原创 linux GBM浅谈(Generic Buffer Management)

插件。

2026-02-06 15:28:00 673

原创 /dev/dri/card0设备,10分钟讲清楚

是 Linux DRM 框架的核心设备节点,是用户空间控制图形硬件的入口。它承担着:显示输出的底层控制(分辨率、刷新率、页面翻转);Qt GUI 的硬件加速渲染(EGLFS + GBM);流媒体的编解码与显示协同(VCU + DRM 显存共享)。深入理解的 ioctl 操作和 DRM 框架,能帮助你优化流媒体的低延迟播放高画质显示,以及硬件资源的充分利用(如 ZynqMP 的 VCU 与 GPU 协同)。

2026-02-06 11:09:44 774

原创 OpenGL与X11/Wayland/DRM/KMS/EGL的关系

OpenGL是“画笔”,EGL是“画布适配器”,窗口系统(X11/Wayland)是“画框管理器”,DRM/KMS是“画纸(屏幕)的驱动”——它们共同完成“用OpenGL画画,再显示在屏幕上”的过程。

2026-02-06 10:33:59 675

原创 你需要了解的OpenGL基础概念

OpenGL(Open Graphics Library)是跨平台的。

2026-02-06 10:20:03 651

原创 Qt QOpenGLWindow 类详解

(提供 OpenGL 核心函数接口),结合了窗口管理与 OpenGL 渲染能力,适合需要高性能图形渲染的场景(如流媒体显示、3D 可视化、游戏等)。可用于高效渲染视频流(如 YUV/RGB 纹理)、叠加 OSD 信息或实现动态图形效果,尤其适合 ZynqMP 平台的 GPU 加速场景。(前缓冲显示、后缓冲渲染),避免画面闪烁。:Qt 的跨平台窗口抽象,管理窗口的显示、事件处理和表面(Surface)类型(如 OpenGL 表面)。的子类,更轻量、性能更高,适合全屏或独立窗口场景(如主显示窗口)。

2026-02-06 09:55:20 691

原创 网络接口MAC和PHY的关系,5分钟讲清楚

MAC是数据链路层的子层(另一子层是LLC,逻辑链路控制),本质是数字逻辑电路(或SoC中的硬核IP),负责以太网帧的“管理”帧封装/解封装:将上层(如IP层)的数据包添加以太网头部(源/目的MAC地址、类型字段)和尾部(CRC校验码),形成完整的以太网帧;接收时反向解析。介质访问控制:通过CSMA/CD(载波监听多路访问/冲突检测,半双工)或全双工模式,协调多个设备对共享介质(如网线)的访问,避免冲突。地址识别:基于48位MAC地址(硬件唯一标识)过滤帧(只处理目的MAC为自己或广播/组播的帧)。

2026-02-05 18:54:34 1050

原创 如何理解OpenGL上下文(OpenGL Context)

OpenGL本质是一台“软件状态机”——所有渲染操作(如绘制三角形、绑定纹理、设置视口)都依赖当前的状态集合(比如“当前激活的着色器程序”“当前绑定的纹理单元”“深度测试是否开启”),且操作的结果会修改这些状态。而OpenGL上下文,就是承载这台状态机的“运行环境”状态集合:所有OpenGL状态的当前值(如等);资源容器:与该上下文关联的GPU资源(纹理、顶点缓冲区VBO、帧缓冲区FBO、着色器程序、同步对象等);执行上下文。

2026-02-05 14:50:40 708

原创 Qt QSurfaceFormat类详解,10分钟讲清楚

是 Qt 图形开发中连接应用与GPU的桥梁,通过合理配置可实现:适配不同平台的OpenGL版本(桌面/嵌入式);优化渲染性能(如双缓冲、VSync);开启高级特性(抗锯齿、深度测试);调试OpenGL程序(错误回调)。

2026-02-04 14:56:55 631

原创 C++各种智能指针详解,10分钟讲清楚

/ 自定义删除器:关闭文件// 用自定义删除器创建unique_ptr// get()返回裸指针// 离开作用域时,自动调用FileDeleter释放文件return 0;智能指针是C++现代编程的必备工具,核心是通过所有权模型自动管理内存。记住:独占用unique_ptr,共享用shared_ptr;循环引用用weak_ptr破局;优先用;避免裸指针与智能指针混用。

2026-02-04 11:46:52 705

华为Java语言编程规范

最近刚刚开始学习JAVA 搞好从别的途径找到了《华为Java语言编程规范》 上传上来和大家分享分享

2014-03-31

IMX185LQJ-C Datasheet书签版

这个IMX185的规格书之前也是网上找的,但是下下来之后,没有书签,看着不方便。这一版本是完整书签版。

2017-11-07

安霸h22s75规格书:H22S75-DTS-003-0.1-Ambarella-Datasheet.pdf

美国音视频DSP芯片厂商ambarella,安霸H22S75规格书。 支持h265、最高可达4Kp30帧。支持电子防抖。

2023-02-02

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

TA关注的人

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