«前の日(02-07) 最新 次の日(02-09)» 追記

ぱぱネット(仮)


2009-02-08 自転車悩むな

_ 30kmほど走ってきたけど

修理に出していた自転車がようやく直った。実は先々週に近所のホームセンターに出していたのだが、 「9段ギアを1枚抜いて8段にしていたのでチェーン再発注しますね」 とやんわり怒られて1週間延びた(笑)。これ、バイクの人から譲ってもらったものなのだが、そういう重要な情報はウチに来たときに言っておいてホシス・・・

ともかく外は快晴。30kmほど走ってきたが、もっぱら使っていたママチャリより漕ぎ出しが軽くて驚く。 「こんな軽かったっけ?」 というくらいに・・・MTBのフレームにロード用のスリックタイヤ履いている変則構成だけども。

ママチャリの方を電動自転車にしようと思っていたのだが悩んでしまうな。↑のMTBだと 2,3漕ぎで20km/h超えてしまう。 自重の軽さを活かして坂道昇りでも加速することができる。

電動自転車はあくまでアシストで、20km/h超えると切れちゃうんだよね・・・?それって街中の信号待ちなどのストップ&ゴー以外にはほとんど意味ないってことになっちゃわないだろうか。

B001C6XATE

今日寄ってきたイオン内の自転車屋で、エナクル8という旧機種が89800円だった。航続距離は短いものの8段変速で良いと思ったのだが、↑の推測が正しいとするとほとんど20km/h超えてしまうから無意味なんだろうかねえ。むしろ重い分不利なのではないかと。

_ [アニメ] ガンダム00

いつの間にかアニューとロックオンが恋仲になっているし、もうなんですかこの恋愛宇宙は!。しかし、番組の最後で全員発進するとき、(1)アレルヤ=ソーマピーリス、(2)ロックオンは↑、(3)サジクロスロード=ルイズ、というそれぞれ恋人の名前と覚悟を口にしつつ出撃するのに・・・ 万死の人と主人公ときたらもうね(笑) お前ら 無機物 にしか興味ないのかと小一時間問い詰め(略)特に主人公・・・ マリナ・イスマイール のこと完璧忘れとる。酷すぎる。

本日のツッコミ(全2件) [ツッコミを入れる]

_ toga [今乗ってる自転車の仕様が「クロスバイク」っていうんだよ。電動自転車要らないっしょ?]

_  [電チャリの値段で、通勤仕様クロスバイク(完全泥除けオートライト)を組んでもらうという手もあるな。 あとエナクル8は..]


2010-02-08 EZ-USBで遊ぼう(?)

_ [開発][Linux] USBのスループット

