linux驱动设备程序(内核层、应用层)

一、linux驱动程序

1、分类

字符设备(驱动)、块设备(驱动)、网络设备(驱动)。

2、核心

应用程序运行在用户空间(3G);<系统调用>——><陷入>——><实现底层驱动操作>

驱动程序运行在内核空间(1G)。

【最初在字符设备中创建】

【Kconfig】

【Makefile】

注:括号中的名字来自于make menuconfig。

之后为了更加方便编译等,不用每次进行上述操作:

【Makefile】

并在first_driver中对设备进一步进行打开、读写、关闭等操作。如下

3、编写模块

(1)注册函数为:
int register_chrdev(unsigned int major(设备号), const char *name, const struct file_operations *fops);

(2)销毁函数:

static inline void unregister_chrdev(unsigned int major, const char *name)  。

(3)写文件时,从用户层得到

 static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n)

(4)读文件时,去到用户层

static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n)

(5)映射地址(将物理地址映射到内核的虚拟地址空间)

#define ioremap(cookie,size)        __arm_ioremap(cookie(物理地址), size, MT_DEVICE)

(6)释放映射内存

#define iounmap(cookie)         __arch_iounmap(cookie)

eg:①first_driver.c

【内核层】

【用户层】

②led.c

【内核层】

【用户层】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值