例としてOSFmountプログラムを使用して仮想フラッシュドライブを作成します。 コンピューターで仮想USBドライブを作成しますどこでTriomaを購入できますか

USBフラッシュドライブが必要な場合に状況が発生することがありますが、手元にありません。 たとえば、一部のアカウンティングおよびレポートプログラムでは、実行するために外部ストレージデバイスが必要です。 このような状況では、情報の仮想ストレージを作成できます。

特別なソフトウェアを使用して、これはいくつかの方法で行うことができます。 それぞれを段階的に考えてみましょう。

方法1:OSFmount

この小さなプログラムは、フラッシュドライブが手元にない場合に非常に役立ちます。 これは、どのバージョンのWindowsでも機能します。

プログラムをダウンロードしたら、次のようにします。



このプログラムでの作業中に、追加の機能が必要になる場合があります。 これを行うには、アイテムのメインウィンドウに移動します 「ドライブアクション」..。 そして、次のオプションを使用することが可能になります。

  • マウント解除-ボリュームをマウント解除します。
  • フォーマット-ボリュームをフォーマットします。
  • メディアを読み取り専用に設定-記録を禁止します。
  • Extendsize-仮想デバイスのサイズを拡張します。
  • Savetoimagefile-目的の形式で保存するのに役立ちます。

方法2:仮想フラッシュドライブ

上記の方法の良い代替手段。 このプログラムを使用すると、仮想フラッシュドライブを作成するときに、そのドライブの情報をパスワードで保護できます。 これの利点は、古いバージョンのWindowsで機能することです。 したがって、コンピュータにWindows XP以下がインストールされている場合、このユーティリティを使用すると、コンピュータに仮想ストレージデバイスをすばやく準備できます。

このプログラムの使用手順は次のようになります。

  1. 仮想フラッシュドライブをダウンロードしてインストールします。
  2. メインウィンドウで、ボタンをクリックします 新しいマウント.
  3. ウィンドウが表示されます 「新しいボリュームを作成する」、仮想メディアを作成するためのパスを指定して、をクリックします "OK".


ご覧のとおり、このプログラムは非常に使いやすいです。

方法3:ImDisk

これは、最も人気のある仮想フロッピーディスクソフトウェアの1つです。 イメージファイルまたはコンピュータメモリを使用して、仮想ディスクを作成します。 ロード時に特別なキーを使用すると、フラッシュドライブは仮想リムーバブルディスクとして表示されます。


方法4:クラウドストレージ

技術の発展により、仮想フラッシュドライブを作成し、それらの情報をインターネット上に保存することが可能になりました。 このメソッドは、インターネットに接続されている任意のコンピューターから特定のユーザーが利用できるファイルを含むフォルダーです。

このようなデータストレージには、Yandex.Disk、Google Drive、CloudMail.ruが含まれます。 これらのサービスを使用する原則は同じです。

YandexDiskの操作方法を考えてみましょう。 このリソースを使用すると、最大10GBの情報を無料で保存できます。



このような仮想ストレージメディアを使用すると、データを完全に管理できます。フォルダにグループ化したり、不要なデータを削除したり、他のユーザーとリンクを共有したりすることもできます。

マイクロシステムに基づくさまざまなデバイスの開発は、実際のコンピューターオタクにふさわしい職業です。 間違いなく、ガジェットの便利な機能は、コンピューターに接続するためのUSBインターフェイスです。 しかし、AVRチップがUSBハードウェアをサポートしていない場合はどうなりますか?

V-USB:サイズが重要

独自のガジェットを開発する場合、ガジェットをコンピューターに接続する際に問題が発生することがよくあります。 LPTポートとCOMポートは、ラップトップは言うまでもなく、PCマザーボードでは今ではエキゾチックであり、これらのインターフェイスはかなり前に姿を消しました。 したがって、最近のコンピューターには、USBインターフェースに代わるものは事実上ありません。

チップのリソースが100%使用されている場合は、ユニバーサルシリアルバスをハードウェアでサポートしているデバイスをすぐに探すことをお勧めします(このようなマイクロコンピューターはどのメーカーの製品ラインにもあります)。 それ以外の場合は、ソフトウェアUSBを使用できます。

