Ubuntu16.04平台Linux 驱动程序开发实践要点记录

8 篇文章 0 订阅
8 篇文章 0 订阅

ubuntu安装linux-headers-$(uname -r) 到/usr/src目录,同时在/lib/modules/$(uname -r)/build设立symbol link

 

sudo apt-get install linux-headers-$(uname -r)

 

如果在/usr/src目录下找得到相应内核开发头文件,则无需安装,直接symbol link即可。

 

#查看/usr/src路径下对应头文件,比如linux-headers- 4.4.0-171-generic

ls /usr/src

cd /lib/modules/4.4.0-171-generic/

#链接文件

ln -s /usr/src/linux-headers-4.4.0-171-generic build

 

 

当你兴致勃勃地编译好hello.ko,在屏幕上敲下sudo insmod hello.ko以后,如果不想在dmesg中看到taited kernel之类的信息,那就在Makefile中设置一下

CONFIG_MODULE_SIG=n,暂时关掉内核模块签名验证功能。

 

 

在文件系统上创建一个设备节点的命令是mknod,而且你必须是超级用户才能操作。除了要创建的节点名字外,该命令还带三个参数。例如,命令:

 

  mknod /dev/chr c 254 0

 

创建一个字符设备(c),主设备号是254,次设备号是0。由于历史原因,次设备号应该在0-255范围内,有时它们存储在一个字节中。存在很多原因扩展可使用的次设备号的范围,但就现在而言,仍然有8位限制。

 

请注意:如果一旦用mknod生成了一个特别的设备文件,它就永远存在了硬盘上,除非你显式地删除它。你可以通过执行命令"rm"命令来删除上面创建的设备。

 

rm /dev/chr

 

写字符设备驱动程序时,出现错误:fatal error: asm/system.h: No such file or directory

错误信息可知,缺少此头文件

 

原因:Linux内核是不断地更新换代,即3.3版本之后内核用switch_to.h替换了曾经的system.h头文件。

 

解决方法:在终端输入uname -r,查看自己Linux内核版本。如,我的内核版本是4.2.0-27-generic,可知为3.3之后版本,直接使用#include <asm/switch_to.h>替换掉原来的#include <asm/system.h>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值