首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核模块驱动加载与dmesg调试

因为近期用到了Linux内核的相关知识,下面随笔将给出内核模块的编写记录,供大家参考。...1、运行环境   Ubuntu 版本:20.04   Linux内核版本:5.4.0-42-generic   gcc版本:gcc version 9.3.0   驱动和一般应用程序的执行方式很大不同...2、内核模块模型说明 (1)驱动和一般应用程序的执行方式很大不同   一般应用由main函数开始执行,流程基本由程序自身控制   驱动程序没有main函数,由回调方式驱动运行 (2)回调方式:   先向内核注册函数...  设备控制函数,动态注册;   应用调用ioctl函数操作设备时,会触发该函数; (8)DriverMMap   设备内存映射函数,动态注册;   应用调用mmap函数时,会触发该函数; 下面给出驱动模块编写函数...20 21 endif 9、运行测试   首先运行MakeFile文件,通过终端输入make命令即可,生成PrintModule.ko和PrintModule.mod: image.png    之后加载内核驱动

6.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

驱动模块(ko)文件加载失败分析

在实际工作中,通常出现SDk编译出来的驱动模块,在最小系统中加载失败,即insmod xxx.ko 失败,“disagree param with the version"等之类的提示...(因为SDK编译出来就是一个驱动ko,以及在驱动的基础上做了一个适配库.so),所以SDK本质上就是一个内核模块驱动+适配层代码。自然在编译时是需要依赖内核的。...纳闷了,内核版本一样,工具链也是一套的,编译出来的ko却加载失败。 2.通过分析编译最小系统的内核和编译SDK的内核,发现两个内核虽然版本一样,但两个内核配置不一样。...问题有眉目了,可能是最小系统的内核做了裁剪,而SDK编译的内核没有同步更新,造成SDk编译的驱动在最小系统中找不到对应的依赖。

2.6K30

打造前端 Deepin Linux 工作环境——开机自动加载 ~.bash_profile 文件

打造前端 Deepin Linux 工作环境——开机自动加载 ~/.bash_profile 文件 这个事情非常搞笑,当我把系统根据我的配置搞好之后,我就关机重启了一下。...这说明我们配置的 ~/.bash_profile 文件没有加载,只需要重新执行一下 . ~/.bash_profile 就可以了。但是如果每次启动都要这样运行一次,我感觉还是蛮扯淡的。...我的第一反应是,这应该是 deepin linux 的一个 BUG。本着没有能力开发也要大力配合开发的态度,我去官方提交了一个关于这个问题的用户反馈。 然后我想,肯定不会是我一个人遇到这个问题。...我用的 mac os 也好 arch linux 都是这样设置,而从来没有人给我说过这样不行,到你这,怎么这么多理由呢? 另外,.bashrc 文件是每次打开一个新的终端窗口的时候执行的。

1.3K60

linux内核模块加载命令

三,、硬件驱动在系统中的目录; 四、自己编译驱动的办法; 一,内核相关的命令 1、lsmod 列出已经加载的内核模块; lsmod 是列出目前系统中已加载模块的名称及大小等;另外我们还可以查看 /proc...,有几个参数我们注意一下就行了,目前的的Linux 发行版所用的内核是2.6x版本,是自动解决依赖关系,所以这个命令知道就行了;模块之前也有依赖关系,比如我们想驱动USB 移动硬盘,目前有两种驱动,一种是...,不能把文件名的后缀省略; 二,与内核模块加载相关的配置文件; 1、模块的配置文件 modules.conf 或 modprobe.conf 内核模块开机自动挂载模块一般是位于一个配置文件,一般的Linux...比如Fedora Core 4.0 内核模块开机自动加载文件是 /etc/modprobe.conf ;在这个文件中,一般是写入模块加载命令或模块的别名的定义等;比如我们在modules.conf 中可能会发行类似的一行...modules.conf 中加入什么内容; 如果您有些模块不能开机加载,您想让一些模块加机自动加载,就可以把modprobe 模块 直接写入配置文件; 2、内核模块其它配置文件 内核模块的其它配置文件还是需要了解的

4.9K30

linux磁盘挂载及设置开机自动挂载

在默认拥有的云服务器是没有额外的数据盘的,默认Linux只有系统盘,一般的网站也足够使用,如果额外购买的数据盘安装系统之后根据不同的面板、系统的路径问题可能不会自动加载到指定的数据盘目录,需要我们手工进行加载数据盘...然后我们格式化分区 mkfs.ext4 /dev/vdb1然后是最重要的一步,挂载分区 mount /dev/vdb1 /www(要挂载的目录)最后设置开机自动挂载: echo '/dev/vdb1 /...linux的磁盘扩容及删除分区重新挂载(不会清除数据)删除分区fdisk /dev/vdbfdisk (/dev/vdb这里写你的盘符)输入 d然后 wq重新分区fdisk /dev/vdb依次输入 n...e2fsck -f /dev/vdb1 # 检查文件系统resize2fs /dev/vdb1 # 变更文件系统大小然后是最重要的一步,挂载分区 mount /dev/vdb1 /www(要挂载的目录)最后设置开机自动挂载

