Linux kernel 嵌入式Linux设备驱动程序错误代码1-001a?
我已经编译了我的相机驱动程序,并尝试从我的目标板I.MX6Q测试它 我面临着 探测1-001a失败,错误为-16 当我查看Linux kernel 嵌入式Linux设备驱动程序错误代码1-001a?,linux-kernel,camera,linux-device-driver,embedded-linux,Linux Kernel,Camera,Linux Device Driver,Embedded Linux,我已经编译了我的相机驱动程序,并尝试从我的目标板I.MX6Q测试它 我面临着 探测1-001a失败,错误为-16 当我查看dmesg | grep摄像头_name时出错,我认为1-001a是指设备驱动摄像头_name@1a . 这是我的设备驱动程序 camera_name: camera_name@1a { compatible = "camera,camera_name"; reg = <0x1a>; inck-name = "mclk"; xvs
dmesg | grep摄像头_name
时出错,我认为1-001a是指设备驱动摄像头_name@1a .
这是我的设备驱动程序
camera_name: camera_name@1a {
compatible = "camera,camera_name";
reg = <0x1a>;
inck-name = "mclk";
xvs-output-len = <8>;
xclr-gpio = <&gpio1 6 1 GPIO_ACTIVE_LOW>;
pwn-gpios = <&gpio1 6 1>;
clock-names = "csi_mclk";
DOVDD = <®_1p8v>;
AVDD = <®_2p9v>;
DVDD = <®_1p2v>;
rst-gpios = <&gpio1 6 1>; /* xclr */
ipu_id = <0>;
csi_id = <0>;
mclk = <37125000>;
mclk_source = <0>;
lanes = <4>;
};
camera\u名称:camera_name@1a {
compatible=“摄像机,摄像机名称”;
reg=;
inck name=“mclk”;
xvs输出len=;
xclr gpio=;
pwn gpios=;
时钟名称=“csi_mclk”;
DOVDD=;
AVDD=;
DVDD=;
rst gpios=;/*xclr*/
ipu_id=;
csi_id=;
mclk=;
mclk_源=;
车道=;
};
但我不明白这个错误在说什么?你有什么建议吗?我找不到关于它的任何信息
非常感谢
致以最良好的祝愿
1-001a的此错误日志探测失败,错误为-16
告知我们:
- 的
功能.probe
- 标识为
1-001a
- 已返回错误值
实现上述设备的设备驱动程序
-EBUSY
包含Linux内核中定义的各种常见错误号的预定义约定。Linux内核设备驱动程序和各种Linux内核子系统中的大多数函数都使用这些错误代码作为返回值来表示错误情况。检查include/asm generic/errno base.h以获取代码。感谢您明确的回答,我查看errno base.h并找到-EBUSY`#define EBUSY 16/*Device或resource busy*/`是关于在设备树上选择错误的gpio节点还是i2c节点?我想知道我们如何根据设备选择哪个节点?我从ov5640设备树引用中选择了xclr gpio和pwn gpios,因为这个错误可能会发生。你猜是可能的。确认它的一个可靠方法是读取驱动程序的探测函数,并检查它在什么条件下返回-EBUSY。如果驱动程序在多个条件下返回EBUSY,那么您可以尝试在每个条件分支中添加
printk()
语句,以确认探测函数中的流。感谢您的建议,这有助于我找出导致此错误的代码的哪个部分,我编写了pr_info();函数而不是printk();但我认为两者是一样的。非常感谢。我想再问一个问题。在我们编写设备树节点(例如,如何决定应选择哪些GPIO)时,是否有关于如何选择这些GPO或其他内容的信息或文档?@Mustafa GPIO的选择将由描述外围摄像头传感器和设备之间连接的硬件/电路板示意图决定SoC。