LWN:图像处理器领域的不快!

qemu(2) -- 定制开发板 向qemu源码中添加自定义开发板 阅读详情

关注了就能看到更多这么棒的文章哦~

The growing image-processor unpleasantness

By Jonathan Corbet
August 18, 2022
DeepL assisted translation
https://lwn.net/Articles/904776/

曾几何时,如果想购买一些硬件来运行 Linux,那么在选择硬件时必须小心翼翼。近几十年来,这种情况已经有了很大的改善,不支持的硬件已经成为个例,而不再是普遍现象。这些年来,尤其是英特尔的硬件更是支持得很好;该公司一直致力于确保其产品能够与 Linux 兼容。因此,在人们发现随 Alder Lake CPU 出货的 IPU6 图像处理器(image processor)缺乏对 Linux 的支持、而且不太可能很快得到支持的情况时,有点出乎意料。不过,我们在本文中关注的问题不仅仅是英特尔。

跟其他多数图像处理器一样,IPU6 的存在目标是接受来自相机传感器的数据流,并将其转化为有用的视频流。这些处理器可以承担很多任务,包括旋转、裁剪、缩放、色彩空间转换、白平衡校正、去噪、调焦等等。它们是非常复杂的设备;内核社区也就相应地创建了一些同样复杂的 API,包括 Video4Linux2(V4L2)和媒体控制器(media controller),从而让用户空间可以对这些硬件进行管理。只要设备有合适的驱动,内核就可以让用户空间正常使用相机设备,而用户空间只要小心使用,就可以获得这些功能而不需要知道硬件的细节。

正如 Paul Menzel 最近在 linux-kernel 邮件列表中指出的,IPU6 没有这样的驱动,所以 mainline Linux 内核不能支持它。因此,内核就无法支持目前一些笔记本电脑上在使用的 MIPI 摄像头,比如 Thinkpad X1 Carbon 和 Dell XPS 13 的某些版本,这些产品在 Linux 用户中比较流行。而使用其他接口的摄像头(如 USB UVC)一般都可以支持。为了解决这个问题,戴尔在其为 XPS 13 提供的 Ubuntu 版本中提供了一个闭源的用户空间驱动程序。联想目前则根本没有销售预装 Linux 的这些笔记本。

Laurent Pinchart 提供了有关这一情况的更多细节。Ubuntu 上的 IPU6 支持是基于一个提供 V4L2 接口的内核驱动的,但它需要与一个专有的用户空间驱动交互才能实际完成工作。正如 Ubuntu 的戴尔页面所指出的,这种解决方案是有额外成本的:"CPU 性能会受到为 v4l2 loopback device 进行 buffer copying 的 daemon 守护程序的影响",而且相机只能提供 720p 的分辨率。Pinchart 继续说,IPU6 不会是目前唯一有问题的设备:

鉴于行业所采取的发展方向,这种情况在未来会越来越普遍。除了在开源相机支持方面处于领先地位的 Raspberry Pi 之外,今天没有任何一家 SoC 供应商愿意开放其成像算法(imaging algorithms)。

要改善这种状况,需要在几个方面下功夫。在用户空间方面,Pinchart 指出,创建 libcamera 项目的明确目的就是支持像 IPU6 这样的复杂设备;这个项目在 2019 年曾在 LWN 介绍过。此外,libcamera 设计时就确保在最大限度地使用自由软件的同时,也允许插入专有的图像处理代码。目前,它支持早期的 IPU3 处理器,无论是否使用专有插件都可以工作,但是如果没有用专有插件的话,可能无法使用全部所有功能。

应该可以给 IPU6 提供类似的支持,但这将需要相当多的工作。它还需要一个合适的 IPU6 的内核驱动,这会是一个问题。显然,这个设备的复杂性使得 V4L2 的 API 无法支持它,所以需要一个新的 API。据 Sergey Senozhatsky 说,有计划将其合并入内核,然后添加一个实现该 API 的 IPU6 驱动程序。Pinchart 回应说,合入这个 patch 不会是很快的事情,因为所提出的 API 在内核社区中并不被看好。

V4L2 API 需要经过多年的广泛开发和演变才能达到目前的水平;它不会在一夜之间被取代。如果提出来的替代方案是完全独立开发的、从未经过任何形式的公开讨论,那就更加难以取代原有方案了,这次的情况就是如此。Senozhatsky 贴出了一个包含了 CAM 实现的 repository 的路径,但该代码只是模糊有用。没有文档,也没有实际实现这个 API 的驱动程序。它是高度抽象的;正如 Sakari Ailus 所说。"如果没有人告诉我,我都猜不到这是一个摄像头的 API"。