趣味なのでしばらく放ってあったのだが、EZ-USBの進捗を書いてなかった。 だれも聞いてないって?そりゃそうか(^^;;組み込み系に全く興味のない人には 役立たないのは許してくれ。

ちょっと思い立ってバルク転送の速度を計測するファームウェアをかいた。

do {
  if ((EP6CS & bmBIT2)) {
    EP6FIFOBUF[0] = lpcnt;
    lpcnt++;
    if (ms_counter < 127) ++ms_counter;
    EP6BCH = BLOCKSIZE >> 8;
    EP6BCL = BLOCKSIZE & 0xff;
    SYNCDELAY;
  }
} while (ms_counter > 0);

EP6にホストから何らかリクエスト(今回はread)があると、 問答無用でFIFOポインタを最大にセットを繰り返す。つまり ホストが読みたい分だけ読めるというわけ。読み出しの単位はあくまでエンドポイント6の 設定による。USB2.0で512byte x 2(ダブルバッファ)に設定しているので、 このループ内のif文は 512バイト1パケット で処理される。lpcntをセット しているのは先頭の1バイトをインクリメンタルカウンタにするため。 本来はデータ全部をチェックするように規則データを埋め込むべきなんだろうが EZ-USBの8051にデータ舐める処理やらせると死ぬほど遅い ため 手抜きチェックとなっている。

終了処理はタイムアウトで行う。最初スタートとストップのコマンドをバルク転送で... とやっていたのだが、同じエンドポイントをコマンドとデータで共有するとエラーが 起きたときに困ったことになる。もちろんEP0,1あたりでコマンドをやりとりする ルーチンを書くのが正道なのだが... EZ-USBにはソフトタイマーがある ので今回はこれを使うことにした。オプティマイズさんのコード丸写しだけども。

unsigned char ms_counter;

void timer0() interrupt 1  //register BANK1
{
  if(ms_counter > 0) --ms_counter;
  TL0 = LSB(0x10000-12000000/1000);
  TH0 = MSB(0x10000-12000000/1000);
}

void timer_init()
{
  TMOD = 0x01;  //GATE0:0 CT0:0 M1M0:01
  CKCON = (CKCON&(~0x08)) | 0x08; //T0M:1(48MHz/4=12MHz)

  ms_counter = 0;
  TR0 = 1;              //enable timer0
  ET0 = 1;              //timer0 irq enable
}

これで約1msごとにグローバルのms_counter変数がカウントダウンされる。 先ほどのバルク転送ルーチンではms_counterが127未満のときは 転送が起きるごとに+1するようになっている。 つまり、127msの間に1回も転送がおきないとタイムアウトしてルーチンを抜ける というわけ。

_ [開発][Linux] ホスト側

LinuxなのでCypress標準のCyAPIは使わず(使えず)、libusbを使うことにする。 バルクリードの典型コードはこんなかんじ。

result = usb_bulk_read(dh, _EP6IN, readbuf, chunksize, _USBTIMEOUT);

ここでchunksizeは前記USB2.0の パケットサイズでなくともよい 。 どうもlibusb(かuser-land USB driver)が物理的なパケットサイズに 分割してくれるようだ。むしろ512バイトなどと設定するとバッファリングが効かずに 性能低下してしまう。ここでは4096バイトを採用することにした。

_ [開発][Linux] ベンチマーク

1台め。いずれもEZ-USBはマザボUSB直結。

  • Athlon64X2 4400+(2.2GHz)
  • ASUS M2A-VM HDMI(AMD780Gチップセット)
  • Linux-2.6.29(libusb-0.1)
SPAN: 561.46 sec.
TOTAL: 4194304000 bytes.
Throughput: 59.806816 Mbps

2台め。ちょっと古い。

  • Pentium4/1.6GHz
  • Gigabyte GA-8PE667(i845チップセット)
  • Linux-2.6.29(libusb-0.1)
SPAN: 266.933 sec.
TOTAL: 4194304000 bytes.
Throughput: 125.703421 Mbps

P4のほうが速いとかもうね...

疑ってチャンクサイズを変更したり試行錯誤したんだが、この傾向は変わらなかった (512未満だと両者とも30Mbpsを切って差がなくなるけど)。あ、どっちもインクリメンタルカウンタ レベルではデータ化けとかパケット欠落はなかったです。

スループットは、いろいろな条件が作用するので一概には言えないけど、 こんなプリミティブな部分で差がつくとはおもわなかった。 USBホストデバイスの出来不出来で案外性能差が出るのかもしれん、という話。 腐ってもIntelなのか??


2001|04|
2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|03|04|05|10|

[BANNER]
このサーバーをもう12年も維持しているかと思うとめまいがしますよ。
ツッコミ機能は、ハンドル名が完全日本語じゃないと登録できません。
また、本文にURLが含まれていても登録できません。
いずれもSPAM対策です。
[Panda Papanda]
2007年
2月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28

[Papanda]  [Kuma]  [Tomorin]  [Iron]  [Eiza]  [Dokkin]  [Honya]  [Zyou]  [Tsuyo]  [Bike]  [KoeBBS]  [Chukei]  [portal]  [tvmatome]  [KaoPaku] 

訪問者数:(+2560143)