前言
发现自己太懒了,驱动的系统学习是在19年就提上日程了,结果都2022年了还没结束,好在断断续续一直在学习,就当中间的日子用来吸收之前所学的知识了吧,哈哈。为热爱不断学习,加油。话说也不是很热爱,就是不懂想弄明白而已。总之,保持热爱,保持好奇,加油就对了。
1- 初识驱动
我们写完驱动后,即对用户态提供了接口,可以调用驱动接口操作硬件。
比如我们写了一个led驱动,驱动中设计了led_open; led_read; led_write接口用于打开、读写LED灯。
在用户态程序中,我们通常使用c库函数open、read、write函数进行操作LED灯。
led_fd = open("/dev/ledxx", ''yy');
val = read(led_fd, cnt);
write(led_fd, wr_val, cnt);
问:通用的C库函数(open、read、write)如何调用到我们的驱动接口led_open、led_read、led_write的?
看图说话:
我们在应用程序使用open打开/dev/ledxx设备,首先会进入到c库函数open中,然后触发系统异常;在VFS层处理异常,并根据设备信息找到对应的设备打开接口led_open。
附韦神视频中的图: