210开发板吧 关注:77贴子:371
  • 3回复贴,共1

新手必看210开发板 Linux 驱动接口全解

只看楼主收藏回复

第一种:fileoparetion里的open close read write ioctl........:
第二种:属性操作中对文件进行读写,这种是重要的,也是常见的:


这就完成了声明,然后再在probe里加上这么一句注册就行了:

这个就是常常能见到的驱动文件给用户的接口了。怎么用呢?
这个很是困惑我一段时间,网上类似的文章也不多,大概是大家觉得这么简单的东西没必要写吧,那作为菜鸟的我来写:
如这个device_create_file后会生成的一个文件名叫isa1200_mode的文件,如生成了目录:
/sys/class/……/isa1200/device/isa1200_mode
那么对它进行读写就是这样的:sudo echo 1 >/sys/class/……/isa1200/device/isa1200_mode,也就是把1写进了文件isa1200_mode里,那么属性机制就会分析这个操作,并调用isa1200设备驱动的isa1200_mode_store函数,并会把写入的1当作参数*buf来处理。通过一句if (sscanf(buf, "%d", &enable) != 1)就把1传给了enable,一直进行接下来的工作。这下面的工作当然就好理解了,isa1200_mode_store里也是调用驱动中写好的函数来完成操作工作。
上面说是操作只是通常的用户接口,对于不同的设备还是会有其它更好的接口:1. led_classdev,led类的一个常用接口:brightness

这就完成了声明,然后再在probe里加上这么一句注册就行了:


1楼2013-03-26 08:34回复


    过led_classdev_register就会生成目录:/sys/class/leds/ w380:icon
    及其下面的/sys/class/leds/ w380:icon/brightness文件。
    对了,接口就是brightness文件 那么对它进行读写就是这样的:sudo echo 255 >/sys/class/leds/w380:icon/brightness 这样就打了这个LED灯。关闭LED灯的操作就是sudo echo 0>/sys/class/leds/w380:icon/brightness2. timed_output_dev,时间输出类的一个常用接口:enable


    这就完成了声明,然后再在probe里加上这么一句注册就行了:
    通过timed_output_dev_register就会生成目录
    :/sys/class/timed_output/isa1200
    及其下面的/sys/class/timed_output/isa1200/enable文件。
    对了,接口就是enable文件 那么对它进行读写就是这样的:sudo echo 1 >/sys/class/timed_output/isa1200/enable 这样就打了这个motor。关闭motor的操作就是sudo echo 0>/sys/class/timed_output/isa1200/enable3. switch_dev:在android中常用于耳机设备:switch_class接口是name和state
    通过switch_dev_register就会生成目录:/sys/class/switch/h2w及其下面的"/sys/class/switch/h2w/name";和"/sys/class/switch/h2w/state";文件。对了,接口就是这两个文件由驱动通过中断将判断得出的耳机名称和状态,写入name 和state.应用程序对耳机进行名称和状态的判断就靠读出这两个文件得到。


    2楼2013-03-26 08:35
    回复
      广告
      立即查看
      不错 顶一下 楼主还真是辛苦哈~~
      解释够详细


      4楼2013-03-26 13:23
      回复
        不错210开发板 Linux 驱动接口 够详细 只不过图片不够清晰,截图不给力啊!!!不过lz辛苦啦


        5楼2013-03-27 09:30
        回复