私は、.bin ファイルを USB 経由で当社の製品の 1 つにアップロードするために使用されるいくつかのテスト ソフトウェアを採用しています。製品には Atmel AT91SAM7X256 プロセッサが搭載されています。ソフトウェアはすべて c# で書かれており、Windows XP マシンで実行されています。
以前のプログラマー (もう会社にはいない) は、AT91BootDLL.dll という dll ファイルを使用して、ateml プロセッサの USB ポートをスキャンし、そのハンドルを取得します。次に、USB 接続を開き、読み取り、書き込みなどのさまざまなことを実行できます。これはすべて正常に機能しますが、接続されているものを見つけることができなくなります。これが発生すると、Windowsが検出に失敗するため、USB経由でPCに何も接続できなくなります。次に、PCをシャットダウンする必要があり、これを行うと、ウィンドウがフリーズすることにしました。
この dll または組み込みプログラミングの経験がないため、これらの結論しか得られません。プロセッサが何かを実行して USB ポートがロックアップするか、この dll ファイルが実行しています。
これを防ぐためにプログラムでできることはありますか?
アップロードしてからこのプロセッサから読み返すために、別の方法を知っている人はいますか?
以下は、スキャンして開く際に使用されるコードの一部です。
private static AT91BootDLL at91 = new AT91BootDLL();
private static unsafe int GetHandle()
{
// Create a dummy list for the dummy SAM-BA interface ;-)
byte* dummyName = stackalloc byte[100];
byte** dummyList = stackalloc byte*[100]; // { n1, n2, n3, n4, n5 };
for (int i = 0; i < 100; ++i)
{
dummyList[i] = dummyName;
}
// This function needs to be called before a USB connection can be opened.
at91.AT91Boot_Scan(ref *(byte*)dummyList);
// Now that the scan function has been called, we may open an USB connection.
int handle;
byte[] name = Encoding.ASCII.GetBytes("\\usb\\ARM0\x00");
at91.AT91Boot_Open(ref name[0], out handle);
return handle;
}