正如 Ailus 所描述的那样,创建一个新的相机 API 将是 "一项重大而有风险的工作";它会需要一个长期的对话交流,而且不清楚 CAM 是否已经在推进了。据 Senozhatsky 说,CAM 代码在 "几个月内 "不会被提交到 upstream。他后来建议,可以加快这个计划,但事实是,社区甚至还没有开始设计适合下一代图像处理器的 API 的工作。

因此,购买 Linux 系统的人将不得不在一段时间内要更加小心;许多本来很好的系统在没有专有相机驱动程序的情况下将无法提供完整的功能,因此,许多发行版都会缺乏对它的支持。要使这种硬件完全正常工作,就需要采用目前的解决方法,损失一部分 CPU 性能。解决所有这些问题可能需要数年时间,即便如此,也不清楚是否会有可行的免费软件的解决方案。这对英特尔、对 Linux、对整个行业来说都是一个重大的倒退。

后记:KCAM 的开发者要求我们补充以下声明,因为他们认为本文对该项目的描述并不完全公平:

自 2018 年以来,谷歌一直在与社区成员和硬件供应商紧密合作。包括组织了两次大型研讨会(在 2018 年和 2020 年)。

开发是公开进行的,并在公共论坛上进行了介绍,欢迎尽可能多的感兴趣的人。

我们期待着完成初步方案的开发,并在邮件列表中发布,以了解社区的意见。ChromeOS 在内核工作方面坚持采用 "upstream first",并将继续朝着这个方向努力。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

format,png

训练救星!EMA多尺度注意力让YOLOv11轻松攻克自定义数据集不涨点难题 在目标检测模型训练中,自定义数据集不涨点是阻碍算法落地的核心痛点之一。传统训练策略在数据分布特殊、样本量有限的场景下极易陷入收敛停滞,而 EMA(指数移动平均)结合多尺度注意力的方案,在自定义数据集上实现mAP 提升 6.5%,同时让训练曲线从“平缓停滞”转为“持续攀升”,彻底解决创新点在自有数据上的性能瓶颈。本教程将带你从原理到实践,通过 EMA 多尺度注意力为 YOLOv11 注入训练稳定性,让你的自定义数据集模型训练实现质的飞跃。EMA 衰减率:小样本数据集建议将decay。 阅读详情

相关推荐

删除win10电脑U盘使用记录

手工删除:和查看的方法类似,分三步,缺一不可,顺序也不能反! 第一步 设置环境变量,变量名为“devmgr_show_nonpresent_devices”,值为“1”。 第二步 打开设备管理器,勾上“查看”菜单中的“显示隐藏设备”。如果之前已经打开设备管理器,则要关了,重新打开。 第三步 清除“磁盘驱动器”、“存储卷”、“通用串行总线控制器”3个栏目下所有的灰色的图标,注意是所有!右键点击灰色图标,然后选择“卸载”。 成功 :结果USBSTOR 没有了 ...

qq_40544338的博客 2万+

IPU6 驱动程序安装与配置指南

IPU6 驱动程序安装与配置指南 1. 项目基础介绍 本项目是英特尔公司开源的IPU6驱动程序项目,旨在支持MIPI摄像头通过Intel Tiger Lake、Alder Lake、Raptor Lake和Meteor Lake平台上的IPU6。该项目的目的是为IPU6提供内核驱动程序,以及支持多种摄像头的驱动程序。 主要编程语言:C 2. 项目使用的关键技术和框架 内核驱动程序:用于IPU6和...

gitblog_01004的博客 1051

macOS Jdk1.8安装(目前主流版本的jdk)

添加环境环境变量,类似于windows的高级设置中path配置的环境变量。查看 JAVA_HOME 目录。查看 JDK 版本信息。一直下一步安装就好了。在终端的根目录下运行。

m0_50207524的博客 9353

推荐开源宝藏:archlinux-ipu6-webcam —— 解锁英特尔IPU6摄像头在ArchLinux下的潜力

推荐开源宝藏:archlinux-ipu6-webcam —— 解锁英特尔IPU6摄像头在ArchLinux下的潜力 项目介绍 在这个开源项目中,archlinux-ipu6-webcam 站在技术的前沿,专为解决Intel IPU6驱动程序安装难题而生,特别适用于搭载这一新一代图像处理单元的笔记本电脑用户。随着Intel计划将IPU6驱动纳入主线Linux内核6.10版本,此项目虽未来可能不再必...

gitblog_00072的博客 689

Chipyard------介绍与环境搭建

