linux驱动开发—beep
2015-07-06 13:08
537 查看
<span style="white-space: pre;"> </span>离上次玩led驱动已经好久了。久到都忘了一些基本命令了,这次重新复习一下这些基本命令吧
static void led_exit(){ cdev_del(&cdev); unregister_chrdev_region(devno,1); } static int led_init(){ cdev_init(&cdev,&led_ops); alloc_chrdev_region(&devno,0,1,"mybeep"); cdev_add(&cdev,devno,1); return 0; } module_init(led_init); module_exit(led_exit);init里面就是注册的代码,初始化设备号,将ops结构体和设备号连接起来,然后申请设备号,alloc_chrdev_region,最后设别号加入到cdev中,
exit里面就是卸载设备,先解除cdev里面的各种关系,然后注销设备号,
unsigned int *ledgpbcon; unsigned int *ledgpbdat; unsigned int *ledgpbup; struct cdev cdev; dev_t devno; int ledopen(struct inode *node,struct file *filp) { ledgpbcon = ioremap(GPBCON,4); ledgpbdat = ioremap(GPBDAT,4); ledgpbup = ioremap(GPBUP,4); writel(0x01,ledgpbcon); writel(0x01,ledgpbdat); printk(KERN_ALERT "had open\n"); return 0; }
用地址映射的方式控制寄存器,也可以用linux为我们准备的宏来控制,s3c2410_gpbpin_XXXXX来控制引脚 ,不过有些芯片没有,所以最好是用地址映射的方式来做,
写完之后,用前面介绍的方式创建的环境编译.c文件,然后下载到开发板上去,
然后insmod 进/proc/devices看有没有对应的设备号,如253 mybeep
然后mknod /dev/mybeep c 253 0也可以创建在别的地方,这样应用程序就可以对应的open了,
然后就是运行应用程序,再然后,rmmod mybeep卸载驱动程序,lsmod可以查看驱动有没有被使用
相关文章推荐
- [Python 学习] 两、在Linux使用平台Python
- Linux Futex的设计与实现
- 学习LINUX入门,/tmp文件夹
- 初次编译Linux—2.6.34内核
- Linux系统下如何查看及修改文件读写权限
- ARM-Linux交叉工具链制作
- Linux中more的用法详解
- linux select函数用法
- Linux下如何查看系统启动时间和运行时间(转)
- linux c 通过文件描述符获取文件名
- CentOS下安装eclipse-cdt
- linux程序设计——用互斥量进行同步(第十二章)
- Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
- Linux文件管理相关命令
- 第九节 linux标准输入输出操作
- 22、linux文件属性详解
- 【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)
- linux下cat命令详解
- 21、linux文件类型与扩展名
- Linux下的C编程