超低コスト、USB-SDカードメモリの製作
書籍「超低コストインターネット・ガジェット設計」では、フリーのプロトコルスタックを見つけて、それを実践に活かしていくための、最初の動作確認の基板つくりをするものです。プロトコルスタックが動作するかを確認するために、一番簡単な動作が動くかを試すことが目的です。この基板を作っても、何かの役に立つわけではありません。
書籍では、そのため、製作にはブレッドボードを使用しています。
第7.11章では、USBのプロトコルスタックは使えるようになったところで、もう一つのSDカードのプロトコルスタックを使ってみることを試しています。2つのプロトコルスタックを使うので、両方が影響なく動作することも検証しています。
SDカードの読み書きをするためには、プロトコルスタックが必要です。FAT16システムでのアクセスができることで、SDカードをパソコンで読み書きすることができるようになるので、データの受け渡しをすることが可能になります。
SDカードスロット(ソケット)は、秋月で入手できるものを使いました。この製作では、WP,CDは使用していないので問題なく使えるでしょう。
取り付けも、蛇の目基板のピッチに合うので半田付けも容易です。
電源は、USBの5Vを3端子レギュレータで3.3Vにして、AVR、SDカードスロットに供給しているので取り扱いが容易です。
USBでパソコンに接続して、パソコン側(CYGWIN上で)から、
./sd.exe ls
を実行します。このコマンドは、パラメータに何かの指定が必要です。(何でもいい)
実際やってみると、なにも動きません。(USBが見つからないとでるのは問題外)
SD.Cのプログラムを確認してみると、USBからコマンド(i)を送るときに、j(=4)を設定して送っています。これは、AVRに書き込まれているファームウェアでは、なにもしないものとなっています。
正しくは、iを、0,1,2と続けて、3回送らなければなりません。
SD.Cの、USBへコマンドを送っている部分を3回コピーして送るように変更して、コンパイルしなおしします。
gcc -o sd.exe sd.c -lusb
とコンパイルします。
これで、3回とも、0が返されれば正常に動作しています。(RETではなく、BUFが0となる)
この処理で、何が行なわれるかといえば、SDカードに書かれている「test.txt」というファイルをコピーして、「test2.txt」に書き込むという動作をします。3回に分けているのは、オープン、コピー、クローズを別にやっているからです。
AVRに書き込まれているファームウェアはこれしか出来ません。何かに使うためには、プログラムを参考に、自分でプログラムを作る必要があります。まさに「超低コスト」(出す側から見て、手間のかかっていない手抜きのもの)なプログラムです。
USBやSDカードを使うには、こんなプロトコルスタックがあるよ!、使うにはこんな簡単でいい!というお手本です。なので、自分でプログラムを作ってみましょう。
USBや、SDカードを使う上で難しいところは、すべてプロトコルスタックがカバーしてくれています。そういう本なのです。
なお、SDカード上で、test.txtを、test2.txtにコピーしたものを見ると、110バイトあるところが、100バイトしかコピーされていませんでした。たぶん、クローズのときにフラッシュされないのでしょう。
USB、TCPIP、SDカードを使いたかった人にとって、この書籍は、天からのプレゼントのようなものです。





























コメント