« 2010年6月 | トップページ | 2010年8月 »

2010年7月

2010年7月31日 (土)

パケットアナライザ

LPC1769のEthernetコントローラ。

TCP/IPの実装をやっていて、どうにも行き詰ってきた。
簡易的にブラウザと通信するようなプログラムならば、その昔はうまく行ったのだけれど。

標準出力&デバッグコンソールに、telnetが使えるとちょっと便利かもと思って、ぼちぼちやっているのだけれど。
時々予期し無いタイミングでこけてしまう。

ころあいなので、パケットモニタを導入して、telnetクライアント(といっても、ハイパーターミナルだけれど)がどういう動きをしているのか観察する。

WIRESHARKをインストールする。
昔使っていたのとは、大分変わっているような?

------

どうやら、通常のキーボード入力なんかは、1文字ごとに1個のパケットを送るようだ。(リターンキー入力でも、\rと\n別々に2個パケットが出る。)

テキストファイル送信でまとめて送信してやると、最初の1文字だけ1つのパケットで送出されたあと、あとは不規則な区切りで、ぱらぱら出て行くようだ。

で、最初のうちはパケットの送信間隔が広くて、lpcからackが戻るのが先なのだが、だんだん進んでいくと、一気に10個くらいのパケットをほぼ同時に出してくる。
ここのところで、受け側のリングバッファがオーバーフローして、処理が回らなくなっているようだ。
バッファフルでそれ以上のパケットを受信しないように出来ているはずだけれど、どこかにまずいところがあって、処理済みのシーケンス番号を見失ってしまっているようだ。

何百キロバイトも受信バッファが用意できれば、こんな問題は起きないけれど、そんなメモリは用意できないので、他の方法を考える。

まあ、TCPのフロー制御を使えってことかも知れないけど、シーケンス番号が飛ばないようにして、知らん振りして応答すりゃいいだけのような気もする。

------

よく考えると、telnetにこだわることは無いような気がするけれど、なんだか一度手をつけてしまった以上、形にならないとすっきりしないような...

| | コメント (0) | トラックバック (0)

2010年7月25日 (日)

帰還

終了と同時に猛ダッシュで帰還。
なんとか本日中に戻ってこれた。

内容は....やっぱり...

ピースが足りてないジグゾーパズルを、皆してこねくり回して、なんとか絵として解釈しようとしている感じ。
もどかしいなあ、そりゃ無理があるでしょ。
ピースが足りてないことには、みな薄々気がついていると思うのだけれど、それすら含めて全てはバランスなのか。危うい...

まあ、大筋表面的にはまとまったかな。
明日からもがんばらねば。

| | コメント (0) | トラックバック (0)

2010年7月24日 (土)

外仕事

仙台も、ものすごく暑くて、しんどい...
日が翳ったり、夜になるとまあそれなりに、東北地方だなあ、と思う位にはなるのだけれど。
明日はどうなることやら。

| | コメント (0) | トラックバック (0)

2010年7月22日 (木)

telnet応答

あれこれちまちまと進めて、とりあえずtelnet(TCP 23)で、キャラクタがやり取りできるようになった。

手抜きを超えたインチキな実装で、ソケットを一度にひとつしか扱えないけど。
まあシリアルポート代わりに使うなら、これでもなんとか。
実際、ハイパーターミナルでつなげていると、シリアルとどこが違うのかと。

いや、これはこれで意味がある。はず...

さて。

------

今週末は、仙台で外仕事。
電車を乗り継いで移動。

宿作業に時間が取れるといいのだが。

| | コメント (0) | トラックバック (0)

2010年7月19日 (月)

ping

ベタベタなコードを書いて、とりあえず動かしてみる。
チェックサムは1の補数ってのは覚えていたのだけれど、最後ビット反転するのを忘れて悩んだ。

100719

カニチップ当時は10base-Tだったのもあって、1kbyteくらいのデータでpingを打つと、応答に10msec以上かかっていたのだけれど、今時はこんなもんみたい。

とりあえず動くようになったので、ソースの整理をして、次はTCPかな。

------

マウスは、機構部品の検討中。

ネジサイズは、M1.4かM1.7かなあ...
うまく組み立てられるかな。

| | コメント (0) | トラックバック (0)

2010年7月18日 (日)

進捗

