标题linux下驱动开发日志
标题一、驱动加载到linux内核中
我现在是直接使用厂家提供的驱动来做适配的。
第一步,首先要找到我们要使用的驱动的源码目录,找到其对应的Makefile,在其中我们会看到menuconfig中需要打开的配的关键字,例如designware的wdt的关键字就是dw_watchdog。
第二步,根据上一步找到的关键字,在Makefile中查找这个关键字(注;/直接按/就可以打开menuconfig中的搜索框),打开搜索框之后按照提是打开这个驱动所需的所有依赖,同时需要注意某些以来是否会对其他IP或子系统造成影响。
第三步,保存的们刚才menuconfig的配置,一般都会在对应目录下有相应的.config文件。
第四步,编写dts是设备树,方法可以参考厂家的官方配置。
标题二、linux内核启动加载驱动的过程
第一步,重新编译代码,这时候有了上一步的配置,系统会把我们的驱动编译成.o加载进去。
第二步,首先系统会根据dts的bin文件对进行解析,如果检索到了对应设备树,然后根据设备树找到相应的驱动代码。
第三步,内核会加载一个叫prob函数的函数接口,里面可能会做一些初始化啥的,同时也会生成对应的设备节点,根据不同的ip可能在不同的文件目录下或不同的子系统下,根据我目前遇到的例子,dev、还有时间子系统下都会有对应的涉笔节点。
第四步,我们可以通过dmesg|grep wdt(wdt为例)来查看我们的IP信息。
标题三、驱动接口的调用
由于刚开始接触,理解的比较浅显。大概可以分为三个步骤。
(1)open(fd,dev/wdt),打开对应的驱动文件获得一个句柄。
(2)ioctrl(fd,optio,&i),做一些操作,设置超时呀、获取状态呀,等等。
(3)close(fd),关闭文件。
目前知道的比较少,后面再做完善,加图片,贴代码。