最近这一段时间,把之前学的linux基础的东西捡了回来,正式开始接触驱动了。接触后发现底层的东西还是相当的繁琐,内核里的宏定义数不胜数,结构体,指针更是扑面而来。驱动主要分为三部分,分别是字符设备、块设备以及网络接口设备。这里先总结下简单字符设备驱动相关的东西。
参考资料:1.《Linux驱动开发入门与实践》 郑强
2.《国嵌培训资料以及视频》
参考资料1个人觉得不是很适合拿来上手,虽然讲的点多,但是却不细致。而2讲的点少,但比较细也比较浅显。
字符设备驱动:
字符设备理解起来可以和块设备进行区分理解。
字符=只能一个一个字节读写
块=可以从任意位置读取一定长度数据的设备,不必按照先后顺序。
如果对应上实物的话:字符设备有:鼠标、键盘、串口、控制台···
块设备有:SD卡、硬盘、磁盘、U盘···
Linux具体是怎样去操作设备驱动的?
在Linux系统中,每个字符设备或者块设备都在 /dev目录下有对应一个设备文件。Linux对设备进行操控,本质上就是通过这些文件来操作的。这样相当于有了一套标准,程序员便可以撇开设备的差异化从而按照标准进行编程。
区分一个现成的Linux系统当前的设备文件的属性,只需要cd /dev 然后 ls -l
出现以下条目: