会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
moonのsun
管理
2026年2月12日
libcamera log等级设置
摘要: 1 LOG等级 DEBUG, INFO, WARN, ERROR, FATAL,对应数字0~4; 下面所有的export设置全局变量,都可以把DEBUG,INFO替换成对应的数值; 默认log在这里设置: // src/libcamera/base/log.cpp LogCategory::LogC
阅读全文
posted @ 2026-02-12 12:32 moonのsun
阅读(3)
评论(0)
推荐(0)
2026年2月9日
内存映射的属性
摘要: 1 MT_NORMAL 普通内存访问,无实时性要求场景 支持推测、缓存、乱序、合并写等功能 不可用于寄存器,因为寄存器对顺序有要求 2 MT_NORMAL_NC 无缓存 支持推测、乱序、合并写等功能 适用对缓存敏感的普通内存,如DMA共享内存 不可用于寄存器,因为寄存器对顺序有要求 3 MT_DEV
阅读全文
posted @ 2026-02-09 16:38 moonのsun
阅读(3)
评论(0)
推荐(0)
2026年1月23日
编译和版本发布
摘要: 一个库为什么会有三个so? 库xxx发布的时候,会三个so: libxxx.so.1.0.0 libxxx.so -> libxxx.so.1.0.0 libxxx.so.1 -> libxxx.so.1.0.0 libxxx.so.1.0.0 真实的库,后缀分别是主版本号,次版本号,修订版本号 l
阅读全文
posted @ 2026-01-23 09:40 moonのsun
阅读(9)
评论(0)
推荐(0)
2025年12月25日
公私分明
摘要: 应用场景 C++交付sdk库的时候,需要同时给出头文件。但是C++的类存在一个问题:private是类内部使用的,可能会包括不想暴露给用户的敏感成员函数和数据。但是对于C++来说,无论是public还是private,都是在头文件中定义的,没有办法做到公私分明。 libcamera关于Extensi
阅读全文
posted @ 2025-12-25 16:06 moonのsun
阅读(11)
评论(0)
推荐(0)
shared_from_this
摘要: 使用场景 C++中,有时候会想在类成员内部获取类的shared_ptr,比如: 成员函数异步调用某个api,传递当前类指针,为了避免类析构后指针失效,需要传递shared_ptr作为参数,以延长生命周期 A::func1() { this->invoke(B::func2, shared_from_
阅读全文
posted @ 2025-12-25 12:00 moonのsun
阅读(7)
评论(0)
推荐(0)
2025年12月12日
线程间函数调用
摘要: 1 四种api调用 在libcamera中,类和线程通过Object绑定,它们的关系为: Object通过Thread实现invokeMethod(),类继承Object,外部就可以通过类指针调用invokeMethod()了。 b->invokeMethod(B::func, Type, para
阅读全文
posted @ 2025-12-12 13:46 moonのsun
阅读(8)
评论(0)
推荐(0)
2025年11月13日
v4l2用户侧使用流程
摘要: 前言 v4l2的用户侧使用方法的简单demo,参考:media/v4l/v4l2grab.c 实际上,v4l2的用户侧有libv4l开源库。用户可以使用此开源库快速搭建其用户侧代码。 流程 int main() { // open fd = v4l2_open("/dev/video0", O_RD
阅读全文
posted @ 2025-11-13 20:41 moonのsun
阅读(16)
评论(0)
推荐(0)
2025年11月12日
v4l2 probe时各个device的操作顺序
摘要: dev_set_drvdata(&pdev->dev, myisp) “在现代嵌入式 Linux(尤其是 ARM)中,不再硬编码 platform_device,而是通过 设备树(Device Tree) 描述硬件”。 myisp就是驱动模块对应的自定义设备; 这里把myisp结构体赋值给platf
阅读全文
posted @ 2025-11-12 16:07 moonのsun
阅读(6)
评论(0)
推荐(0)
V4L2的pad连接
摘要: 规则 每个video_device或者v4l2_subdev就是一个entity 链接关系其实就是不同entity的pad之间的连接 v4l2的pad连接约定:不同entity的pad之间是source -> sink,这和一些地方的约定相反 如果video_device是输出设备,其pad就是so
阅读全文
posted @ 2025-11-12 13:58 moonのsun
阅读(14)
评论(0)
推荐(0)
2025年11月11日
v4l2_subdev和video_device区分
摘要: 相关规则 video_device是用户空间可见的设备节点,如摄像头、编解码器; v4l2_subdev是不可见于用户空间的中间硬件模块,比如sensor、ISP 一个实体硬件(entity),也可以是 video_device或者v4l2_subdev;两者的结构体内都有media_entity;
阅读全文
posted @ 2025-11-11 21:05 moonのsun
阅读(22)
评论(0)
推荐(0)
DMA机制-2
摘要: IOVA IOVA指的是IO的virtual address。 IO指的是DMA硬件,比如ARM的IOMMU(又称为SMMU)。 对于CPU来说:vaddr -> MMU -> paddr,对于DMA来说:iova -> IOMMU -> paddr。 关系图: + + + + | CPU (内核)
阅读全文
posted @ 2025-11-11 14:43 moonのsun
阅读(52)
评论(0)
推荐(0)
2025年10月20日
C++模板和特化
摘要: 分类 C++的模板分为函数模板和类模板。 这是一个普通类模板: // 主模板(通用版本) template<typename T> class MyContainer { public: void print() { std::cout << "Generic\n"; } }; 这是一个普通函数模板
阅读全文
posted @ 2025-10-20 11:17 moonのsun
阅读(14)
评论(0)
推荐(0)
2025年10月14日
mmap + memcpy => SIGBUS ?
摘要: 问题描述 代码库中存在类似的代码: void *virt_addr = mmap(fd, flag, size0 offset); void *temp = malloc(size0); memcpy(temp, config, size1); memcpy(virt_addr, temp, siz
阅读全文
posted @ 2025-10-14 20:50 moonのsun
阅读(22)
评论(0)
推荐(0)
2025年9月28日
git 盲区
摘要: git rm --cached xxx rm:从工作区删除 git rm:从工作区和暂存区都删除,相当于rm + git add git rm --cached:仅从暂存区删除,用于不想跟踪某些本地文件,但又需要保留本地时使用 git reset git reset HEAD的简写,用于将修改从暂存
阅读全文
posted @ 2025-09-28 14:18 moonのsun
阅读(9)
评论(0)
推荐(0)
DMA机制
摘要: 前言 我很早就接触到DMA这个词,但是现在才感觉真正的认识DMA。这种认识来的太迟,还好是来了。 之前的认识 “DMA是一种硬件,帮助CPU搬运buffer,降低CPU loading。” 现在看来,除了最基本的“硬件”、“降低CPU loading”还算正确,其他全部乱套了。 什么是DMA DMA
阅读全文
posted @ 2025-09-28 11:03 moonのsun
阅读(128)
评论(0)
推荐(0)
2025年9月17日
IPA
摘要: 1. 定义 Image Processing Algorithm,图像处理算法,看名字并不能很清楚的知道其在libcamera中的角色和作用。 实际上,每个ISP只有一个pipelineHandler,也只有一个IPA模块,每个IPA模块管理者多个Algorithm(如AE,AF等)。 // awb
阅读全文
posted @ 2025-09-17 15:21 moonのsun
阅读(19)
评论(0)
推荐(0)
PipelineHandler
摘要: 1. PipelineHandler(以下简称PH)是基类,派生类是SimplePipelineHandler(对应simple software isp)、PipelineHandlerMaliC55(对应MaliC55 isp)等。 2. 如上,每个PH实例对应一种isp;因此如果只有一种isp
阅读全文
posted @ 2025-09-17 11:33 moonのsun
阅读(7)
评论(0)
推荐(0)
2025年4月24日
第19章 进程通信
摘要: 1 管道 1.1 特点 生产者/消费者模型 半双工:双向,每次都能朝一个方向传输数据 管道作为一组VFS对象,可以使用VFS通用结构访问(比如读写);管道被组织为pipefs这种特殊文件系统,在系统目录树没有安装点,用户看不到它们 管道创建后,返回一对文件描述符,分别用来读和写;然后通过fork()
阅读全文
posted @ 2025-04-24 00:03 moonのsun
阅读(28)
评论(0)
推荐(0)
2025年4月20日
第14章 块设备驱动程序
摘要: 1 块设备磁盘结构 页框:物理内存会分成大小相等的分区,称为页框 页:用户进程的地址空间分成大小相等的区域,且大小和页框相等 段: 块:VFS和文件系统传送数据的基本单位,必须是扇区的整数倍 扇区:硬件设备传送数据的基本单位 2 IO调度程序 块设备驱动程序每次可以传输一个扇区,但是并不是每次需要访
阅读全文
posted @ 2025-04-20 22:21 moonのsun
阅读(10)
评论(0)
推荐(0)
2025年4月18日
第13章 I/O体系结构和设备驱动程序
摘要: 1 IO端口映射 IO端口与CPU直连,CPU读取IO端口时需要一个地址,就是IO端口物理地址的映射。 IO映射有两种方式: 内存映射:ARM架构芯片只有一个物理地址空间,因此IO端口直接被内存的一部分,内核像访问内存一样访问端口 IO空间映射:X86架构有专门的IO空间,CPU通过设立专门的I/O
阅读全文
posted @ 2025-04-18 09:17 moonのsun
阅读(86)
评论(0)
推荐(0)
下一页