zoukankan      html  css  js  c++  java
  • 3.字符设备led驱动

    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得到的虚拟地址空间

  • 相关阅读:
    sort()
    type()
    reverse()
    pop()
    remove()
    max()
    len()
    Ext.Js核心函数( 三)
    聚簇索引和非聚簇索引区别
    Ext.js入门(二)
  • 原文地址:https://www.cnblogs.com/Mr-ox/p/6407346.html
Copyright © 2011-2022 走看看