如何处理Linux内核驱动程序(新手)



我正在尝试使用Linux内核驱动程序。有一天,我写了Linux内核模块,以处理GPIO中断。用" make"命令构建它,并用" insmod"加载它,然后起作用。但是现在我试图使用此OV5642相机驱动程序。我下载了源代码。用源在文件夹中制作" make"命令,当它构建时,我使用了" insmod"命令将其加载。现在已在已经加载的模块列表中列出,但我不知道如何被抓住。如何使其运行并访问其输出?

,为了从模块捕获帧,您需要使用平台设备"探测"驱动程序(即,您必须创建平台设备才能调用" OV5642_Probe"函数)。如果调用探测功能,并成功地达到"返回0",则在DMESG中将获得"检测到的芯片ID 0x5642"。(您可以通过放置一个简单的" printk(kern err" ###我的探针功能被称为")在探针函数中的行935并在DMESG中检查。被称为,您必须正确连接相机才能成功探测驱动程序。

如果探测功能失败(即被调用,但直到"返回0"之前才达到),则阅读OV5642的寄存器应该存在问题。正确检查摄像机的I2C连接和电源(并确保按照数据表中提到的序列执行其功率),如果您获得了"芯片ID",而不是0x5642或I2C读取失败。

如果未调用探测功能,则需要创建一个适当的platform_device。

假设您正在在OV5642模块接口的自定义板上进行此操作。

如果在DMESG中获得"芯片ID 0x5642",则应使用" V4L-Utils"软件包尝试。V4L2-CTL命令中有许多选项可用,您可以在其中设置格式,查询功能,启动流,抓框。如果您无法在板上安装V4L-UTIL,则应尝试https://gist.github.com/maxlapshin/1253534。如果您有兴趣开发相机驱动程序,也可以在线或任何内核源在线或任何内核源。

如果您是新手,并且想学习与内核驱动程序打交道,请参阅http://www.makelinux.net/ldd3/以及在docountation/drigentation/driver-model/platform.txt上的特殊平台驱动程序文档LXR用于创建和探测平台驱动程序。

最新更新