2017-01-09 90 views
1

STM32F070マイクロコントローラを搭載したUSBデバイス用のファームウェアを開発しています。 STM32CubeMXのベアメタル(no-OS)コードベースを生成し、USB CDC(通信デバイスクラス)としてデバイスを設定し、Windows 7,8、および9でVCP(仮想COMポート)として自動的に検出されるようにしました。 10.ドライバの詳細は、Windows usbser.sysドライバを使用していることを示しています。カスタムUSB VID/PID - Windows 7および8が自動的にusbser.sysドライバを選択します

USB CDC configuration in STM32CubeMX

USB Serial Device detected in Windows Device Manager

私はUSBベンダーID(VID)または製品ID(PID)やメーカー文字列を変更すると、それはまだすぐにWindowsの10デバイスマネージャでUSBシリアルデバイスとして検出され、 Windows 7または8ではサポートされていません.Windows 7および8は、Windows Updateでドライバを検索するのに長い時間を費やし、ドライバを見つけることができません。

USB VID、PID、およびManufacturer Stringのベンダー固有の値がある場合、Windows 7および8ホストがデバイス用にusbser.sysドライバを自動的にインストールできるようにデバイスファームウェア/ディスクリプタを変更するにはどうすればよいですか?

答えて

1

問題は.infファイルです。勝利10で勝利7、あなたがusbser.sysドライバにあなたのPIDとVIDを結ぶ独自の.infファイルを記述する必要が8で自動的にドライバusbser.sysをロードし、新しいもの(usbser.inf)がある、見https://msdn.microsoft.com/de-de/library/windows/hardware/ff538820%28v=vs.85%29.aspxhttps://msdn.microsoft.com/de-de/library/windows/hardware/dn707976%28v=vs.85%29.aspx

Windows 8.1以前のバージョンのオペレーティングシステムでは、USBシリアルデバイスがコンピュータ に接続されている場合、Usbser.sys は自動的に読み込まれません。ドライバをロードするには、 がモデムINF(mdmcpq.inf)を参照し、[インストール]と [Needs]セクションを含むINFを記述する必要があります。これらのセクションは、 サービスのインスタンス化、受信ボックスバイナリのコピー、およびアプリケーションがデバイスを見つけてそれに対話するために必要なデバイスインターフェイス GUIDを登録するために必要です。その INFは、デバイススタック内の下位のフィルタドライバとして "Usbser"を指定します。

ソース:https://msdn.microsoft.com/de-de/library/windows/hardware/dn707976%28v=vs.85%29.aspxhttps://msdn.microsoft.com/de-de/library/windows/hardware/dn707976%28v=vs.85%29.aspx

Do I need to write my own host side USB driver for a CDC devicehttps://community.nxp.com/thread/301439が勝利7と8の.infファイルの例のWindows 10は、それが一致するusbser.infという名前の新しいドライバが付属しています

+0

ドゥここ

はusbser.sysを使用するINFファイルの例です。私はWin7&8では、 '.inf'ファイルが{VID、PID、MfrString}に基づいて選択されていることを正しく理解しています。 WHQL認定を取得し、Windows Updateに '.inf'を追加しない限り、Windowsはデバイスを列挙すると自動的にドライバをインストールします。 WHQLの代わりに、デバイスにMicrosoft OSディスクリプタを使用して、ホストにWCIDを表示させることができます。その場合、ホストは 'usbser.sys'をドライバとして選択し、' .inf'は必要ありません全く? –

+1

.infファイル(WHQL)またはMS OSディスクリプタが必要です。 MS OSディスクリプタの場合、.infは必要ありません(http://www.microchip.com/forums/m707870.aspx)。したがって、MS OSの記述子では、これはカスタムなしで可能です.inf –

+0

INFファイルはWHQLと同じものではありません。 Windows 7以降では署名のないINFファイルを使用できます.Windows 8以上であっても、署名プロセスはコード署名証明書を購入した後で簡単に行うことができ、Microsoftからの承認を必要としません。 –

2

デバイスがUSB CDC ACM仕様に準拠しており、usbser.sysドライバがそれらのために読み込まれるようにします。

古いバージョンのWindowsで動作するUSB​​ CDC ACMデバイスを入手するには、ベンダーIDと製品IDを持つUSBデバイスが見えるときにusbser.sysを読み込むようにWindowsに指示するINFファイルを自分で入力する必要があります。 Windows 7、Vista、XPの場合、INFファイルを作成して顧客に配布するだけです。 Windows 8以降では、コード署名証明書を購入し、INFファイルに署名する必要があります(または、zadigやlibwdiなどのソフトウェアユーティリティを調べて署名チェックをバイパスする必要があります)。

署名はWHQLとは異なりますのでご注意ください。署名証明書を取得したら、待ち時間やマイクロソフトの承認なしに、ドライバに署名することができます。私はこの記事では、ドライバパッケージに署名する方法について多くのことを書いた

https://github.com/pololu/a-star/blob/master/drivers/a-star.inf

http://www.davidegrayson.com/signing/

+0

この数ヶ月間、USBの質問にお答えいただきありがとうございます。 :) –

+0

あなたは大歓迎です!私は自分のRSSリーダーで "usb"タグを監視します。 –

関連する問題