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\n");
将应用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时会错误

转载于:https://www.cnblogs.com/Ocean-Star/p/9250335.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值