主题 : pwm蜂鸣器驱动 复制链接 | 浏览器收藏 | 打印
在乎在乎的,无视不屑的,宁真实
级别: 新手上路
UID: 79720
精华: 0
发帖: 40
金钱: 205 两
威望: 41 点
综合积分: 80 分
注册时间: 2012-10-12
最后登录: 2014-01-07
楼主  发表于: 2013-03-05 08:44

 pwm蜂鸣器驱动

蜂鸣器的驱动程序 为Mini2440_pwm.c, 小生在内部并没有看到 幻数的 定义以及cmd 的定义, 同时也没看到其对应的头文件。
但是驱动程序内部又看到 s3c24xx_pwm_ioctl接收命令。
小生愚钝,还请高人指点一二。
因为这个舞台,我们相聚在一起!
级别: 侠客
UID: 2527
精华: 1
发帖: 91
金钱: 505 两
威望: 101 点
综合积分: 202 分
注册时间: 2008-11-22
最后登录: 2015-06-08
1楼  发表于: 2013-03-05 11:47
在应用程序,肯定有ioctl函数去调用驱动中的ioctl函数的
蜗牛
在乎在乎的,无视不屑的,宁真实
级别: 新手上路
UID: 79720
精华: 0
发帖: 40
金钱: 205 两
威望: 41 点
综合积分: 80 分
注册时间: 2012-10-12
最后登录: 2014-01-07
2楼  发表于: 2013-03-05 14:49
我是照着蜂鸣器的驱动 自己模拟写了个驱动。
一般驱动都会有

#define HELLO_MAGIC 'k'
#define HELLO_CMD1    _IO(HELLO_MAGIC,0x1a)
#define HELLO_CMD2    _IO(HELLO_MAGIC,0x1b)
            其中'k'为幻数,要按照Linux内核的约定方法为驱动程序选择ioctl编号,应该首先看看include/asm/ioctl.h和Documentation/ioctl-number.txt这两个文件,下面是ioctl.h的部分内容,也是比较重要的:

_IO(type, nr)
       用于构造无参数的命令编号;
_IOR(type, nr, datatype)
       用于构造从驱动程序中读取数据的命令编号;
_IOW(type, nr, datatype)
       用于写入数据的命令;
_IOWR(type, nr, datatype)
       用于双向传输。注意千万不能重复定义。

这些cmd命令定义,为何在蜂鸣器中看不到 ?