我为STM32h7编写了一个USB设备驱动程序,并使用Struct gpio_chip结构将设备注册为GPIO。我的问题在这里:
我将 NUCLEO-H743ZI 板上的 USB 外设配置为通过 QUBE-MX 进行通信的 CUSTUM HID CLass。我的意思是linux usb dirver和设备的usb端口之间的通信是在此类中完成的。对于这种类型的通信来说是这样吗?
当我使用以下命令将 GPIO(例如 gpio496)导出到内核空间时:
echo 496 > /sys/class/gpio
然后我想设定方向
echo out > /sys/class/gpio/gpio496
该进程被终止,我的 ubuntu 挂起,拔掉设备后设备正在连接。
答案1
我为STM32h7编写了一个USB设备驱动程序,并使用Struct gpio_chip结构将设备注册为GPIO。我的问题在这里:
我假设你写了一个内核驱动程序(.ko)......你是吗?
当我使用以下命令将 GPIO(例如 gpio496)导出到内核空间时: echo 496 > /sys/class/gpio 然后我想使用 echo out > /sys/class/gpio/gpio496 设置方向
阅读这个文档,看起来你是对的。
该进程被终止,我的 ubuntu 挂起,拔掉设备后设备正在连接。我的问题是什么?
可能是设备驱动程序代码错误导致内核恐慌或内核错误。要确认/了解更多详细信息,请尝试: 1. 直接从文本控制台启动测试(ctrl-alt+F1 应该有效):由于内核会将其错误转储到控制台上,因此您会看到它。
或者
2. 使用 root 身份将内核日志转储到终端窗口中cat /dev/kmsg
。
请注意,2. 可能不起作用,具体取决于几个因素......如果可以的话,更喜欢 1.。
答案2
我的问题是我正在使用中断端点发送批量数据。