zoukankan      html  css  js  c++  java
  • 5.2.10.应用程序如何调用驱动

    1. 设备文件在/dev下

    ls /dev/ (里面每一个文件代表一个硬件)

    设备文件是用来索引驱动的(根据major)
    major相当于数组的下标

    设备号=主设备号(决定设备种类如led)+次设备号(led1,led2)

    1. 创建设备文件:mknod /dev/xxx c 主设备号 次设备号(c表示字符设备驱动)

    已知:[ 516.028089] chrdev_init Success.mymajor = 250

       #mknod /dev/test c 250 0
       #ls /dev/test -l
            crw-r--r--    1 root     0         250,   0 Jan  2 02:23 /dev/test    (c表示字符设备驱动)
    
    1. 写应用编程

    touch app.c

    编写代码
    修改makefile:arm-none-linux-gnueabi-gcc ,cp app 路径

    make
    make cp
    此时开发板已经安装了之前写的驱动

    分析:fd = open(FILE, O_RDWR);------》#define FILE "dev/test"-------------》.open = test_chrdev_open,-----》printk(KERN_INFO "test_chrdev_open ");
    将应用app.c与驱动文件module_test.c链接起来的关键在于#define FILE "dev/test"即文件操作符file_operations。通过file找到file_operations里面绑定的test_chrdev_open函数名字,找到对应函数,在对应函数里面操作硬件。

     # ./app
    [ 3934.887282] test_chrdev_open
     [ 3934.888872] test_chrdev_release
       open /dev/test success.
     或者
       [ 3934.887282] test_chrdev_open
       open /dev/test succ[ 3934.888872] test_chrdev_release
      ess.
    

    close对应的函数test_chrdev_release关闭文件

    注意一定不要将#define FILE "/dev/test"写成#define FILE "dev/test",否则找不到设备文件,运行app.c时会错误

  • 相关阅读:
    JavaSE_11_File类、递归
    JavaSE_10_IO流
    leyou_07_对数据的操作
    JavaSE_09_Map
    JavaSE_08_Collections常用功能
    java 22
    java 22
    java 22
    java 22
    java 22
  • 原文地址:https://www.cnblogs.com/Ocean-Star/p/9250335.html
Copyright © 2011-2022 走看看