Chipyard是一个开源的、可扩展的、集成化的芯片设计平台,旨在帮助芯片设计人员快速、高效地开发自己的定制芯片。由伯克利大学架构研究小组开发,它基于Chisel语言和Scala编程语言,提供了一整套硬件设计工具和流程,包括RTL设计、验证、物理布局、仿真等,以及支持多种芯片体系结构的库和模块。

qq_38798111的博客 9479

Win11如何更改用户文件夹名(完整流程- 已验证可行)

把C盘所有文件备份,如果不想备份,则选择创建一个C盘的系统还原点(能在后续把C盘玩崩之后恢复原状)

Y_Aryan的博客 5万+

LWN: 运行时的检查功能!

关注了就能看到更多这么棒的文章哦~The runtime verification subsystemBy Jonathan CorbetJune 7, 2021DeepL assiste...

Linux News搬运工 565

【AI Infra】【RLHF框架】VeRL中WorkerGroup与Ray资源调度的协同机制剖析

本文深入剖析了VeRL框架中WorkerGroup与Ray资源调度的协同机制。通过解析Ray Placement Group的资源抽象和VeRL的RayResourcePool封装,详细阐述了WorkerGroup如何与底层资源精确绑定,并实现RLHF训练中异构、多阶段任务的灵活资源分配与动态调整,为大规模分布式强化学习训练提供了高效解决方案。

weixin_29204205的博客 389

LWN: 内核5.4版本合并窗口——第一部分

点击上方蓝色“Linux News搬运工”关注我们~5.4 Merge window, part 1ByJonathan Corbet截止2019年9月23日,已经有9...

Linux News搬运工 572

【PG高可用】一 PostgreSQL高可用方案repmgr部署(非常详细)

repmgr安装部署

DBA之路的博客 7054

DBT关键切片重建算法

DBT通过有限角度(通常15°~50°)扫描,获取一系列低剂量投影图,重建出三维断层图像。传统FBP在稀疏角度下会产生严重的“伪影拖尾”和层间干扰。临床诊断中,放射科医生往往只关注几层关键切片(即病灶所在层),其余层仅作参考。

AI的内部世界的博客 89

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 225

支付宝h5参数如何实现跳转?(包含相关Demo代码)

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 3246

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 67

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 333

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 123

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 196

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 365

Decorator

TaskDecorator 是异步场景下"跨线程传递上下文"的标准方案,主要用于传递 MDC、用户信息、数据源路由等上下文数据,核心价值是让异步任务的日志链路不中断、业务上下文不丢失。TaskDecorator 是 Spring 提供的一个钩子接口,用于在异步任务执行前对 Runnable 进行包装,常用于跨线程传递上下文。如果你在项目中遇到具体的异步上下文传递问题,可以把代码贴出来,我帮你给出最合适的 Decorator 方案 👍。✅ 核心能力:在线程切换时,把"父线程的上下文"搬到"子线程"

wlwork66的博客 105

JDK 下载安装:装完 Java 提示「不是内部或外部命令」?环境变量没配

JDK 是写 Java 程序必须装的东西。它包含运行 Java 的虚拟机(JRE)和编译 Java 的编译器(javac)——装了它,能跑、.java文件能编译成可执行程序。免费,学习和小规模生产都不花钱。

科小怪的博客 629

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 377

java框架大全

java框架大全

qq_39326137的博客 183

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 356

SecureRandom做随机源,这个Java随机字符串工具类有3个方法

本文分享一款JDK17环境下的Java随机字符串工具类,内置3个开箱即用的方法,全部采用SecureRandom加密安全随机源,不存在弱随机、可预测、取模偏差等问题。工具类支持默认62字符集随机串、纯数字随机串、自定义字符集随机串三种生成模式,支持Unicode码点级别的字符集处理,兼容Emoji等增补字符,边界处理严格,异常信息明确,适合验证码、邀请码、盐值、随机口令、短链码等场景,源码可直接复制使用。

Java后端 | AI智能体应用实战派 | 电脑技能行家 298

Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

【代码】Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

m0_64476639的博客 326

Agent 状态栏在上下文中的具体位置

Agent状态栏以user角色消息形式追加至上下文末尾,而非修改system消息,避免破坏KVCache。此举仅为API技术实现,内容由框架自动生成,非真实用户输入,通过<agent_status>标签标识,确保模型获取最新状态且不影响缓存。该设计遵循“动态信息追加、静态信息固定”原则,实现高效、低延迟的状态传递。

lj1109053360的专栏 72
上一篇: LWN: 6.0 合并周期,第二部分!
下一篇: LWN:ELF hash table的ABI!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值