02-Linux驱动开发框架

Linux驱动开发框架

1、驱动分为四个部分

1)头文件

#include <linux/init.h> //包含宏定义的头文件
#include <linux/module.h> //包含初始化加载模块的头文件

2)驱动模块的入口函数和出口函数

module_init(入口函数名);
module_exit(出口函数名);

3)声明信息

MODULE_LICENSE("GPL");

4)函数的功能实现

//入口函数
static int hello_init(void){
	printk("hello world! \n");
	return 0;
} 
//出口函数
static void hello_exit(void){
	printk("gooodbye! \n");
}

2、模块操作基本指令

insmod -------加载模块(调用模块加载函数)
    insmod 模块路径
rmmod -------- 卸载模块(调用模块卸载函数)
    rmmod 模块路径
rmmod时如果出错:rmmod: remove 'cdd1': No such file or directory
使用lsmod查看一下模块名,再次卸载模块
lsmod ------- 查看当前已经加载的模块
    lsmod    

3、Makefile demo

#内核源代码路径
KERNEL_DIR=/home/xxxx/kernel
#交叉编译器的路径(前缀)
CROSS_PATH=/home/xxxx/bin/arm-eabi-
#编译成模块,obj-m编译成模块
obj-m      +=     first.o

default:
    $(MAKE) ARCH=arm CROSS_COMPILE=$(CROSS_PATH) -C $(KERNEL_DIR) M=$(PWD) modules
clean:
    rm -rf *.o *.ko *.mod* *.ord* *.sy* .*cmd .tmp*

4、内核模块编程的注意事项:

1、不能使用C库和C标准头文件;
2、使用GUN C
3、没有内存保护机制
4、不能处理浮点运算
5、注意并发互斥性和可移植型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值