Page 2 of 3

Re: luckfox pico plus开发板 驱动pwdn-gpio疑问

Posted: 2024-09-09 8:38
by wenjie
wenjie wrote: 2024-09-09 8:10
Crocodile wrote: 2024-09-09 7:55 这块得结合源码执行分析了,条件允许的话请用逻辑分析仪或者示波器测,可能在pwdn-gpio引脚一开始拉高电平后又被驱动拉低了,比如您的摄像头损坏了或者排线没接好,i2c通讯时没有获取到sensor的id直接调用__sc3336_power_off把pwdn-gpios 给重新拉低。
有没有其他地方使用到gpio1_C7_d0,然后给他拉低的呢,我power_off那也给他拉高了,还是测不到电压
pwdn-gpios = <&gpio1 23 1>;驱动里sc3336->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_ASIS);读的pwdn是这个引脚吗?

Re: luckfox pico plus开发板 驱动pwdn-gpio疑问

Posted: 2024-09-09 8:39
by wenjie
wenjie wrote: 2024-09-09 8:10
Crocodile wrote: 2024-09-09 7:55 这块得结合源码执行分析了,条件允许的话请用逻辑分析仪或者示波器测,可能在pwdn-gpio引脚一开始拉高电平后又被驱动拉低了,比如您的摄像头损坏了或者排线没接好,i2c通讯时没有获取到sensor的id直接调用__sc3336_power_off把pwdn-gpios 给重新拉低。
有没有其他地方使用到gpio1_C7_d0,然后给他拉低的呢,我power_off那也给他拉高了,还是测不到电压
sc3336->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_ASIS);读的是设备树中的pwdn-gpios = <&gpio1 23 1>;引脚?

Re: luckfox pico plus开发板 驱动pwdn-gpio疑问

Posted: 2024-09-09 8:54
by Crocodile
把 sc3336 整个节点先关闭了,用sysfs先去测试能不能正常拉高拉低,如果可以就说明没有被其他驱动占用;
或者执行

Code: Select all

 mount -t debugfs none /sys/kernel/debug
 cat /sys/kernel/debug/gpio
查看gpio的占用情况后使用

Code: Select all

iomux 1 23 #预期返回0
查看引脚复用情况,确定都没问题就根据源码排查问题了。
还有我建议调试驱动还是得先确保设备在硬件上连接没有问题,防止错过什么通信导致哪个关键的检测失败,同时还有一个潜在的风险就是gpio1_PC7 是 3.3V 而默认是1.8V输出有烧坏摄像头的风险

Re: luckfox pico plus开发板 驱动pwdn-gpio疑问

Posted: 2024-09-09 9:07
by Crocodile
wenjie wrote: 2024-09-09 8:39
wenjie wrote: 2024-09-09 8:10
Crocodile wrote: 2024-09-09 7:55 这块得结合源码执行分析了,条件允许的话请用逻辑分析仪或者示波器测,可能在pwdn-gpio引脚一开始拉高电平后又被驱动拉低了,比如您的摄像头损坏了或者排线没接好,i2c通讯时没有获取到sensor的id直接调用__sc3336_power_off把pwdn-gpios 给重新拉低。
有没有其他地方使用到gpio1_C7_d0,然后给他拉低的呢,我power_off那也给他拉高了,还是测不到电压
sc3336->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_ASIS);读的是设备树中的pwdn-gpios = <&gpio1 23 1>;引脚?
这个直接获取到设备后打印信息验证即可,相关操作请直接使用搜索引擎,详细的源码分析请多用内核调试手段,最简单的就是多打印

Re: luckfox pico plus开发板 驱动pwdn-gpio疑问

Posted: 2024-09-09 9:25
by wenjie
Crocodile wrote: 2024-09-09 8:54 把 sc3336 整个节点先关闭了,用sysfs先去测试能不能正常拉高拉低,如果可以就说明没有被其他驱动占用;
或者执行

Code: Select all

 mount -t debugfs none /sys/kernel/debug
 cat /sys/kernel/debug/gpio
查看gpio的占用情况后使用

Code: Select all

iomux 1 23 #预期返回0
查看引脚复用情况,确定都没问题就根据源码排查问题了。
还有我建议调试驱动还是得先确保设备在硬件上连接没有问题,防止错过什么通信导致哪个关键的检测失败,同时还有一个潜在的风险就是gpio1_PC7 是 3.3V 而默认是1.8V输出有烧坏摄像头的风险
log如下,可以使用命令让
[root@luckfox root]# mount -t debugfs none /sys/kernel/debug
[root@luckfox root]# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-31, parent: platform/ff380000.gpio, gpio0:

gpiochip1: GPIOs 32-63, parent: platform/ff530000.gpio, gpio1:
gpio-33 ( |pa-ctl ) out lo
gpio-55 ( |pwdn ) in lo ACTIVE LOW

gpiochip2: GPIOs 96-127, parent: platform/ff550000.gpio, gpio3:
gpio-118 ( |work ) out lo

gpiochip3: GPIOs 128-151, parent: platform/ff560000.gpio, gpio4:
[root@luckfox root]# iomux 1 23
mux get (GPIO1-23) = 0

应该如何使用sysfs去拉高gpio1_c7_d0,
这个是我参考文档输入的命令,但是报错了
echo 55 > /sys/class/gpio/export
sh: write error: Device or resource busy

Re: luckfox pico plus开发板 驱动pwdn-gpio疑问

Posted: 2024-09-09 10:20
by Crocodile
显示了gpio-55 ( |pwdn ) in lo ACTIVE LOW就是被驱动占用了

Re: luckfox pico plus开发板 驱动pwdn-gpio疑问

Posted: 2024-09-09 11:58
by wenjie
Crocodile wrote: 2024-09-09 10:20 显示了gpio-55 ( |pwdn ) in lo ACTIVE LOW就是被驱动占用了
[root@luckfox root]# iomux 1 23
mux get (GPIO1-23) = 0
[root@luckfox root]# cat /sys/class/gpio/gpio55/value
1
使用sysfs配置为高电平,可以测出来电压,但是为什么iomux 1 23查看gpio1_C7 还是0

Re: luckfox pico plus开发板 驱动pwdn-gpio疑问

Posted: 2024-09-09 13:01
by Crocodile
iomux 是查看复用功能的不是查看电平的

Re: luckfox pico plus开发板 驱动pwdn-gpio疑问

Posted: 2024-09-10 1:20
by wenjie
Crocodile wrote: 2024-09-09 13:01 iomux 是查看复用功能的不是查看电平的
那为什么我通过驱动的方式去让gpio1_C7拉高,不能拉高呢,是sc3336驱动后又给gpio拉低了?

Re: luckfox pico plus开发板 驱动pwdn-gpio疑问

Posted: 2024-09-10 2:08
by Crocodile
原因需要您自己去找了,我并不知道您做了哪些调整,也有可能有些调整您没有注意到;驱动经过验证是没有问题的,您自己想要对其做调整和实验需要确保您对驱动已经有了足够的了解,我只能根据想象给予推测能提供的帮助有限。