« 電子情報通信学会で発表してきました | トップページ | Cosmo-Z 64の改良 »

2023.03.10

コード39のエラーが出てドライバがインストールできない

最近、特電製品をお使いのお客様からデバイスドライバのインストールができないという問い合わせが増えています。

対象商品は、MITOUJTAG(Pocket JTAG Cable)と、Spartan-6、Spartan-7評価ボードです。

これらの商品はCypressのCY7C68013(通称EZ-USB FX2)を使用しているのですが、そのドライバとしては非常に古いものをベースに使用しています。

「このハードウェアのデバイスドライバーを読み込むことができません。ドライバーが構成されているか、ドライバーがない可能性があります(コード39)

と表示されてしまいます。

この原因ですが、Windowsのセキュリティのコア分離というものが関係しているようです。詳しいことはよくわからないのですが、カーネルモードに入ってしまうと他のカーネルモードのプログラムのデータを読んだりできる(というか物理メモリ上のすべての領域に自由にアクセスできる)ので、そういうことができないようにカーネル内(?)を分離するということなのでしょう。

それに対応していない古いドライバはインストールをさせてもらえないようです。

Windows11ではデフォルトでONになっていて、Windows10では有効化することができるというものだそうです。

コード39のエラーが出てドライバがインストールできない場合は以下の手順で無効化できます。(あるいはWindows10でコード分離を有効化できます)

まず、Windowsの「更新とセキュリティ」から「Windowsセキュリティ」を開きます。そして、デバイスセキュリティを開きます。

Sec1

デバイスセキュリティの中にコア分離があります。

コア分離の詳細を押して中に入ります。

Sec2

このメモリ整合性をオンにすればセキュリティは高まり、オフにすれば旧式のドライバもインストールできるようになります。

Sec3

Windows10で有効化できるかと思い、「再スキャン」を押してみると・・・

Sec5

と怒られてしまいました。

互換性のないドライバを確認する、を押してみると、

Sec4

全部、特電の製品じゃん!

これはいかんですね。

EZ-USB周りのドライバをそろそろCYUSBベースに置き換えないといけないようです。

 

結論を言うと、

コード39のエラーが出た場合は、上記の「メモリの整合性」をオフにすればよい

ということです。

 

|

« 電子情報通信学会で発表してきました | トップページ | Cosmo-Z 64の改良 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 電子情報通信学会で発表してきました | トップページ | Cosmo-Z 64の改良 »