Atmelマイクロシステムの場合、低速USB1.1デバイスのソフトウェア実装を提供する素晴らしいV-USBプロジェクトがあります。 V-USBコードは、少なくとも2KBのフラッシュと128バイトのRAMを備え、12でクロックされるすべてのAVRデバイスで機能します。 12.8; 15; 16; 16.8または20MHz。

この製品は、オープンソースのGPLライセンスの下でも商用ベースでも使用できます。 独自のUSBデバイスを開発するには、通常、ライセンスなども購入する必要があります。 しかし、V-USBのスタッフもこれに対応し、ベンダーIDと製品IDのペアを取得して、誰でも使用できるようにしました。

USBバスをマイクロコンピュータに接続するためのハードウェア接続は非常に簡単です。 デバイスがあまり消費しない場合は、バスから直接電力を供給できます(コンピューターのUSB電力線は最大500 mAの電流を供給できると考えられています)。 データライン(D +およびD–)は3.6Vの信号レベルを使用するため、電流制限抵抗に加えて、チップ上の5Vロジックと一致するゼナーダイオードが必要です。 接続のタイプを示すには、D–ラインへの1.5kOhmの抵抗を介して供給電圧を「プルアップ」する必要があります。

USBを介してペアリングするための代替オプションは、適切な安定化マイクロ回路または1対のダイオードを使用してコントローラーの供給電圧を下げることです。 最新の回路図は、V-USBプロジェクトのWebサイトにあります。

USBtinyプログラマー

AVRマイクロプロセッサで利用できるさまざまなプログラマがあります。 USBtinyは、V-USBと同様のUSBのソフトウェア実装が含まれているため、ここで部分的に言及されています。 このプログラマーの回路は単純です。バージョン2には2つのマイクロ回路が含まれ、最初のバージョンには1つだけが含まれています(ATtiny2313チップ自体)。 ウェブサイトの詳細な説明とシンプルなアクセサリーのおかげで、このデバイスは初心者でも簡単に作成できます。 USBtinyは、AVRマイクロシステムのプログラミングに使用される一般的なavrdudeプログラムと互換性があります。

唯一の問題は、ファームウェアをプログラマーチップにロードすることです。これには、プログラマーが必要です。 LPTポートを備えたコンピューターをお持ちの場合は、FBPRGオプションの1つ、別名「5本のワイヤー」を作成できます。

スレッドの準備

最も単純なUSBガジェットファームウェアを実装するために必要なソフトウェアツールは非常に洗練されています。gcc-avrコンパイラ、avr-libcライブラリ、avrdudeプログラマ、およびAVR用に設定されたbinutilsです。 Debian / Ubuntuでは、必要なものはすべて1つのコマンドでインストールされます。

$ sudo apt-get install avrdude binutils-avr gcc-avr avr-libc

広大なインターネット上で、V-USBとlibusb(英語)に関する非常に詳細なマニュアルを簡単に見つけることができます。 マニュアルによると、プロジェクトにUSBサポートを追加するには、最新のV-USBバージョンのアーカイブからusbdrvフォルダーが必要になります。 このフォルダのルートには、usbconfig-prototype.h構成テンプレートがあります。 このファイルのコピーを作成し、usbconfig.hという名前を付ける必要があります。 次へ-usbconfig.hを修正し、そのラインがI / Oに使用されるポート(D)、直接ライン番号D +(2)およびD–(3)、およびチップが動作する周波数(12 MHz)を示します(ATtiny2313 ):

#define USB_CFG_IOPORTNAME D #define USB_CFG_DMINUS_BIT 3 #define USB_CFG_DPLUS_BIT 2 #define USB_CFG_CLOCK_KHZ 12000

V-USBデバイスライセンスを使用するために、製造元とデバイスの数値IDを変更する必要はありません。 ただし、シンボリック名は好みに合わせて選択できます(同じコンピューターに接続されている複数のV-USBデバイスを区別できるようになります)。

#define USB_CFG_VENDOR_ID 0xc0、0x16 #define USB_CFG_DEVICE_ID 0xdc、0x05 #define USB_CFG_VENDOR_NAME "n"、 "e"、 "t"、 "s"、 "4"、 "g"、 "e"、 "e"、 "" 、 "s"、 "。"、 "c"、 "o"、 "m" #define USB_CFG_VENDOR_NAME_LEN 14 #define USB_CFG_DEVICE_NAME "U"、 "S"、 "B"、 "e"、 "x"、 "a" 、 "m"、 "p"、 "l"、 "e" #define USB_CFG_DEVICE_NAME_LEN 10

