设为首页 加入收藏

TOP

ARM:一个简单的字符设备驱动
2014-11-24 13:53:49 来源: 作者: 【 】 浏览:1
Tags:ARM 一个 简单 字符 设备驱动

工作需要,开始学习驱动开发。从课本上学习到的第一个简单的驱动开发及调试,记录如下。


建立源文件chardev.c,文件内容如下:



Makefile如下:



直接make,得到chardev.ko。


然后可以用insmod和rmmod转载和卸载该驱动。


运行insmod chardev.ko,然后我们cat /proc/devices查看设备信息,可以看到以下信息:



这里数字250对应代码中的MAJOR_NUM值,在insmod后如果看不到对应的信息(如250 chardev),原因是已经有这样的设备存在了,可以修改一个没有的值。


然后我们可以建立设备节点,mknod /dev/chardev c 250 0,那么在/dev下就可以找到对应的设备文件,此时我们就可以对这个设备文件进行操作。


以下是对设备文件/dev/chardev操作的测试代码chardevtest.c,这个测试工具打开设备文件,往设备文件中写入一个整数,然后再读取这个整数并显示:



直接gcc -o chardevtest chatdevtest.c编译成chardevtest,然后运行,运行时输入1,然后再读取设备值并显示在屏幕上。


注:


1.上面chardev_init()函数返回必须为0,否则会报-1 Device or resource busy的错误。


2.代码里有prink驱动打印的函数,内核打印函数只有在原屏幕上能打印出来,一般的终端登录工具上insmod和rmmod时将无法打印,此时会将


打印写到/var/log/message文件中。


3.在用测试程序打开文件时,驱动会调用read函数,从chardev_var中读取数值并显示。我们输入一个整数,然后驱动会调用write将数值写入chardev_var中。


这个过程可以(只能)在原屏幕上打印出来。


至此,测试结束。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇QT6410移植Linux-2.6.39 笔记 下一篇Android开发:实现一个Activity存..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: