«前の日(11-12) 最新 次の日(11-14)» 追記

ぱぱネット(仮)


2007-11-13 怒りで我を忘れているのじゃ

_ 本日のリンク元スパム

本日のリンク元スパムはどーしようもないなこれは.... ここ2ヶ月くらいApache側でアクセス禁止するイタチごっこを続けていたけど、もう限界だわ。 内容については 検索サイトに偽装した Referer spam サイト (2)を参照のこと。

発信源は a++ My RSS 管理人ブログ という糞野郎なのだが、お詫びなどかいている反対側で、対策が行われつつあるwww.sfa-cms.comに 代わってsfa-cms.netを立ち上げるなど、全く反省の色もないぞ。マジで死ねばいいのに。

本家tDiaryの対策を(勝手に)期待していたのだけど、どうも普通の運用者は disp_referer2.rbの、予めリストに登録した特定のリンク元以外は表示しない という機能を使っているらしく、全く話題にものぼりはしない。もはや絶望的である。

検索エンジンからのリンクだけ表示してもなあ.......

いわゆるWeb日記時代から書きつづけてきた俺としては、 1,2件のリファラが話題に花を咲かせる発端になった経験から 消したくはないんだけど。はうンとのゆるーい結び付きもこれ経由だったりするしね。

が、さすがに耐えられないので05referer.rbのreferer_transcation内で next if count.to_i < 5しましたわ。パワプロやらなんやらでアクセスしてくんじゃねーよバーカバーカ!

_ Rubyで・・・

日本語(UTF-8?)を含むURLの正規表現ってどうかけばいいの?


2009-11-13 EZ-USBで遊んでみる(2)

_ [開発][Linux] 8051のオブジェクトもろもろの話

前回の手順でファームウェアサンプルであるex3をコンパイルすると、 いろいろファイルが生成されるのだが、実行ファイルに相当するものは ex3.ihxというファイル。 Intel Hex形式で 記述された8051のオブジェクトコードだ。

:03000000020008F3
:0300610002000397
:0500030012011780FE50
:080064007A007BF87C007D02AC

でも、これだとなんだかわからないので中身を覗いてみる。逆アセンブラはdis51。

$ dis51 < ex3.ihx

CSEG AT 0000h
	LJMP L0001

L0004:
	LCALL L0005
L0006:
	SJMP L0006

L0001:
	MOV SP, #9h
	LCALL L0002
	MOV A, DPL
	JZ L0003
	LJMP L0004

おお、それらしいじゃないですか。演算はほぼ全てAレジスタ(アキュームレータ)を起点として 行うようです。どのアドレスが内部メモリでどれがI/Oマップなのか未だにわかりませんが。 ex3は基本的にEP6をIN(PCからみた場合、ターゲットからだと出力になる)に初期化して いるだけのようです。が、ex3.c本体も、できあがったihxを逆汗した結果も、 割り込みテーブルの初期化とか全くしてないように見えるんだが...これでいいのかな。 スタートアップコードはほとんど全く付加されず、元ソース由来のニモニックばかりだねえ。

_ [開発][Linux] fx2_programmerで実機にダウンロード

ex3に添付されているprogram_and_start.shというシェルスクリプトが、 そのままfx2_programmerの使用例になっている。

EZ-USBは認識のたびにバスID,デバイスIDが変わってしまう。むろんEEPROMで独自のIDを 持ったファームウェアを毎回ブートするようにすれば変わらないようにもできるが、 今割り当てているのはLinux Kernel側のusbdevだ(多分)。

fx2_programmerを使うと状態がダンプできる。上記のシェルスクリプトは ダンプした結果から'UNCONFIGURED'という行をgrepで抽出して、バスIDを環境変数BUS, デバイスIDをDEVICEにセットする。本来、ネイティブドライバではベンダーIDや プロダクトIDで(もちろんEZ-USB、Cypressが決めたIDではなく自社で取得したIDね) 検索する部分を、半自動でやってくれるわけね。

# fx2_programmer any any dump_busses
Dump of USB subsystem:
 bus 006 device 001 vendor id=0x1d6b product id=0x0001
 bus 005 device 001 vendor id=0x1d6b product id=0x0001
 bus 004 device 001 vendor id=0x1d6b product id=0x0001
 bus 003 device 001 vendor id=0x1d6b product id=0x0001
 bus 002 device 002 vendor id=0x04b4 product id=0x8613 (UNCONFIGURED FX2)

以降、環境変数BUS,DEVICEを使ってfx2_programmerコマンドを呼び出せば、 ある程度対話的にEZ-USBを制御できるというわけ。8051をリセットする場合は

# fx2_programmer $BUS $DEVICE set 0xE600 1

となる。0xE600は何なの?と思ってfx2regs.hを見ると、CPUを外部から コントロールするためのI/Oアドレスのようだ。

EXTERN xdata _AT_(0xE600) volatile BYTE CPUCS ;  // Control & Status

書いてる値「1」は、Cypressの開発キットと同時にインストールされる テクニカルリファレンス(EZ-USB_TRM.pdf)をひくと、1でCPUがHOLDされ、さらに 0を書くとリセットかかるみたいなことがかいてある。

Reset line

ここがEZ-USBのおもしろいところなんだけど、 CPUCSってのはUSB coreのポート であって、それがCPUのリセット信号に直結されている構造なんだな。 一般的なマイコンボードだとCPUが絶対的支配者でUSBペリフェラルがサブであるが、 EZ-USBではUSB Coreのほうがえらいということか(TRMのFigure7-1)。

program_and_start.shは、先ほどコンパイルしたファームウェアを以下のコマンドで ダウンロードしている。

# fx2_programmer $BUS $DEVICE program ex3.ihx

その後0xE600に0を書いて、この瞬間から8051が動き出すというわけだ。 うまくできてるなあ。

# fx2_programmer $BUS $DEVICE set 0xE600 0

_ [開発][Linux] 読み出しベンチマーク

fx2_programmerにはbluk_benchというコマンドが用意されていて、 ひたすら指定したエンドポイントを所定バイト数、所定チャンクで読み出して時間を測定してくれる。

# fx2_programmer $BUS $DEVICE bulk_bench 0x86 102400000 2048
Read 102400000 bytes in 26 seconds and 184313 microseconds.
Rate of 3910738 bytes/second

約4MB/s (32Mbps)。USBバルク転送でこれだけ出てれば十分というべき...いや やはり遅いのか?400Mbpsくらい出すにはどうしたらいいんだろう。

ex3.cのソースみてたらバグ発見。

/* configure ep6 to be quad buffered */
EP6CFG=(EP6CFG & ~3)|3;

これだとEP6CFGの値は0xe3になる。TRM 8-4をみるとquadバッファするためには0xe0に しないといけない。下位2bitが11だとトリプルバッファだね。

しかもトリプルといいつつFIFOBUFの設定は各1回しかやってない。どういうことなんだろうか。 なんとなくだが、上記ベンチマークは シングルバッファの結果 な予感がする。 実質的にはSlaveFIFOで動作しているわけではない(入力側の回路がない)ので、 USB的には固定バッファを送り出しているだけだから、最大速度出てる可能性もあるけどね。 あとはバッファ長か?PC側ドライバの問題か?

_ [開発][Linux] 雑感

Cypressのテスト用ファームウェアはex3より遥かに複雑だけど、 初期化関連はきちんとやってるようなので、今度はこちらを読んでみようと思います。 USBも8051もわからないことだらけだけど、とりあえずEZ-USBは 敷居低い、素性良い 印象は受けました。


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]
2006年
11月
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 29 30

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

訪問者数:(+2560143)