摘要: 分配 释放 __find_buddy_pfn,去寻找page对应的buddy pfn; 寻找的逻辑是 异或 (1 << order); 也就是对 (1 << order) 这一个bit做取反操作(和1异或相当于是取反),其余的bit(和0异或保持原值) 不变化; 由于互为buddy的page,必定是 阅读全文
posted @ 2024-11-21 10:52 _xingxing 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 前言 不是特别懂,但是先把自己目前的理解写下来(甚至目前的有些理解都是错的),随着时间的积累再丰富; 内存模型 有三种内存模型: Flat Memory:所有内存都是连续的,通过数组管理所有的page,数组的下标就是pfn;所有可以很简单的pfn下标找到对应的page,page可以很简单的找到pfn 阅读全文
posted @ 2024-11-20 19:27 _xingxing 阅读(1) 评论(0) 推荐(0) 编辑
摘要: slab的单位是object,而不是byte 阅读全文
posted @ 2024-11-15 09:37 _xingxing 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 前言 结合应用层demo + vim2m.c 详细分析各个ioctl细节 VIDIOC_REQBUFS QUERYBUF V4L2_MMAP VIDIOC_STREAMON VIDIOC_QBUF VIDIOC_DQBUF VIDIOC_STREAMOFF 阅读全文
posted @ 2024-10-25 14:46 _xingxing 阅读(8) 评论(0) 推荐(0) 编辑
摘要: v4l2 test driver: vimc解析 前言 v4l2驱动框架分为:控制流+数据流,vimc是一个很好学习这两点的驱动; vimc不需要硬件支持,通过软件模拟了:支持isp处理的sensor + csi (虚线代表可以通过media ctl修改topology) 控制流体现在:topolo 阅读全文
posted @ 2024-10-24 01:21 _xingxing 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 1. 问题背景 想提升vpu编解码帧率,在vpu的设备树节点添加dma-coherent属性,vpu编解码timeout(失败); 2. 所做尝试 2.1 vpu内存分配接口 b->virt = dma_alloc_coherent(dev, PAGE_ALIGN(size), &b->dma, G 阅读全文
posted @ 2023-10-10 16:56 _xingxing 阅读(571) 评论(0) 推荐(0) 编辑
摘要: gpio && pinctrl 阅读全文
posted @ 2023-10-10 14:45 _xingxing 阅读(6) 评论(0) 推荐(0) 编辑
摘要: linux mac 阅读全文
posted @ 2023-10-10 14:44 _xingxing 阅读(3) 评论(0) 推荐(0) 编辑
摘要: dma 阅读全文
posted @ 2023-10-10 14:44 _xingxing 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 前言 先知整个流程:如何创建一个workqueue、一个work queue入一个workqueue之后,work对应的func怎么被执行; 再扣细节:__alloc_workqueue_key中WQ_UNBOUND flag有什么作用?max_active的作用是什么?worker的动态管理? 数 阅读全文
posted @ 2023-10-10 14:42 _xingxing 阅读(7) 评论(0) 推荐(0) 编辑