15.4K30

Linux系统开机自动挂载文件fstab介绍

Linux系统开机自动挂载文件fstab介绍 一、fstab简介 fstab文件中包含了各种各样的文件系统描述信息,它可以被特殊的工具修改,fstab中每一个文件系统描述占一行,每一行是TAB或空格分隔.../etc/rc.local下面 因此在测试此配置之前,我们先来测试下/etc/rc.local能否达到开机自动挂载的需求 [root@localhost ~]# cat /etc/rc.local #...dev/sda1 485M 35M 426M 8% /boot 192.168.1.2:/data/bbs 50G 3.5G 44G 8% /mnt 同样也可以开机自动挂载成功...五:fstab故障导致开机无法启动解决方法 故障环境操作系统是Centos 6.5 开机加载后出现如下提示,提示开机检查时出现一个错误 ?...系统加载错误,无法启动了 方法一: 提示输入root密码或control-D 继续,这里我们输入管理员密码 ?

8.7K20

Linux驱动开发-编写超声波测距模块驱动

基本工作原理: (1) 采用 IO 口 TRIG 触发测距, 给至少 10us 的高电平信号; (2) 模块自动发送 8 个 40khz 的方波, 自动检测是否有信号返回; (3) 有信号返回,...示例代码 下面是超声波测距模块驱动代码,将超声波模块的输出脚接在开发板支持中断的IO口上,配置为上升沿触发,当超声波输出脚检测到高电平就进去中断服务函数,在中断服务函数里调度工作队列,最终在工作函数里完成高电平的时间长度获取...下面是测量的结果: 2.1 驱动代码 #include #include #include #include..._linux_csb_init); /*驱动入口--安装驱动的时候执行*/ module_exit(tiny4412_linux_csb_cleanup); /*驱动出口--卸载驱动的时候执行*/...MODULE_LICENSE("GPL"); /*设置模块的许可证--GPL*/ 2.2 Makefile KER_DRI=/home/wbyq/work/linux-3.5/linux-3.5

1.7K30

Python自动重新加载模块详解(autoreload module)

看了一下Python开源的Web框架(Django、Flask等)都有自己的自动加载模块功能(autoreload.py),都是通过subprocess模式创建子进程,主进程作为守护进程,子进程中一个线程负责检测文件是否发生变化...自动重新加载模块代码如下: autoreload.py #!...pass else: try: sys.exit(restart_with_reloader()) except KeyboardInterrupt: pass 测试的主模块如下...11772 0.0 0.1 20152 4092 pts/0 Sl+ 19:37 0:00 /usr/bin/python runner.py 可以对比两次的进程,可以看到使用守护进程模式可以简单的实现模块自动重新加载功能...源代码:https://github.com/wenjunxiao/python-autoreload 以上这篇Python自动重新加载模块详解(autoreload module)就是小编分享给大家的全部内容了

2.7K20

Linux-insmodrmmodlsmod驱动模块相关命令(10)

insmod:加载模块 参数: -f  不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入。 -k  将模块设置为自动卸除。 -m  输出模块的载入信息。...-o    指定模块的名称,可使用模块文件的文件名。 -p  测试模块是否能正确地载入kernel。 -s  将所有信息记录在系统记录文件中。 -v  执行时显示详细的信息。...-x  不要汇出模块的外部符号。 -X  汇出模块所有的外部符号,此为预设置。...实例:  insmod first_drv.ko 除了insmod外,还有modprobe 也是加载模块,不同的是它在加载模块时,会同时加载模块所依赖的其他模块。...实例:  rmmod first_drv lsmod:列出当前已加载模块 实例: lsmod ?  除了lsmod能看以外,还能通过cat /proc/devices 来查看已加载模块

2.1K70

【Zookeeper】Linux下实现zookeeper开机自动启动搭建集群

有关个人学习使用的ZK集群的部署过程可以参考:[【Zookeeper】基于3台linux虚拟机搭建zookeeper集群]。...服务脚本和启动脚本备份 个人准备了两份脚本文件,需要的时候可以直接下载上传到服务器,稍微修改配置之后,按照下文的步骤操作,即可快速实现开机自动搭建集群。...重新加载配置信息: systemctl daemon-reload 3....开机自动组成ZK集群 我们把这个开机启动脚本放到其他几台机器对应的目录下面,然后按照上面的步骤执行一遍即可。这样之后只需要启动三台虚拟机就可以自动构建集群了,非常方便。...参考资料 Linux下安装zookeeper、配置zookeeper开机自启动 - java先生 - 博客园 (cnblogs.com)

59910
领券