- 博客(77)
- 资源 (19)
- 收藏
- 关注
原创 Chapter 9 USB Device Framework 摘要1
usb2.0 规范usb 设备有可视和非可视状态,非可视状态只对设备可见,设备的可视状态如下开始未连接到usb总线时设备没有任何状态。连接到usb 总线,首先是Attached 状态,然后经过一定时间的稳定是powered 上电状态,上电之后总线给设备复位,进入Default默认状态,然后主机给设备一个总线上可用地址,进入Address可寻址状态,通过这个设备地址,主机配置设备,进入最终的Configured 已配置状态。
2025-12-23 15:37:49
389
原创 MIPI DPHY 和CSI 协议各个版本之间的区别和联系
版本发布时间虚拟通道数物理层支持(HS 速率)总带宽(典型配置)核心升级亮点典型应用分辨率 / 场景1.0020051基础框架,单摄低分辨率1.0120061同 1.004 Gbps兼容性修复同 1.001.1200744 Gbps多摄基础,12/14 位 RAW 支持200 万~500 万像素1.220084720p 支持,YUV420 优化720p@30fps1.3201246 Gbps1080p 支持,多摄切换优化2.02014。
2025-11-11 17:16:30
907
原创 使用pwm的/sys 属性来模拟调试信号的操作
每个 PWM 控制器包含多个通道(通常 0~3),需先 “导出” 通道才能操作# 导出成功后,会生成pwm0节点ls /sys/class/pwm/pwmchip0/pwm0/ # 显示可配置的属性文件period:PWM 周期(单位:ns,必须大于占空比);duty_cycle:高电平持续时间(单位:ns,必须小于周期);polarity:极性(normal默认高电平有效,inversed低电平有效);enable:启用 / 禁用(1 = 启用,0 = 禁用)。
2025-11-10 18:51:24
380
原创 使用gpio 的/sys 属性来模拟调试信号的操作
现实中,程序很可能来不及写,或者根本不想写,想通过操作设备节点的方式来简单的配置信号做一些实验,看看信号的变化效果,可以选择/sys 设备树中gpio 属性来简单的操作比如,需要将红框内的gpio 信号拉高,通过dts文件可以知道该pin是gpio0 这个控制模块内,pin 的编号是RK_PA5, 激活状态是高。源码中检索到该pin 编号是5,也就是gpio0 的pin5然后。
2025-11-10 18:04:52
256
原创 v4l2 subdev 设备节点和属性创建过程
所以v4l2 subdev 设备节点和属性是在被hold的v4l2_dev 的匹配异步操作过程中被创建的,v4l2_device_register_subdev是先期在内存中建立v4l2_subdev具体描述,和 v4l2_dev的从属关系,然后在后级的具体的 v4l2_dev的bound 回调中批量的来创建所有链路上的v4l2_subdev相应的各类文件系统(/dev,/sys)上的设备节点和属性。
2025-11-06 18:09:59
713
原创 瑞芯微平台 摄像头模组 运行时上下电管理
link_notify 回调 被media 框架建林link 的时候调用,由 MEDIA_DEV_NOTIFY_PRE_LINK_CH和MEDIA_DEV_NOTIFY_POST_LINK_CH 这两个阶段分别调用到。rkisp1_pipeline_pm_use 是设备驱动probe 时刻挂载的pm_use 回调,rkisp1_pipeline_link_notify是link_notify 回调。在dev.c 中,实现了对设备所在的所有 subdev的遍历,依次设置power,如下。
2025-11-05 15:53:44
211
原创 Linux 运行时电源管理(PM Runtime)API 使用说明
本文介绍了Linux PM Runtime机制中关键电源管理函数的用法,包括pm_runtime_get_sync/put用于设备使用计数管理,pm_runtime_set_active/enable等用于状态初始化和使能控制,以及pm_runtime_disable/status_suspended等用于状态查询和禁用。这些函数共同实现对设备电源状态的跟踪、自动休眠唤醒控制,通过合理组合使用可在设备活跃时高效运行、空闲时自动进入低功耗,是Linux驱动中实现设备电源管理的重要接口。
2025-10-30 17:28:16
785
原创 MIPI DPHY 高速传输时序
必须注意 T_LPX, T_PREPARE, T_HS_ZERO 和T_HSTRAL,T_HS_EXIT这类 这类时序上参数,在驱动软件上一般是必须T_SETTLE,T_HS_SKIP, 保证收发双方在LP和HS 正确信号解析。在MIPI_D-PHY_specification_v1-2.pdf 的 6 Global Operation 这个章节,有详细介绍DPHY物理层建立高速通讯的整个时序过程。每条lane 默认都在11 这个stop的初始状态,从这个状态可以发起高速传输,或者结束返回。
2025-09-26 14:52:03
385
原创 高通平台sensor驱动中的配置参数
本文解析了高通平台sensor驱动中关键配置参数的含义及设置方法,包括:lineLengthPixelClock(HTS)、frameLengthLines(VTS)定义图像总尺寸;minHorizontal/VerticalBlanking的最小消隐期需参考传感器手册和硬件限制;outputPixelClock计算公式涉及MIPI速率和位深;horizontal/verticalBinning控制像素合并;settleTimeNs用于PHY同步时间计算;is3Phase区分D-PHY/C-PHY接口类型。
2025-09-25 17:03:39
876
1
原创 Ubuntu下 uvc
本文介绍了在Ubuntu 20.04环境下使用luvcview工具进行UVC摄像头抓图的安装过程。首先从GitHub下载luvcview源码并编译,发现缺少SDL依赖后,详细记录了SDL2的安装步骤,包括解决libxext-dev依赖问题。最后完成编译并给出了使用命令示例。整个流程涵盖了从源码获取到依赖解决的具体操作步骤,为在Linux系统下使用UVC摄像头提供了简明指南。
2025-08-26 10:25:45
275
原创 Media Controller API 介绍
本文介绍了Linux内核中的Media Controller API,该API在V4L2基础上提供了更灵活的pipeline配置方式。通过将硬件模块化配置从内核空间转移到用户空间,简化了传统V4L2驱动代码或dts内核配置方式,使硬件功能链路的灵活配置在用户空间即可完成。文章作者基于kernel.org文档对Media Controller API框架进行了翻译,包括介绍、设备模型、媒体图元素表示类型和标志、请求API等核心章节,旨在帮助开发者理解该API的整体架构。相关翻译内容已发布在优快云博客上。
2025-08-16 13:35:39
174
原创 Media Controller API 4 Request API
摘要: Linux内核的Request API为V4L2设计,支持现代设备(如无状态编解码器、复杂相机管道)实现高效帧级协作。该API允许将媒体管道配置与特定缓冲区绑定,用户可提前提交多组差异化请求,避免传统逐帧刷新配置的低效问题。通过媒体控制器设备节点分配请求文件描述符(MEDIA_IOC_REQUEST_ALLOC),配置和缓冲区通过标准ioctl关联请求,最终通过MEDIA_REQUEST_IOC_QUEUE提交。注意:内存设备仅支持输出缓冲区的请求,且禁止混合使用直接队列与请求队列模式。控制参数不受
2025-08-14 22:59:16
875
原创 Media Controller API 3. Types and flags used to represent the media graph elements翻译
它在接收端从一种类型的输入视频总线(HDMI、eDP、MIPI CSI-2等)接收视频帧,并在输出端将其输出到另一种类型的输出视频总线(eDP、MIPI CSI-2、并行等)。模拟视频解码器,视频解码器的基本功能是接受来自各种来源的模拟视频,如广播、DVD 播放器、摄像机和录像机,格式为 NTSC、PAL、SECAM 或 HD,将流分离为其组成部分,亮度和色度,并以某种数字视频标准输出,带有适当的定时信号。能够进行视频合成的实体必须至少有两个接收端和一个输出端,并将输入视频帧合成到输出视频帧上。
2025-05-18 21:13:50
844
原创 Media Controller API 2. Media device model 翻译
它可以对应各种逻辑块,如物理硬件设备(例如 CMOS 传感器)、逻辑硬件设备(SoC 图像处理管道中的构建块)、DMA 通道或物理连接器。实体产生的数据(不仅限于视频)从实体的输出流向一个或多个实体的输入。例如,这可以表示特定的相机传感器和镜头控制器形成一个物理模块,意味着这个镜头控制器驱动该相机传感器的镜头。是两个 Pad 之间的单向点对点连接,可以在同一实体上,也可以在不同实体上。是 Linux 内核的用户空间 API 接口的图表示,像设备节点或控制图中一个或多个实体的 sysfs 文件。
2025-05-15 12:25:56
947
原创 Media Controller API 1. Introduction 翻译
独立的功能,即使被实现在同样的硬件中,能被建模成独立的设备。这些设备之间的关系(当被用作一个webcam,最终用户不能手动的选用相关的USB麦克风),不会直接通过驱动对应用程序显示可用,但是可以从sysfs检索。随着新硬件暴露的参数越来越多,驱动程序需要根据有限的信息猜测应用程序真正需要什么,从而实现在用户空间中属于策略的内容。随着越来越多的SoC设备被引入,当前的方法无法被扩展。设备拓扑争辩的越来越复杂,且不能经常被表示成一个树形结构。硬件模块在不通的功能中被共享,导致看似无关的设备之间产生了依赖关系。
2025-05-15 12:15:07
323
原创 devmem源码解读
因为开发视频流驱动程序,发现在驱动里面加入读写硬件模块的寄存器,然后通过log输出,或者通过proc和sysfs的文件节点输出,如果链路一长,每个模块都要增加这样的输出,工作量还是比较大的,而且随时都要修改。在网上发现linux上有基于mmap的 devmem这样的工具文章的介绍(如下),使用这样的方式来访问,不用增加如何代码实现直接操作寄存器,还是比较方便的。实际源码在output/build/busybox-xxxx/miscutils/devmem.c,列举如下。
2024-11-29 15:05:20
1156
原创 V4L2 sub-devices 翻译
如果sub-device实现了下游pad,subdev驱动可以设置v4l2_subdev_pad_ops的link_validate字段,来提供自身link的validation功能。如果link_validate op没有设置,默认的v4l2_subdev_link_validate_default将被使用。如果需要集成media框架,你必须通过media_entity_pads_init初始化嵌入到v4l2_subdev结构中的 media_entity`结构,如果这个entity 有pad。
2024-11-07 19:07:03
692
原创 HI3516DV500 相机部分架构初探
MIPI Rx 支持 MIPI D-PHY、LVDS(Low-Voltage Differential Signal)、HiSPi(HighSpeed Serial Pixel Interface)等串行视频信号输入,串行视频接口可以提供更高的传。⚫ 单路最多支持 4-Lane LVDS/ sub-LVDS /HiSPi 接口,最大支持 1.5Gbps/Lane。该芯片最高支持 2 路 sensor。输入,支持最高 5M@30fps 的 ISP 图像处理能力,支持 2F WDR、多级降噪、六轴防。
2024-10-13 10:30:59
2057
原创 展锐平台的手机camera 系统isptool 架构
展锐平台的isptool 主要用于支持展锐各代isp 芯片的各效果模块快速tuning和参数打包。具体需要:一、工具段能在线实时预览到调试sensor经过isp 处理后的图像,也就是各模块的参数在当下实时生效,通过工具能在PC 上在线观看到效果二、工具能进行拍照,生成过程中不同格式的图片,包括raw图,yuv图,jpeg图三种格式。其中jpeg 图中的exif 暂存了tuning效果模块的参数。
2024-09-23 11:24:10
1313
原创 展锐平台的手机camera 系统开发过程
展锐公司有自己的isp 图像处理引擎,从2012 年底就开始在智能手机上部署应用。最初的时候就几个人做一款isp的从hal 到kernel 驱动的完整软件系统,分工不是很明确,基本是谁擅长哪些就搞哪些,除了架构和编码实现之外,另外还要解决各种客户问题,验证芯片等等,工作量非常之大。后续随着分工的精细,部门的扩展,各种模块分层迭代和维护越来越明确和专业。
2024-09-19 12:49:13
1790
原创 展锐平台手机camera 软硬件架构
曾经在紫光展锐做过几年的camera驱动,经历过从2013 年最初的几人团队,每人到独当一面,负责很多的模块,到后面的逐步的精细化,设计部门按照内核驱动,hal驱动,tuning效果,3A,效果算法等展开,专注于某一层面的模块或者算法的反复迭代。虽然离开展锐已经数年,对其中软硬件开发过程中的映像还是比较深刻,对开发的规范执行和架构和feature实现的优化选择尤为感慨,这里做个对当时情景的分享回顾,让大家对手机里面的camera架构有个了解。以上是当时camera系统的软硬件大致架构。
2024-09-18 19:06:04
3100
原创 一款裸眼3d的双目视觉深度处理芯片
接上一篇博客 [一款人脸识别的芯片内部],继续分享下我接触到的双目立体视觉芯片 (https://blog.youkuaiyun.com/wuxiwang/article/details/141825257?
2024-09-04 14:43:06
1369
原创 车载系统bsp 开发的现状特点之自我认识
车载bsp 目前的主要是按照智能座舱的实际需求,将供应商提供的各种标准部件集成起来,最终呈现出各种OS 系统下特定的设备操作节点,方便各种解决方案的上层应用实现。这样实际的工作,一方面是跟踪关注供应商提供的部件和相应的系统接口运行,将对方的各种问题提前甄别并得到反馈修正,另一方面还要自查车机内部的链路各步,做出稳定高效的适配。这样不仅对技术实现上存在一定的要求,还要对各供应商提供的部件的性能稳定性等也需要做良好的测试和确认,不然相互之间叠加起来的问题排查就会非常的复杂,不容易区分识别。
2024-09-01 21:10:27
992
原创 USB 3.0、USB 3.1到底什么区别?彻底明白
因为要适应不同的设备种类,在USB Type-C出现前,光从接口形态上来区分,USB 2.0标准的接口就有USB Type-A,USB Type-B,miniUSB Type-B、microUSB Type-A以及microUSB Type-B五种(已经被淘汰的不计在内),而在USB 3.0时代还新出现了USB 3.0 Type-A、USB 3.0 Type-B和microUSB 3.0 Type-B。1、USB 3.0接口通常为蓝色,一定会有5个以上的触点,而USB 2.0接口的触点不会超过5个;
2024-08-13 10:10:47
3705
原创 usb 接插件和线
最近发现需要用到usb3.0 的调试线,用来调试OS 和驱动,特别将usb 这部分的插口和线的知识整体下。usb 线对应插口的编号。
2024-08-08 11:17:52
1094
转载 底层软件 | 为了学习设备树,我写了5w字笔记
由于一个SoC可能对应多个设备(一个SoC可以对应多个产品和电路板),这些.dts文件势必须包含许多共同的部分,Linux内核为了简化,**把SoC公用的部分或者多个设备共同的部分一般提炼为.dtsi,**类似于C语言的头文件。(我要解析的就是.dtsi文件)其他的设备对应的.dts就包括这个.dtsi。这个和我写bp那里有点相似的思维,果然include包含世界。
2024-07-19 15:52:46
285
原创 安卓自带camera hal3 实例README.md翻译
安卓自带camera hal3 实例README.md翻译最近,遇到一个这样的问题,临时了解下这个驱动实现架构和特点,翻译如下。
2024-07-16 15:40:08
1643
原创 安卓gdb 建立链接
adbshell gdbserver :1234 testdcam --sensor 0 --workmode 0 --args preview-size=1024x600,picture-size=640x480, --time 10adb forwardtcp:1234 tcp:1234 //设置adb的转发./prebuilts/gcc/linux-x86/arm
2024-07-03 20:50:49
445
1
原创 I2C bus,adaptor,client 在sysfs 的路径定位
表明client 实体对应的device节点在adapter的目录下,命名由 strscpy(client->name, info->type, sizeof(client->name));结合 .name = “i2c”, retval = bus_register(&i2c_bus_type);这表明命名是 “i2c”,通过bus_register注册到bus 总线目录下。
2024-07-03 12:01:34
405
原创 i2c 设备节点的访问和不同方式实现
最近碰到实际应用案例中有通过module_i2c_driver 注册实际i2c 总线驱动的,再通过struct i2c_driver的.id_table 成员指向的struct i2c_device_id 对象表格来创建i2c_client;还有通过 i2c_new_client_device 注册板上信息struct i2c_board_info 实例来创建i2c_client的。但是这类创建出来的设备再应用层使用的时候,出现通信数据不对的情形。为了更好的梳理这两类访问方法的过程,将源码实现做个具体
2024-07-02 10:40:34
1197
原创 车载系统的 加减串器应用示意
比如摄像头模块,一个完整的摄像头是由下面几个模块组成,前端是摄像头的sensor模块,通过MIPI CSI 的连线经过MIPI RX 这个controller,然后送入原始的图像信号到ISP 这个部件进行图像效果的处理,处理完毕的每帧图像然后经过MIPI TX 这个部件,最终送入到串行器,实现抗干扰距离更远的长距离传输。车载系统上使用加减串器来实现camera, lcd屏等 图像数据的远距离传输,将原先在短距离传输视频信号的mipi csi,dsi 等的TX,RX中间,插入加减串器,实现长距离的可靠传输。
2024-04-24 13:56:11
834
原创 车载摄像头 开发的现状和对比
自从去年被芯片企业裁员,然后加入吉利集团车企亿咖通之后,一直在从事车载摄像头驱动这方面的工作,在点亮了几款摄像头以后,深有感触,做一个目前工作的认识总结,也给行业从业者一个观察切入的视角。
2024-03-20 09:37:46
867
转载 MIPI协议之DPHY、CPHY区别 (转载)
CPHY接口等效电路图CPHY物理链路(A/B/C线)上传输的是不同的电平,通过A-B,B-C,C-A的电平运算,恢复出+x,-x,+y,-y,+z,-z六种不同的线态,通过前后线态的旋转方向,相位和极性恢复出编码符号,再通过连续7组符号解码出16bit的数据,整个过程见下图。DPHY是源同步系统,有专门的同步时钟通道,但是CPHY没有同步时钟,时钟是嵌入到数据中的。显然的,实现嵌入时钟的目的是为了增加带宽,肯定会涉及到编码,物理层的结构必然是完全不同,单从线路上看,CPHY是一个A/B/C三线系统。
2023-11-02 18:47:28
2964
原创 从杨志失误落草想到的
水浒传众多人物悲剧的背后,很多失败的因素值得探究。作为个人,最失败的典型莫过于杨志了。杨志有光辉耀眼的祖上,是三代将门之后,五侯杨令公之孙。按道理应该具备智勇双全,符合孙子兵法为将标准,“将者,智、信、仁、勇、严也。”。做事应该周全,谋事稳妥,治军宽猛。然而我们看到的是杨志两次大的人生失败,从没有看到自身有任何的变化和认识。一味埋怨外部原因,天不厚我,老天对我不公。第一次是太尉府派十制史去太湖运花石纲,只有他这一队人翻车,在黄河里翻船,其他九队人安然无恙。这可以被理解是运气不好,《水浒传》没有详细描述
2022-04-03 18:15:26
1052
转载 欢迎使用优快云-markdown编辑器
Trace32使用之基本语句和关键字首先介绍一下Trace32脚本概貌:**Trace32提供了强大的脚本控制功能,可以做到所有的GUI的工作,还包括GUI无法完成的工作。 正因为其脚本提供的功能过于强大,导致很多功能在Trace32软件上你找不到,这部分得用脚本来驱动使用。更多的trace32使用请参考http://www.jtag1000.com/ Trace32使用的脚本类似于pascal
2017-11-17 11:26:57
449
转载 任正非:不要在微信里消耗你的人生和青春
时间:2016年11月06日 05:35 减少无益的朋友圈,不要在微信里消耗了你的人生和青春。你们的青春是要变得更加美好,而不是无益的去消耗。我曾问身边的一个人有多少个朋友圈,他说“200个”,维护这200个朋友圈的时候,就在非战略机会点上消耗了战略竞争力量,进步就慢了。 这是任正非在2015年项目管理论坛上的讲话,标题为《将军是打出来的》。讲话全文如下: 一、将军是打出来的。
2017-09-30 15:11:45
836
2
转载 从展讯感悟中国IC企业瓶颈
2011-06-27 13:49:02 来源:《集成电路应用》 引言:市场运营和管理水平已经成为制约中国IC设计公司成长的瓶颈,更深层的原因则是CEO的定位及所倡导的企业文化。 作者:陈大同博士(展讯通信联合创始人、董事和前CTO&华山资本投资公司创始合伙人) 三年前也就是2007年末的IC设计分会年会上,大家讨论寒冬来了以后中国IC设计产业的出路问题。当时我讲了四点现象:一是在硅谷及世界
2017-09-30 15:02:38
696
原创 Android c/c++ 应用向linux 平台迁移运行
最简单的方案尝试1 将安卓的 c/c++ 应用及其依赖so编译出来, cp到 buildroot 生成的target 目录下的 /bin 和/lib 下2 将安卓的 linker 这个运行解释器cp 到target 目录下的 /binhttp://www.linuxidc.com/Linux/2014-03/97499.htmhttp://blog.c
2015-07-15 10:59:23
1481
1
转载 ION基本概念介绍和原理分析
转载前的话:ION将内核态形形色色的内存分配纳入统一的管理接口之中,更重要的设计意图是为内存在不同用户态进程之间传递和访问提供了支持。每个ion_buffer与一个struct file关联,其handle纳入进程file desc空间而不是/dev/ion设备内单独的handle空间,方便之处如下:每个buffer一个handle,便于更灵活地细粒度地控制每个buffer的使用周期;
2015-07-06 10:40:44
2139
linux 多国语言 unicode码表 和 扩展ascll 自动生成工具
2010-06-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