linux内核驱动第1讲:带你编写一个最简单的字符设备驱动( 二 )

编译并执行,发现错误,找不到设备文件:

linux内核驱动第1讲:带你编写一个最简单的字符设备驱动

文章插图
 
这是因为还没有创建hello驱动的设备文件,我们为hello驱动手动创建设备文件:
root@ubuntu:/home/jinxin/drivers/helloDev# mknod /dev/hello c 232 0备注:这里的232和0要跟驱动文件里定义的主次设备号对应起来!
然后再次执行测试程序,发现成功了:
root@ubuntu:/home/jinxin/drivers/helloDev# ./test 3open successe0 0root@ubuntu:/home/jinxin/drivers/helloDev# 然后再次执行dmesg查看驱动输出,发现驱动里的hell_open, hello_write, hello_read被依次调用了 。
linux内核驱动第1讲:带你编写一个最简单的字符设备驱动

文章插图
 
这就是一个完整的、最简单的驱动的开发和测试的流程 。
我想大家可能会有几个问题:
1.驱动测试的时候为什么要有设备文件,设备文件的作用是什么?hello驱动的设备文件创建的时候为什么要指定主设备号为232, 此设备号为0?
2.对/dev/hello执行write()调用的时候,怎么就调用到了驱动里的hello_write()里去了?
3.驱动代码里的register_chrdev_region这些函数都是干什么的?实现的地方在哪里?
4.测试程序的read和write的返回值为什么都是0?
针对以上可能的问题,敬请期待《linux内核驱动第2讲》,我会一一回答以上问题 。
关注“技术简说”,一步一步教你开发linux内核和驱动

【linux内核驱动第1讲:带你编写一个最简单的字符设备驱动】


推荐阅读