これを死からよみがえらせて完成させます。
詳細は不明ですが、起動時にデバイス自体がクラッシュしていたことが判明しました。 USBラインでuBootが生成したチャターに関係していたと思います。基本的に、uBoot はすべてのハードウェア ライン (USB を含む) をポーリングして、起動可能なイメージを見つけました。このポーリングは無害であるはずですが、USB デバイスのファームウェアはそれを処理できず、すぐにクラッシュし、ハード リセット (物理的にデバイスのプラグを抜いて再度差し込む) まで操作できなくなりました。
このバグをデバイスの製造元に報告しましたが、この問題 (明らかに私たちだけに影響を与えた) の修正が優先されるという兆候を受け取っていなかったため、0.50 ドルの修正に頼りました.
これを解決する方法は非常に独創的でしたが、完璧に機能しました。シンプルな GPIO 制御リレーを作成し、このリレーを介して USB 電力線を接合しました。基本的に、システムはリレーを「オフ」にして起動したため、USB デバイスに電力が供給されませんでした。システムは正常に起動し、スタートアップ スクリプトで GPIO ラインを切り替えてリレーをアクティブにしました。 USB デバイスは、uBoot からの干渉を受けずに、正常に起動できました。
デバイスが最初の起動時に OS とチャットしようとしたように聞こえますが、その時点ではスタックの準備ができていなかったため、ハブから「ログアウト」しました。ブート プロセスの最後にセクションを追加して、ドライバーを削除し、再読み込みを強制することを検討してください。 (modprobe -vr ehci_hcd; modprobe -v ehci_hcd
USB2.0なら uhci_hcd
USB1.x の場合)
もう 1 つの可能性は、Gumstix がシャットダウンしたときに、デバイスが適切にサポートされていない省電力モードに移行するようにデバイスに指示したことです。 Windows は、ベンダーがテストしたすべての可能性がある Windows とは異なることを行う場合があります。これをテストするには、システムの再起動中にデバイスをサスペンドまたは電源オフしないようにデバイス ドライバーに指示する必要がある場合があります。開始するには、USB セクションの省電力に関する Linux カーネル ドキュメントを参照してください。