linux驱动初步

主机环境:
ubuntu 16.04 64bit
在虚拟机中安装完ubuntu 16.04后,默认的环境是可以直接进行驱动开发的,而无需重新编译内核树。
下面以Linux ubuntu 4.13.0-36-generic ubuntu 16.04  64bit为例,介绍简单驱动程序的编写和测试。

1.hello.c文件
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
    printk(KERN_ALERT"hello world!\n");
    return 0;
}
static void hello_exit(void)
{
    printk(KERN_ALERT"hello, exit\n");
}
module_init(hello_init);
module_exit(hello_exit);

2.Makefile文件
obj-m := hello.o

3.然后在外部模块构建目录下执行命令:
$make  -C /lib/modules/`uname -r`/build M=`pwd` 
如果编译提示找不到某个头文件  ,类似 :
./include/uapi/asm-generic/int-ll64.h:11:29: fatal error: asm/bitsperlong.h: No such file or directory
则用sudo make进行编译。
应该是root管理员配置的path环境变量的问题。使用默认用户配置的环境变量和root用户不一样,导致sudo make的时候,使用了不同的库和编译工具。

 4.安装模块
$sudo insmod hello.ko

然后查看/var/log/syslog,会有日志信息输出
$cat /var/log/syslog

或打开另一个中断,跟踪查看
tail -f /var/log/syslog
删除模块:
$sudo rmmod hello.ko
$lsmod 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值