世間は3連休らしいのだが、祭日関係ないのはいつものこと。

週末は、色々な用事をこなして充実。
マウスや電子工作ネタは、深夜まで封印。

------

TCP/IP実装。
世間では、uIPみたいなものを実装して一丁上がり、ってのが今時のようだけれど、色々理解のために、贅沢にも自分で書いてみたりしている。
とりあえず、パケットの受信は出来てるみたいのなので、週末でpingに応答するところくらいまでできたらいいなあ...とか。

------

コツをつかむまでは、ちょっと悩んだ。
pingに応答するところまではとどかなかったけれど、とりあえず通信相手のPCのARPテーブルに、lpc1769側のMACアドレスが出てくるところまではできた。
要するにたった1個のパケットを返送しただけなのだけれど、ここまでくれば後は作業量だけだ。

------

Ethernetは、いったん動いてしまえば、必要とするCPUリソースは、調歩同期シリアルよりも少ないくらいだ。
ビットレートは何100倍も速いし、PC側との相性もいい。無線やネットワーク制御の機器も他のものに比べても、ものすごく充実している。
ターゲットがワンチップマイコンであっても、がんばって動かす価値はあると思っている。

マウスだと、どこに使えるか、といわれれば...ログのダウンロードが一瞬で終わる、くらいかなあ。
macはいいとしても、phyの消費電力が酷くて、むずかしいかな....

| | コメント (0) | トラックバック (0)

2010年7月16日 (金)

妄想

コーナでのターン中は、常に一定の状態で旋回していくのではなく、期間の最初から最後まで、バランスは変化していく。
姿勢を崩して壁に激突するのが、いつも大体同じあたりになるのが、それを証明しているような。

で、ターンする為の運動量は、ターンの期間中にタイヤのグリップから取り出すのだが。
速度が上がれば、獲得しなければならない運動量自体も増えるし、取り出す時間も短くなるので、必要な力のピークは上がっていく一方だ。

このピークがタイヤと路面の限界とバランスするところが、ターンの最適値になるのだけれど。

------

さて近年。
競技用車両に、マスダンパー、なんてものがついていたり、ついてなかったりする。

色々な人が、色々な解釈をしているけれど、まあようするに。
真空のエネルギーじゃないけれど、瞬間的に運動量を借りてきて、つじつまを合わせようってことだと思う。
一連の動きの中で、一番厳しいところだけひょい、とかわすようなイメージ。
ピークを(時間的前後に)分散させ、トータルでの性能を稼ごうって寸法なのではないかと。

マウスで言えば。
たとえば、ターンに入る前に、質量(イナーシャ)の大部分を前もって旋回させておき、いざターンの時には、最低限の質量のみのターンで済ますような事を実行すると、早く曲がれないか?とか。
そういった発想のバリエーション。

最短走行なんて、いつ、どこで、どれくらい曲がらなきゃいけないか、あらかじめ分かっているのだから、色々策はあるような、無いような...

------

とはいえ、そのために複雑な機構が必要になるようでは本末転倒。
現行のものに比べても、ほとんどハンデにならない程度のもので実現しないといけない....

マウスは、まだまだ速くなる、と思うこの頃。

| | コメント (0) | トラックバック (0)

2010年7月15日 (木)

RMIIのクロック

PHYから出てくるのだとばっかり思っていた。
やけに短いパケットしか出てこないなあ..と思っていたら、こんなことか。
50MHzのオシレーターに直結して解消。

受信したパケットをダンプしてみると、なんか久しぶりの面子が並んでいて、笑
当たり前だけれど。

カニチップ以来の10年ぶりだけれど、プロトコルは何にも変わらない。
あの頃に比べると、ルーターがタダみたいな値段になってたり、クロスケーブルなんてものが絶滅したりしているけれど。笑
使っているチップも、H8→SH→LPC→STM32→...と何世代も交代しているけれど、のっかっているプロトコルは微動だにして無いな。
いまだにIPv4だし...

------

そういえばカニチップには、いろいろ苦労した覚えが。
その前にDP83902なんてのをしばらくいじっていたから、なんとかなったけど。
たしかこれが紙のドキュメントを取り寄せた、最後のチップだったような気がする。

周りには、いきなりRTL8019ASに取り組んで、沈没してた人も多かったような。