さまざまなガジェット

デバイスのアイデアはありますか? 急いではんだ付けしてコーディングしないでください。しかし、おそらく誰かがすでにこれを行っているようです。 既製のスキームとソースを使用できない場合は、少なくとも最初から始める必要はありません。

たとえば、V-USBプロジェクトは、そのライセンスポリシーのおかげで、既製の(自由に配布されるものを含む)ソリューションのまともな基盤を蓄積してきました。 ここでは、キーボード、ジョイスティック用のUSBアダプター、ゲームパッド(SNES / NES、Nintendo 64、ZX Spectrumジョイスティック、Sony PlayStation 1/2などの珍しいものを含む)などのさまざまな実装を見つけることができます。 DMXアダプター、仮想COMおよびUARTポート、i2c、サーボ、DCF77、IRワイヤレスインターフェイス-より多くの新しいデバイスをPCに接続するのに役立つすべてのもの。 ロガー、センサーとセンサー用のプラットフォーム、LCDディスプレイ用のアダプター、プログラマーとローダーも農場で役立ちます。

チップのプログラムは初歩的です!

USBバスを介して通信する場合、コンピュータは制御要求メッセージを定期的に送信するメインデバイスです。 コントローラはそれぞれスレーブであり、要求に応答する必要があります。 制御メッセージの形式は、usbdrv.hファイルのusbRequest_t構造によって決定されます。

Typedef struct usbRequest(uchar bmRequestType; uchar bRequest; usbWord_t wValue; usbWord_t wIndex; usbWord_t wLength;)usbRequest_t;

usbdrvフォルダーと同じレベルにmain.cファイルを作成し、その中に必要なヘッダーファイル、定義、および変数を記述してみましょう。

#include #include #include #include "usbdrv.h" #define F_CPU 12000000L // MK周波数#include #define DATA_OUT 1 //コマンドを送信#defineDATA_IN 2 //コマンドを受信//バッファ静的ucharreplyBuf \u003d "Hello World!"; static uchar dataLength \u003d 0、dataReceived \u003d 0;

main.cで、新しい要求が受信されたときに自動的に呼び出されるusbFunctionSetup関数をオーバーライドします。

