首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何打开内置设备

如何打开内置设备
EN

Stack Overflow用户
提问于 2018-02-13 07:48:53
回答 1查看 71关注 0票数 0

我正在努力加快为嵌入式Linux编写设备驱动程序的速度,特别是为视频接口编写V4L2媒体控制器驱动程序。

我可以使用非内置驱动程序的典型V4L2模型来编写设备驱动程序,也就是由modprobe控制的模块。加载模块时,将调用此驱动程序的__init函数,然后在/dev目录中创建一个节点,显示为/dev/video0。然后,我可以编写用户端程序,该程序从打开/dev/video0开始,现在我可以执行我编写的所有驱动程序代码。我了解这个模型,因此我有一个很好的开发环境,在这里我可以修改驱动程序代码,重新加载.ko驱动程序,修改我的用户端测试代码,并基本上执行我所有的驱动程序功能。

但是,在使用媒体控制器和驱动程序的platform_device模型时,我仍然对内置驱动程序感到困惑。(它们没有特定的__init例程,也不是动态加载的)。我可以配置我的内核来构建我的驱动程序作为一个内置的基于媒体控制器的驱动程序。我的所有Kconfig文件都是正确的,所以我现在可以在内核构建中包含我的新驱动程序。我知道我的驱动程序是正确内置的,因为当我的内核引导时,我可以在/sys/bus/platform/drivers目录中看到我的驱动程序。此目录有3个只写节点,分别用于绑定、uevent和unbind。

这就是我的困惑:我如何从用户端代码打开这个内置设备驱动程序,以便我可以使用我的驱动程序界面?

由于驱动程序是基于媒体控制器的内置驱动程序,因此当内核启动时,不会在/dev中创建新的设备节点,或者至少,我不知道要打开什么设备,就像我为基于模块的驱动程序所做的那样。

我是否必须编写一些udev规则来使内核在/dev目录中创建设备节点,这样我才能使用用户端的open()?或者这个驱动程序是以不同的方式访问的?

谢谢,-Andres

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-13 17:33:20

如果你的驱动是基于媒体控制器框架的,应该有一个你已经实现的管道(refer),在你的驱动中引用media controller api。即使你的驱动是内置的,并且基于媒体控制器框架,它仍然应该创建/dev/video0。我认为没有创建video0节点的原因是缺少子开发驱动程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48757433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档