当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 学习笔记 > 嵌入式学习笔记:创建设备文件详解

嵌入式学习笔记:创建设备文件详解 时间:2018-09-27      来源:未知

1 自动创建设备文件创建设备文件类

#define class_create(owner, name)

设备可以有多个子设备,class_create这个宏相当于创建一

个子设备的一个父类,通过它来创建多个子设备 owner :模块本身 THIS_MODULE name : name

返回值 : struct class 类型指针, 出错:NULL,成功:有效的struct class指针

创建设备文件

struct device *device_create(struct class *class, struct device *parent,

dev_t devt, void *drvdata, const char

*fmt, ...)

class :通过 class_create 创建的设备文件类指针 parent :父设备,一般NULL

devt :设备号,包含主设备号和次设备号 drvdata :私有数据

fmt :设备文件名

返回值:Returns &struct device pointer on success, or ERR_PTR() on error.

失败时需要用 ERR_PTR 函数判断

销毁设备文件

void device_destroy(struct class *class, dev_t devt)

class :设备文件类指针

devt :设备号,包含主设备号和次设备号

销毁设备文件类

extern void class_destroy(struct class *cls); cls :设备文件类指针

设备类查看

ls /sys/class/xxxxx

ls /dev/xxx

2 区分设备文件 struct inode {

......

dev_ti_rdev; inode结构体保存的设备号

......

void

*i_private; inode 的私有数据

}

ptintk("open device num majour : %d , min min : %d\r\n", MAJOR(pNode->i_rdev), MINOR(pNode->i_rdev)

dmesg | tail -20

3 ioctl

命令码构建,内核使用32位表达了4种信息 dir:读写,size:

ioctl第三个参数时类型所占的字节数

,type(可以做命令的一个分段,类似于使用枚举的错误码分段), nr:命令码

*0xE0000000DIR

*0x80000000DIR = WRITE

*0x40000000DIR = READ

*0x20000000DIR = NONE

* 0x3FFF0000 SIZE (overlaps NONE bit)

* 0x0000FF00 TYPE

* 0x000000FF NR (CMD)

4 互斥锁

# define mutex_init(mutex)

mutex :要初始化的锁,注意传的是 struct mutex 类型指

mutex_lock

mutex_unlock

5 信号量

static inline void sema_init(struct semaphore *sem, int val) sem :信号量结构体指针

val :信号量持有资源个数

down 申请资源,当没有资源时,休眠等待,不可中断 extern void down(struct semaphore *sem)

down_interruptible 申请资源,当没有资源时,休眠等待,可中

extern int __must_check down_interruptible(struct semaphore *sem)

up 释放资源

extern void up(struct semaphore *sem)

6 原子变量

ATOMIC_INIT(0) 初始化

atomic_dec_and_test 减1并测试,为0返回true,否则返回

false

atomic_inc 加1

7 自旋锁

spin_lock_init(&g_SpinLock); 初始化 spin_lock(&g_SpinLock); 加锁 spin_unlock(&g_SpinLock); 解锁

上一篇:嵌入式学习笔记:什么叫驱动模块,这里告诉你

下一篇:嵌入式学习笔记:gcc和gdb学习总结

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2018 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号