Linux设备驱动开发: what does it look like in 2012?

标签 linux ubuntu linux-device-driver

<分区>

我正在运行 Ubuntu 12.04,并且我假设我在运行 ls/dev 时看到的所有列出的项目实际上是所有设备/硬件组件的设备驱动程序连接到(或能够连接到)我的机器。它是否正确?如果没有,Linux 将所有设备驱动程序存储在哪里?

驱动程序是用什么写的,C? C++?汇编程序?设备驱动程序开发人员使用哪些现代 IDE/技术栈?

最佳答案

不,你错了。 /dev 是一个充满特殊设备文件的文件夹,代表设备驱动程序。因此,当我对 /dev/sda 执行某些操作时,我不是在处理 SATA 驱动程序的文件,而是在处理恰好加载的任何 SATA 驱动程序的接口(interface)。设备文件是驱动程序将其设备公开给用户空间的方式(以及调用驱动程序的系统调用)。

通常驱动程序存储在/lib/modules

驱动程序是用 C 编写的,除非您想增加三倍的工作量并用汇编编写。出于技术和政治原因,整个 Linux 内核中没有一行 C++(Linus Torvalds 讨厌看到它)。

开发环境?我怀疑任何内核开发人员都使用 IDE。他们中的大多数只使用 Vim 或 EMACS。然后 git 提交到内核源代码,GDB/KDB 进行调试。以及任何其他需要的命令行工具(例如 diff)。

关于Linux设备驱动开发: what does it look like in 2012?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780213/

相关文章:

linux - 我可以在 Linux、Mac、Windows 上使用哪个 SVN subversion?

linux - awk 要求合并两个文件

c - 内核网络驱动程序中 netdev_alloc 和 netdev_priv 的问题

linux - 想要更改 TCP 关闭超时

linux - 如何从 Ubuntu 中删除 Xen?

android - 如何从命令行打开 Ubuntu Linux 上的 AVD 管理器?

node.js - 我无法让 Electron 在 Electron 中运行以在 WSL2 Ubuntu 20.04 中运行

linux - Git pull 权限被拒绝 linux?

linux-device-driver - 在 Linux 中编写 USB 设备驱动程序

c - 在驱动程序代码中打印指针时 %llx 和 %p 之间的区别