linux学习1- 驱动模块的加载

编译环境 :Ubuntu 16.04

linux板子: Exynos4412


目录

1. 编译生成模块文件.ko

1.1 板子运行最小系统

1.2 编译模块

1.3 挂载U 盘

2 模块操作

2.1 加载模块

2.2 查看模块

2.3 卸载模块


          Linux 驱动有两种运行方式,第一种就是将驱动编译进 Linux 内核中,这样当 Linux 内核启动的时候就会自动运行驱动程序。第二种就是将驱动编译成模块(Linux 下模块扩展名为.ko),在Linux 内核启动以后使用“insmod”命令加载驱动模块。在调试驱动的时候一般都选择将其编译为模块,这样我们修改驱动以后只需要编译一下驱动代码即可,不需要编译整个 Linux 代码。
而且在调试的时候只需要加载或者卸载驱动模块即可,不需要重启整个系统。总之,将驱动编译为模块最大的好处就是方便开发,当驱动开发完成,确定没有问题以后就可以将驱动编译进Linux 内核中.

对于字符设备驱动而言,当驱动模块加载成功以后需要注册字符设备,同样,卸载驱动模块的时候也需要注销掉字符设备。

 

 

1. 编译生成模块文件.ko

1.1 板子运行最小系统

下载boot、内核kernel、文件系统system

1.2 编译模块

参考讯为电子的:

将编译生成的.ko文件拷入U盘

 

1.3 挂载U 盘

①确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令:

mkdir /mnt/usb_disk

②载入 u 盘,需键入以下命令:

mount  /dev/sda   /mnt/usb_disk
成功后,即可使用 u 盘了, 文件就在目录 /mnt/usb_disk 下。

主要查看U盘插入是打印的信息:

所以我这里应该: mount  /dev/sda1   /mnt/usb_disk

③查看U盘里面的内容

cd /mnt/usb_disk 

ls

③卸载u盘:在使用完u盘后,在拔出前需要先键入卸载U盘命令    
     命令如下:umount   /mnt/usb 

 

 

 

2 模块操作

2.1 加载模块

insmod  xxx.ko

        insmod 命令不能解决模块的依赖关系,比如 drv.ko 依赖 first.ko 这个模块,就必须先使用insmod 命令加载 first.ko 这个模块,然后再加载 drv.ko 这个模块。但是 modprobe 就不会存在这个问题,modprobe 会分析模块的依赖关系,然后会将所有的依赖模块都加载到内核中,因此modprobe 命令相比 insmod 要智能一些。

modprobe 命令主要智能在提供了模块的依赖性分析、错误检查、错误报告等功能,推荐使用 modprobe 命令来加载驱动。

 

2.2 查看模块

lsmod

 

2.3 卸载模块

 rmmod

出现问题:rmmod: can't change directory to '/lib/modules': No such file or directory

参考: https://blog.csdn.net/coolwriter/article/details/77982534?utm_source=blogxgwz5

 

主要就是:

mkdir -p /lib/modules

注意根据实际情况,这里的3.0.15替换为提示信息

我这里出现:

mkdir -p /lib/modules/3.0.15

之后成功卸载

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值