当時、秋月からH8-3048+RTL8019ボードがでて、皆入手して色々試していた。
まともに動かすには、ちょっと問題のある回路だったし、DMAを使わないと、H8ではかなり苦しかった。
おかげさまでH8の理解は進んだけれど。
コアの性能が低い分、ペリフェラルをうまく使うと、すごく性能が上がった感じがあって、楽しかったかも。
イマドキのやつらは、しょっぱなから出来がよすぎるよな。

あと、シリアルROMで設定しないと、うまく設定できないコンフィグビットがあったりとか...
NE2000互換のワンチップ素子だから、構成自体の合理性とかそんなものは実装されてなかったような。
まあ、それはそれで、面白かったかな?

------

なんか...マウスからは遠いなあ。

| | コメント (0) | トラックバック (0)

2010年7月 6日 (火)

新デバイス評価

いろいろやってみるのだが、どうにもうまく返事をしてくれない...
データシートにある消費電流から推測すると、どうもスリープモードからぬけ出てきて無いような気がするのだが。

どうしよう、これ抜きで設計を進めるか。
新ネタがことごとく外しているなあ...

------

AS5040のために入手したネオジム磁石をいじってみて思うのだが、わずか数ミリくらいのサイズなのに非常に強力だ。
なんとなく、自分でモーターを巻いてみたくなったかも。

最近の超軽量のRC飛行機では、自作のアクチュエータも普通に使われているようだし。

ハーフサイズに使えるモーターは、エンコーダーなどの事情も絡んで、選択肢が非常に狭いし、自作の可能性を探るのもありかも、と思っていたりする。

まあ、実際まいてみると、だめだこりゃ、ってことになるのだろうけど。

| | コメント (0) | トラックバック (0)

2010年7月 4日 (日)

stm32でSPI その2

ユーザーズマニュアルを眺めていると、stm32の非同期シリアルは、SPIマスタとして使用できると書いてある。これはいい。
そういや、よくあるUARTじゃなくて、USARTと称しているよな。

SPIx2と、USARTx3で、全部で5個も使えるなら十分だ。
しかしUSARTのポートは、LSBファーストに固定されるっぽい。
これではちょっと厳しいかも。

他であまり見かけない機能として、SPIなのに半2重通信ができるようだ。
1つのデータピンが、タイミングで入力になったり出力になったりするのか。
何に使えるのだろう?

| | コメント (0) | トラックバック (0)

2010年7月 3日 (土)

stm32でSPI

stm32でSPI評価。

100703

乗っかってるのは、オリジナルのstm32ボード。1インチ角。
下は、秋月Cタイプ基板。
セットでいつもの評価用ボード。

------

非同期シリアルや、ADCではどのチップでも、まあだいたい同じようなことができるもので、設計するときに悩むことはまれだ。

ところが、SPIあたりでは、使える機能がチップごとに結構違う。
扱えるビット数とか、受信の取り扱いとか。まあ色々。
古くは、昔のSHのクロック同期シリアルI/Fに、SDカードを接続しようとして、結局頓死したこともいい思い出だ...?

かように、想定している相手と問題なく接続できるかどうかは、じっくり考えてみないと分からない(こともある)。

まあ、実際のチップ、実機で試してみればはっきりするので、早速仕立。

------

そういえば、stm32でSPIを使うのは初めてだ。
他のチップでは実に日常的に使っているのだが。

いまさら、ハードウエアマニュアルを熟読...

| | コメント (0) | トラックバック (0)

2010年7月 1日 (木)

評価中

100701

こちらでも評価されているAS5040。
磁石はなるべく小さいのがいいので、ネオジムのφ3のものをここから購入。

用意した磁石で、電源だけ接続するとA,B,Z相の出力が出てくる。
調整とかも必要なし。

ただ選択した磁石の所為か、適正なICと磁石の距離がちょっとシビアなようだ。

シビアといっても、適正な範囲にあるかどうかの出力信号もあるし、1mmくらいは範囲があるので、実用上は問題ないと思う。

本当言えば、もうちょっと小さいパッケージのが欲しいところだけれど、まぁなんとかなるかな。

------

#うちでは、出力が振れたりしないようです。
#1番and/or2番ピンを使っていますか?

| | コメント (0) | トラックバック (0)

« 2010年6月 | トップページ | 2010年8月 »