首页
学习
活动
专区
工具
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.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

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

    2.9K30

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

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

    1.4K60

    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、内核模块其它配置文件 内核模块的其它配置文件还是需要了解的

    5.1K30

    【Linux】挂载硬盘并设置开机自动挂载

    本文介绍了在Linux系统下挂载硬盘的概念和步骤,并讲解了开机自动挂载的方法。1.什么是挂载秉承着Linux“一切皆文件”的理念,硬盘这种东西在系统中以一个文件的形式呈现。...然后用mount命令挂载即可:mount /dev/nvme1n1p1 /media/nvme1n1p14.设置开机自动挂载以上方法都是临时挂载,系统关机之后就失效了。...想要永久挂载,需要设置系统开机自动挂载。系统是根据/etc/fstab这个文件来自动挂载的,我们只需要修改这个文件即可。3.手动挂载查看可挂载的硬盘扇区文件管理器其实并不会列出所有可以挂载的硬盘。...然后用mount命令挂载即可:mount /dev/nvme1n1p1 /media/nvme1n1p14.设置开机自动挂载以上方法都是临时挂载,系统关机之后就失效了。...想要永久挂载,需要设置系统开机自动挂载。系统是根据/etc/fstab这个文件来自动挂载的,我们只需要修改这个文件即可。

    54910

    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(要挂载的目录)最后设置开机自动挂载

    16.5K30

    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 继续,这里我们输入管理员密码 ?

    10K20

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

    基本工作原理: (1) 采用 IO 口 TRIG 触发测距, 给至少 10us 的高电平信号; (2) 模块自动发送 8 个 40khz 的方波, 自动检测是否有信号返回; (3) 有信号返回,...示例代码 下面是超声波测距模块的驱动代码,将超声波模块的输出脚接在开发板支持中断的IO口上,配置为上升沿触发,当超声波输出脚检测到高电平就进去中断服务函数,在中断服务函数里调度工作队列,最终在工作函数里完成高电平的时间长度获取...下面是测量的结果: 2.1 驱动代码 #include linux/kernel.h> #include linux/module.h> #include linux/timer.h> #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.8K30

    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.2K70

    【linux命令讲解大全】202.Linux内核模块加载工具insmod和开机管理程序lilo的使用说明

    insmod 将给定的模块加载到内核中 补充说明 insmod命令用于将给定的模块加载到内核中。Linux有许多功能是通过模块的方式,在需要时才载入kernel。...这类可载入的模块通常是设备驱动程序。...语法 insmod [选项] [参数] 选项 -f:不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入; -k:将模块设置为自动卸除; -m:输出模块的载入信息; -...只是在使用insmod命令加载模块时,需要使用绝对路径方能加载,且加载时无法自动解决依赖关系。 lilo 安装核心载入开机管理程序 补充说明 lilo命令用于安装核心载入、开机管理程序。...从HDD(物理磁盘2)上安装了Red Hat Linux;root分区位于这个硬盘驱动器的第三个分区,即/dev/hdb3(在GRUB术语中是hd1,3)。

    24410

    Linux源码学习笔记 day1 开机时如何加载系统?

    今天开始学习 闪客老师的《Linux源码趣读》 在开机的时候,主板上的 BIOS程序 会把硬盘启动区的512个字节复制到内存里的0x7c00的位置,再跳转到这里运行。...开机后初始化 指向BIOS CPU中的PC寄存器,存储着即将要执行的指令的内存地址。开机时需要初始化PC寄存器的值为0xFFFF0。这是Intel手册龟腚的,硬件厂商只是实现而已。...放到第一扇区 Linux-0.11 从bootsect.s开始, 经过编译后,bootsect.s 会被编译成二进制文件,放在启动区的第一扇区。...加载到内存 前面说了BIOS会把代码复制到0x7c00的位置,具体怎么复制的还是得看bootsect.s里的代码: .equ BOOTSEG, 0x07c0 # original address of...这里32位 64位都是 加载到 0x7c00处,这里CPU还处于16位的实模式下,还得兼容老祖宗的位置。看来CPU的发展也有历史包袱。

    95731
    领券