USB_PUBLIC uchar usbFunctionSetup(uchar data)(usbRequest_t * rq \u003d(void *)data; switch(rq-\u003e bRequest)(case DATA_OUT://プロセスデータ送信コマンドusbMsgPtr \u003d replyBuf; //バッファリターンサイズを指定します(replyBuf); / /バッファケースのサイズを返しますDATA_IN://データを受信するコマンドを処理しますdataLength \u003d(uchar)rq-\u003e wLength.word; // dataReceivedの長さを取得します\u003d 0; // usbFunctionWriteへの呼び出しが多くなりますif(dataLength\u003e sizeof(replyBuf))// オーバーフローチェックdataLength \u003d sizeof(replyBuf); return USB_NO_MSG; // return 255)return 0;)

リストからわかるように、データをコンピューターに送信する最も簡単な方法は、usbFunctionSetupをデータが配置されているRAMバッファー(replyBuf)へのusbMsgPtrポインターの値に設定し、その長さを返すことです。 バッファサイズは254バイトを超えてはなりません。 128バイトのRAMを備えたATtiny2313の場合、これで十分です。 より機能的なデバイスの場合、2番目の方法があります-usbFunctionRead関数をオーバーライドします。

データを取得するには、最初に、usbFunctionSetup関数のリクエストのwLengthフィールドからメッセージの長さを抽出し、それをグローバルdataLength変数に格納する必要があります。 次に、main.cで、受信したデータを処理するように設計され、usbFunctionSetupがUSB_NO_MSG(255)を返した場合に自動的に(そして明らかに数回)呼び出されるusbFunctionWrite関数をオーバーライドする必要があります。

USB_PUBLIC uchar usbFunctionWrite(uchar * data、uchar len)(uchar i; //受信したデータのチャンクを(i \u003d 0; dataReceived)のバッファーに保存します< dataLength && i < len; i++, dataReceived++) replyBuf = data[i]; return (dataReceived == dataLength); }

実際、usbFunctionWrite関数は、replyBufバッファーに受信データを入力します。

ちなみに、このメソッドを機能させるには、usbconfig.hに変更を加える必要があります。

#define USB_CFG_IMPLEMENT_FN_WRITE 1

さて、ファームウェアの最後の機能はメインです:

Int main()(usbInit(); // USBを初期化しますusbDeviceConnect(); //デバイスを接続しますsei(); //割り込みを有効にします//無限ループで制御メッセージを待ちますwhile(1)usbPoll(); return 0;)

USART / UARTの使用

ソフトウェア/ハードウェアUSBの優れた代替手段は、チップ内で人気のあるUSART / UARTインターフェイスを使用し、このプロトコルをUSBに変換するサードパーティを使用することです。これは、たとえばFT232RLチップに基づいて実行できます。

Libusb:服もヌードも

あなたは尋ねます:あなたはUSBデバイスを接続するためにコンピュータのオペレーティングシステムのためのドライバを書く必要がありますか? libusbを使用する場合は、本格的なカーネルモジュールを実装せずに実行できます。 Libusbはオープンソースライブラリであり、最初にバス上のデバイスを見つけ、次にそれとデータを交換することをすばやくプログラムできます。

Linuxの場合、ライブラリと必要なヘッダーファイルはソースコードから取得できます。 ディストリビューションの標準リポジトリを使用することをお勧めします。 たとえば、Debian / Ubuntuの場合、次のようになります。

$ sudo apt-get install libusb-dev

Windowsにはlibusbの移植版libusb-win32もあります。 プロジェクトの名前とは異なり、Microsoftの64ビットオペレーティングシステムもサポートされています(バージョン1.2.0.0以降)。

しかし、libusbは会話の別のトピックです。 あなたはPCプログラミングに精通していて、自分でそれを理解できると思います。 したがって、簡単に説明します。 ファイルusbtest.cを作成し、コンテンツの入力を開始します。 まず、必要なヘッダーファイルと定義:

#include [...] //コンピューターの場合、コマンドの意味は逆になりますが、//指定は同じままです#define DATA_OUT 1 #define DATA_IN 2

デバイスを初期化するためのUsbOpenDevice関数:

Usb_init(); // USBを初期化しますusb_find_busses(); //バスを検索しますusb_find_devices(); //デバイスを検索します//(bus \u003d usb_get_busses(); bus; bus \u003d bus-\u003e next)(//バス上のすべてのデバイスを調べますfor(dev \u003d bus-\u003e devices; dev; dev \u003d dev-\u003e next)(//ベンダーIDと製品IDが一致しない場合... if(dev-\u003e記述子.idVendor!\u003dベンダー|| dev-\u003e記述子.idProduct!\u003d製品)続行; // ...この反復をスキップ// デバイス記述子を取得してみてくださいif(!(Handle \u003d usb_open(dev)))(fprintf(stderr、 "%s \\ n"、usb_strerror()); continue;)return handle; //記述子を返す))//デバイスが見つかりません NULLを返します。

ご覧のとおり、usbOpenDeviceのパラメーターは、製造元とデバイスの数値識別子です。 デバイスがバス上に存在する場合、その記述子が返されます。 V-USBに複数のデバイスがある場合は、ベンダーと製品のシンボリック名のチェックを追加する必要があります。

そして、usbtestコンソールユーティリティの主な機能:

Int main(int argc、char ** argv)(//デバイスハンドルusb_dev_handle *ハンドル\u003d NULL; int nBytes \u003d 0; char buffer; //デバイスハンドルを探しています\u003d usbOpenDevice(0x16C0、0x05DC); if(handle \u003d\u003d NULL) (fprintf(stderr、 "Could not find USB device!\\ n"); exit(1);)// Out引数-チップからデータを取得if(strcmp(argv、 "out")\u003d\u003d 0)(nBytes \u003d usb_control_msg (handle、USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN、DATA_OUT、0、0、(char *)buffer、sizeof(buffer)、5000); printf( "Got%d bytes:%s \\ n"、nBytes、buffer); // 引数内-文字列(次の引数)を送信)else if(strcmp(argv、 "in")\u003d\u003d 0 && argc\u003e 2)(nBytes \u003d usb_control_msg(handle、USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT、DATA_INg、0、0、argc strlen(argv)+ 1、5000);)if(nBytes< 0) fprintf(stderr, "%s\n", usb_strerror()); usb_close(handle); // Закрыть дескриптор return 0; }

ここで、usb.hインクルードファイルで宣言されているusb_control_msg関数がボールを支配します。 多数のパラメーターがあり、実際にそれらの制御メッセージを作成し、その処理はマイクロコンピューターのファームウェアに実装されます。

プロテウス休憩

USBのソフトウェア実装を備えたデバイスを設計する場合、人気のあるProteusISIS配線シミュレータは役に立ちません。 そのUSBエミュレーターは、ユニバーサルシリアルバス(AT90USB646やAT90USB1286など)をハードウェアでサポートするチップのみをサポートします。

収集、フラッシュ、テスト

以下は、小さいながらも非常に便利なMakefileです。これを使用すると、main.cおよびusbtest.cからのmakeコマンドを使用して、チップのファームウェア(main.hexおよびusbtestユーティリティバイナリ)を簡単に取得できます。

CC \u003d avr-gcc OBJCOPY \u003d avr-objcopy CFLAGS \u003d -Wall -Os -Iusbdrv -mmcu \u003d attiny2313 OBJFLAGS \u003d -j .text -j .data -O ihex OBJECTS \u003d usbdrv / usbdrv.o usbdrv / oddrvug.o usbdrv / oddrvug。 .o main.o CMDLINE \u003d usbtest#目的:すべてをビルドする:main.hex $(CMDLINE)#コンピューター用のユーティリティをビルドする$(CMDLINE):usbtest.c gcc -I ./libusb/include -L ./libusb/lib / gcc -O -Wall usbtest.c -o usbtest -lusb#バイナリからプロジェクトをクリーンアップします。clean:$(RM)* .o * .hex * .elf usbdrv / *。o#elfファイル%からファームウェアファイルを取得します。 hex:%。elf $(OBJCOPY)$(OBJFLAGS)$< [メール保護] #elfファイルの構築main.elf:$(OBJECTS)$(CC)$(CFLAGS)$(OBJECTS)-o [メール保護] #V-USB $(OBJECTS)ライブラリファイルをビルドします:usbdrv / usbconfig.h#Cをオブジェクトコードに%.o:%。c $(CC)$(CFLAGS)-c $< -o [メール保護] #オブジェクトコードへのasm%.o:%。S $(CC)$(CFLAGS)-xアセンブラ-with-cpp -c $< -o [メール保護]

usbtinyプログラマーを使用してファームウェアをマイクロコンピューターにアップロードするには、次のコマンドを入力します。

$ sudo avrdude -p t2313 -c usbtiny -e -U flash:w:main.hex:i -U lfuse:w:0xef:m

avrdudeでは、ヒューズはあまり明確ではありませんが、オンライン計算機の1つで簡単に計算できます。


デバイスをコンピューターに接続し、それがどのように機能するかを確認します(outパラメーターを指定したusbtestは文字列を読み取り、in-指定された文字列をチップバッファーに書き込みます)。

$ sudo ./usbtest in all_ok $ sudo ./usbtest out

タールのスプーン

ソフトUSBは万能薬ではありません。 ソフトウェアの実装には通常、チェックサムやチャネル対称性チェックがないなど、ノイズ耐性に悪影響を与えるいくつかの単純化があります。 また、通常、ソフトウェアライブラリは低速USBモードを使用します。 そして、USBライブラリのコードは、チップのすでに小さいメモリを「食べます」。

のぞき...

ロジックレベルでは、USBプロトコルは本質的にマルチレイヤーパケットデータ転送です。 Wiresharkネットワークプロトコルアナライザーを使用して、これを確認するのは簡単です(同時に、USBについて多くの興味深いことを学ぶことができます)。 最初にUSBモニタードライバーをダウンロードする必要があります。

$ sudo modprobe usbmon

これで、WiresharkインターフェースのリストからUSBバスを選択できます。 たとえば、ログでデバイスのバス番号を確認できます。

結論

コンピューターとAVRマイクロコンピューターの間でデータを転送する方法を学んだ後、エレクトロニクスへの情熱が新たな活力に火をつけ、多くのオリジナルで便利なデバイスが生まれることを願っています。 この難しいが興味深い分野であなたが成功することを願うだけです。

Olof Lagerkvistプロジェクトは、ディスクをエミュレートするための優れたプログラムですが、ディスクはすべての人をエミュレートできますが、誰もがUSBフラッシュドライブまたはフロッピーディスクの作成を自慢できるわけではないためです。 ディスクは仮想メモリに作成され、物理的にファイルイメージにアンロードできます。 インストール後、プログラムはPCのコントロールパネルから利用できます。

「OK」をクリックすると、すべての仮想イメージの準備が整います。

画像は必要に応じて保存およびマウントできます。 どこで役に立ちますか? たとえば、怠惰な場合は、CryptoProの証明書をそのような仮想フラッシュドライブにアップロードできます。))または、キャッシュやページングファイルなどを保存するためのRAM内のディスクとして使用します。
代替GUIもあります-

自動接続:
エコーオフ
自動マウントのために自動ロードするレム
c:\\ WINDOWS \\ system32 \\ imdisk.exe -a -f "%PROGRAMFILES%\\ flash.img" -m f:-o rem

いくつかのコマンドラインオプション:

imdisk.exe -e -s 300M -m B:-ディスクBを300MB増やします

imdisk -a -t file -o ro -m y:-f C:\\ Boot.img -ドライブYを使用してBoot.imgイメージをマウントします。読み取り専用

imdisk -a -t file -m y:-f C:\\ Boot.img -Boot.imgイメージをドライブYにマウントし、読み取り/書き込みのみ

imdisk -d -m y:-ドライブYをアンマウントします

imdisk -a -s 150M -m#:-p "/ fs:ntfs / y / q / v:imdisk -150 MBのディスク、最初の空きドライブレター、NTFSフォーマット、imdiskディスクラベルを作成します

imdisk -a -s 10%-m#:-p "/ fs:ntfs / y / q / v:imdisk -前のものと同じですが、サイズのみが空きメモリの10パーセントとして示されています。

imdisk -a -s -500M -m#:-p "/ fs:ntfs / y / q / v:imdisk -前のものと同じですが、サイズのみがマイナス記号で示されます。つまり、空きメモリの量から指定されたサイズを引いたものに等しくなります。 1200 MBの空きメモリがある場合、ディスクサイズは1200-500 \u003d 700MBになります。

imdisk.exe -a -t proxy -o ip -f 127.0.0.1:80 -m Z: -インターネットで見つかったサーバーでの使用は、実際にはチェックされませんでした。

A-Wirt接続。 ディスク。

D-仮想を無効にします。 ディスク。

E-仮想の編集。 ディスク。

_________________________

B-オフセットを指定します。つまり、ディスク上のデータの先頭は、ファイルの初期属性をスキップする必要があるイメージで、さまざまなプログラムで作成されたディスクに対して示されます。

Sは仮想ディスクのサイズです。 サイズは、サフィックスにa(自動)、b(512バイトブロック)、k(千バイト)、m(百万バイト)、g(十億バイト)、t(兆バイト)、K(キロバイト)を追加しない限り、バイト数です。 、M(メガバイト)、G(ギガバイト)、またはT(テラバイト)。 千バイトとキロバイトは、キロバイトに1000ではなく1024バイトがあるという点で異なります。たとえば。 -s150Mまたは-s10%-空きメモリの10%。 マイナス記号の付いたパラメータ-500M-は、作成されたディスクのサイズを、空きメモリの量から指定されたサイズを引いたものとして定義します。

O-オプションを設定し、以下のパラメーターと組み合わせて適用します

ro-読み取り専用

rw-読み取り/書き込み

rem-リムーバブルディスク(フラッシュドライブ)としてインストールします。 これにより、ディスクのプロパティ、キャッシュなどが決まります。

修正-(remではなく)永続的な固定ディスクとして設定します

cd-仮想CD-ROM / DVD-ROMを作成します。

fd-フロッピーディスクを作成します。 160K、180K、320K、360K、640K、720K、820K、1200K、1440K、1680K、1722K、2880K、123264K、または234752Kサイズのデフォルト。

hd-ハードパーティションを作成します。

ip-プロキシサーバーに接続するためのパラメーター。

comm-COMポートを介したメモリサーバーへの接続。

________________

M-ドライブ文字を定義します。 たとえば、-m B:または-m y:または-m#:は最初の空きドライブ文字です。

F-仮想ファイル名。 ドライブ、たとえば-f C:\\ Boot.imgまたは-f \\\\ server \\ share \\ image.binまたは -F \\ Device \\ Harddisk0 \\ Partition1 \\ image.bin -最後に、ドライブ文字が割り当てられておらず、定義がハード番号、パーティション(論理ディスク)の番号、そして実際のパスによる場合。

11

いくつかのテストを自動化したいLinuxアプリケーションがあり、その状態は特定のデバイス(USBデバイス、WLANデバイス、WANデバイスなど)の状態に応じて変化するはずです。 ただし、物理的なUSBデバイス、WLAN、WANなどのデバイスはもうないので、実際に物理的なデバイスを接続したり、オン/オフしたりせずに、このプログラムをテストする方法を見つける必要があります。

私は、ユーザースペースから制御できる仮想USBデバイスを作成することから始めますが、これらのフォーラムで同様のトピックを採用してプロジェクトに適用することを妨げる、私の側の知識が根本的に不足しています。 ある種の仮想USBドライバーを作成し、それをusbfsではなくある種のユーザーレベルのプログラムにリンクする必要があるように感じます。 ただし、この仮想ドライバーを作成した場合でも、このユーザースペースデバイスを「プラグイン」して、プログラムをその特定のドライバーに登録するにはどうすればよいですか。 私がやろうとしていることは可能ですか?

  • 2つの答え
  • 並べ替え:

    アクティビティ

0

VMWareを使用して仮想環境でアプリケーションをテストできませんか? 次に、コンピューター上の任意の仮想デバイスをゲスト仮想マシンに「接続」して、その方法でアプリケーションをテストできます。

8

最善の方法は、USBデバイスになることができるLinuxガジェットドライバーとハードウェアを使用することです。 ガジェットドライバを使用すると、コンピュータは任意のデバイスになりすますことができます。 次に、テスト対象のシステムには、ガジェット用のUSBOTGケーブルが1本あります。 ガジェットに適切なハードウェアがあれば、ケーブルを外す必要はありません。 ガジェットボックスは、Linuxデスクトップ/ラップトップ(USB OTGをサポートしている場合)、またはAndroidフォンやRaspberryPiの場合もあります。 (USBケーブルが吸い出されていることに注意してください。ロープがはまっているからといって、USB OTGに正しく接続されているとは限りません。)

USB OTGハードウェアの資格を得ると、ガジェットはすべてのソフトウェアをボックス化します。

1)テスト対象のデバイスがOTGをサポートしている場合は、ガジェットが試行されておらず、USBホストではないことを確認してください。 (これで、テスト対象のデバイスがUSBクライアントになります。)つまり、 usb_storageなどが自動的にロードされないようにしてください。

2)カーネルは、USBハブ、USBイーサネット、USBシリアルポート、およびUSBストレージデバイス用のガジェットをサポートします。 必要なモジュールをガジェットにロードするだけで、「正常に機能」します。 たとえば、USBスティックを作成するには、次のようにします: "insmod g_file_storage.ko file \u003d / dev / ram0"。 向こう側は、USBスティックを差し込んだと思います。

シリアルデバイスの場合、ガジェットは/ dev / usbxで電話をピックアップし、テスト対象のデバイスと通信するユーザースペースコードで実行できます。 (どうやらエミュレートする4Gモデムか何か。)

メーカーが怠惰すぎてUSBを理解できなかったため、多くのデバイスが真に「USBシリアル」になっています。

3)少し再コンパイルまたは調整するだけで、これらの汎用デバイスをガジェットやIDに使用したり、さまざまなベンダー文字列を返したりできます。これは「実際のハードウェアでのテスト」と同じではありませんが、少なくとも これらのデバイスの標準バージョンをテストします。

4)まだコアに含まれていないデバイスタイプ(Wi-Fiなど)の場合は、ご自身で行ってください。 十分な汗と血の涙があれば、あなたはあなた自身のタイプのガジェットを書くことができます。 (理想的には、できるだけ多くのユーザースペースを使用し、カーネル内の重要なコンポーネントのみを処理します。)

トピックの続き:
スマートテレビ

この記事を2つの部分に分けてみましょう。ソリューション1ソリューション2最初の部分は、エラー0x0000007A(KERNEL DATA INPAGE ERROR)があるすべての人に適していますが、ハードドライブがオンになっている人には適しています...