Git   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何构build和部署Linux驱动程序?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用Ubuntu的,但问题是一般的Linux。

我通过编译我的linux内核来安装一个模块/驱动程序,并安装新的编译内核。 它工作正常。

为了使这个驱动程序在另一台机器上工作而不需要安装新内核,我将.ko文件复制到/lib/modules/<version>/...下的新机器上,然后运行sudo depmod -a 。 然后运行sudo modprobe <drivername> 。 该模块可以加载没有问题。 但是该设备在这个.ko模块中运行不正常。

这两台机器不同于硬件,但它们与内核版本和ubuntu发行版本相同。 通常情况下,复制.ko文件应该适用于相同的linux版本和相同的内核。

为什么我们需要在ARM Linux cpu_idle中的WFI之前禁用中断

识别unix域套接字连接的另一端

Linux内核编程:“无法处理内核NULL指针解除引用”

如何从外部模块导出符号?

内核模式版本的Findresource

有关驱动程序的更多信息。 这是一个隐藏的笔平板电脑驱动程序。 所有补丁文件

一个.c文件在drivers/hid/

在drivers/hid/Makefile添加一行

在drivers/hid/usbhid/Kconfig添加几行

添加几行到drivers/hid/hid-ids.h

{0,0}前添加几行到drivers/hid/usbhid/hid-quirks.c的hid_blacklist结构中

就这样。

我甚至试图复制整个drivers/hid/目录包括从第一台机器的所有.ko文件到第二个。 但没有运气。 可以在第二台机器中识别笔写板,我可以用笔做鼠标左键单击事件,但笔不能移动光标。

希望我提供了足够的细节。 我的目标是只将模块安装到相同的linux发行版(内核),无需重新安装内核。 我不知道如何实现,或者如果可能的话。

非常感谢。

PS:

第一台机器的dmesg输出http : //paste.ubuntu.com/6419301/

第二台机器的dmesg输出http : //paste.ubuntu.com/6419302/

在第一台机器上,在插入平板电脑前,lsmod不显示模块。 插入后,模块可以自动加载。 我可以看到lsmod显示模块。

在第二台机器中,插入设备不能自动加载模块。 我必须手动执行sudo modprobe <module> 。

由于我将不得不将模块安装到我公司的许多机器上,所以安装模块更容易,无需重新安装内核。 我试图安装在第一台机器内置的第二台机器的内核.deb包,它在第二台机器上工作正常。 但是我觉得很难将内核重新安装到很多机器上。 谢谢。

Windows内核是否具有读写的fork()指令?

inode数据结构中的数据指针

如何在Linux上通过inode访问文件

安多林冠层中的多粒核

模块化内核与微内核/单核内核

看来你建的内核不是1:1的比赛。 另外,通常不需要编译新的内核。

处理树外驱动程序部署的最简单方法是使用DKMS 。

你需要提供的只是一个dkms.conf文件,它指定了软件包名称,版本,驱动程序名称和目标(在/lib/modules/{kernel} )。

在下面的例子中,大括号内的东西需要用真实的东西来替换,例如,如果版本是1.0.0,那么明显的是{version}和1.0.0 。

示例dkms.conf :

PACKAGE_NAME="{mydriver}" PACKAGE_VERSION="{version}" BUILT_MODULE_NAME[0]="{mydriver}" BUILT_MODULE_LOCATION[0]="/{mycompany?}" AUTOINSTALL="yes"

然后你只需要把源代码安装到/usr/src/{mydriver}-{version} ,然后运行dkms :

dkms add -m {mydriver} -v {version} dkms build -m {mydriver} -v {version} dkms install -m {mydriver} -v {version}

您应该看看其他人在这方面做了什么,可以应用于测试和发布流程的自动化程度非常高。 Bluecherry的solo6x10 out-of-tree版本提供了一些有用的make目标(披露:我是谁写的那个)。

另外,您一定要构建和分发软件包,您可以使用solo6x10/debian作为模板,并且可以在Debian wiki中阅读有关软件仓库 。

您可以将模块添加到/ etc / modules,以便在启动时加载。

大佬总结

以上是大佬教程为你收集整理的如何构build和部署Linux驱动程序?全部内容,希望文章能够帮你解决如何构build和部署Linux驱动程序?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: