1.硬件原理图
由图可知,led1,led2,led3,led4,分别对应GPB5,GPB6,GPB7,GPB8,由s3c2440芯片手册可得到如下图所示,分别配置GPBCON和GPBDAT即可
2.open接口
int first_chrdev_open(struct inode *inode, struct file *file)
open方法提供给驱动来做初始化工作,从而准备后续的操作。大部分驱动中,open进行一下工作:
- 检查设备特定的错误:设备没准备好,类似的硬件错误
- 如果它第一次打开,初始化设备
- 如果需要,更新f_op指针
- 分配并填充要放进filp->private_data的任何数据结构
3.release接口函数
- int (*open)(struct inode *inode, struct file *file)
- 释放open分配在filp->private_data中的任何数据
- 在最后的close关闭设备
4.write接口:
- ssize_t (*write)(struct file *filp, const char _user *buffer, size_t count, loff_t *offset)
- copy_from_user:把从用户空间传递下来的数据复制到内核空间
5.read接口:copy_to_user:把从用户空间传递下俩的数据复制到内核空间中
6.llseek接口:移动设备的文件指针
7.ioremap:把一段物理地址空间映射成虚拟地址空间
8.iounmap:释放ioremap得到的虚拟地址空间