首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于linux新手嵌入式linux设备驱动程序的几个问题

关于linux新手嵌入式linux设备驱动程序的几个问题
EN

Stack Overflow用户
提问于 2011-10-04 13:13:55
回答 1查看 1.2K关注 1票数 3

我最近一直在研究linux驱动程序,正如我读到的那些文章所说的,设备驱动模块可能会根据内核的需求自动加载,因此我想知道内核是如何为特定设备(声卡、I2C/spi设备等)确定加载哪个模块的,我也无法完全想象内核是如何在启动时检测每个硬件设备的。

更喜欢与嵌入式linux相关的答案,也欢迎PC linux!

第三季度

EN

回答 1

Stack Overflow用户

发布于 2011-10-04 13:45:41

我认为您混合了两种不同的东西,即硬件检测和按需加载模块。

在某些情况下,内核可以解释地执行模块请求。然而,在大多数情况下,内核本身并不做任何“按需加载”。

但是等等,你一定弄错了,如果我插上我闪亮的新摄像头,这个模块不是自动加载的吗?

是的,但不是靠内核。内核所做的就是用所谓的“热插拔事件”或"uevent“作为参数来调用userspace程序。在Linux上,这个用户空间程序通常是udev,但是在嵌入式系统上,您可以使用例如mdev。您可以找到更详细的解释-- herehere

关于您问题的第二部分,内核只在硬件可发现的情况下才进行硬件发现。可发现硬件的例子是USB和PCI。不可发现的哈雷总线的例子是SPI或I2C。

在后一种情况下,给定总线上某个特定设备的存在要么直接在内核中编码,要么由booloader给他。谷歌的“设备树”就是后者的一个例子。

总而言之:硬件检测由内核完成,模块加载由用户空间完成,并由内核提供信息。

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

https://stackoverflow.com/questions/7648469

复制
相关文章

相似问题

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