STM32h7用のUSBデバイスドライバを作成し、Struct gpio_chip構造を使用してデバイスをGPIOとして登録しました。私の質問はここにあります:
NUCLEO-H743ZIボードのUSB周辺機器をQUBE-MX経由で通信するCUSTUM HID CLASsで構成しました。このクラスは、Linux USBドライバとデバイスのUSBポート間の通信が行われることを意味します。この種のコミュニケーションにもそれは本当ですか?
以下を使用してGPIO(gpio496など)をカーネルスペースにエクスポートする場合:
echo 496 > /sys/class/gpio
それでは方向を決めたい
echo out > /sys/class/gpio/gpio496
プロセスが終了し、Ubuntuが中断され、デバイスが切断された後にデバイスが接続されます。
答え1
STM32h7用のUSBデバイスドライバを作成し、Struct gpio_chip構造を使用してデバイスをGPIOとして登録しました。私の質問はここにあります:
私はあなたがカーネルドライバ(.ko)を書いたと仮定します...そうですか?
echo 496> /sys/class/gpioを使用してGPIO(gpio496など)をカーネルスペースにエクスポートするときは、echo out> /sys/class/gpio/gpio496を使用して方向を設定しようとしています。
読むこの文書、あなたが正しいと思われます。
プロセスが終了し、Ubuntuが中断され、デバイスが切断された後にデバイスが接続されます。私の問題は何ですか?
カーネルパニックやカーネルエラーを引き起こすデバイスドライバコードのバグかもしれません。詳細を確認/取得するには、以下を試してください。 1.テキストコンソールで直接テストを開始します(ctrl-alt + F1が機能する必要があります)。カーネルはコンソールにエラーをダンプするので、これを見ることができます。
または
2. root IDを使用してカーネルログをターミナルウィンドウにダンプしますcat /dev/kmsg
。
2.はいくつかの要因によって動作しない場合があります。可能であれば1.を好みます。
答え2
私の問題は、バルクデータを転送するために割り込みエンドポイントを使用していることです。