パスワードを忘れた? アカウント作成

ttさんのトモダチの日記みんなの日記も見てね。 スラッシュドットのRSSを取り込んでみよう。

1116209 journal
日記

ttの日記: フライング2011まとめ

日記 by tt

今年のまとめ。まだ今年は数日残ってますが…残りの分で何かあれば追記する方向で。

1月:
記憶が無い。たしか新しいお仕事PC購入手続きをしたような。
伏見稲荷に初詣して鳥居を見つつfirefox充となる。

2月:
虫垂炎で入院。物心ついてはじめての入院。
同室のおじーちゃんの愚痴を聞かされたりして死生観が少し変わる。
妹と嫁に感謝する。

3月:
じしん。科学と技術の限界に絶望する。
ペジテのアスベルが破壊された故郷を見て感じた気分か。
チケットが奇跡的に取れたけどフィギュアスケートの世界選手権は延期に。

4月:
記憶が無い…電気は無いけど仕事は容赦ないので猛烈に働く。
戦闘モード突入的な。相当働いたのは確実

5月:
GWはアイスショーに行ったり数日帰省した位でほぼ全部働く感じ。
quad二種類を飛ぶ羽生君に感動する。
合間を縫って日比谷のオクトーバーフェストに参加する。高いけどうまいね。

6月:
親知らずを抜いたような気がする。
祖母がなくなる。数えで99歳。祖母・祖父の代は全員亡くなってしまった。
実家のリフォーム結果が大胆すぎてびびる。

7月:
相方誕生日を祝って今年は銀座マキシムに行って見る。
仕事では色々と殺意を覚えた様な気がするが忘れた事にする。

8月:
夏本番。全社休業日なんて無視して普通に働く。でも暑い…
新しいエアコンのパワーに感動する。

9月:
お仕事のめどがやっと立った気がする。というか色々延期する事になる。
センリャクテキテッタイ

10月:
祖父の25回忌で25年ぶりに博多のお墓参りに。博多駅がかっこよくなりすぎててびびる。
あわせて家族旅行にいく。温泉ええですなあ。高千穂かっこよす。

11月:
中学・高校の同窓会に参加。あと妹の結婚式でハワイへ。
予想通りのところが予想通りの流れになっているが今更どうしようもなく、
逆にもう少し先を見込んでの作業を優先する事にする。

12月:
月蝕見た。
一つ目のゴール到達。早めに仕事納めして全日本フィギュア見てまったりすごす。
37歳になった。

*買ったもの
(住んでる物件の付属品だけど)エアコンが新しくなった
ASUS E35Pro(AMD E350搭載マザーボード)ほか自作PC一式
三菱の空気乾燥機
USBビデオキャプチャ(イマイチ使えてない)
Panasonicのマッサージソファ
NEX-5Nボディとレンズ3本(標準セットの2本とマクロレンズを1本)
フィリップスの電気剃刀
PSVitaと付属品いくつか

*入ったサービス
facebook:仮登録したアカウントがあったような気がしたが行方不明なんで登録しなおし
atnd.org:x86opti参加のため
ANAカード:なんか飛行機に何度も乗る事になったので

*雑感
忙しすぎた。無力感を感じること多数。
数年に一度のイベントなので仕方ないが、よく働いたせいで環境に飽きてきた。
まあスポーツ選手におけるオリンピックイヤーのような感じか。
gccとかをいじる環境に戻ったのは良かったのかな。
メインがMIPSからARMに移ったけどMIPSも大量なまま。x86も増殖中。
PPCは相変わらず少ない。マルチコア度が急激にアップ。
一度もLAMEのコードを見なかった…。
ラジオ・テレビを視聴する時間が本気でなくなりつつある。
rubyは結局今年も余り使わず。

*反省点
仕事しすぎて体がぼろぼろ。人間ドックで「要検査」がたくさんありすぎる。
サーバを放置しすぎ。そろそろVPSとかに移動すべき。
細切れの時間でtwitterしすぎ。明示的に休憩するべき。
英会話学校に行く予定が地震と仕事の忙しさで潰れたというのは言い訳だ。
せっかく買ったペーパーバックをまた読まなかった。
仕様書とMLの英語しか読まないのはまずいと思う。

*来年の予定
各種医療控除と寄付と雑収入の対応のための生まれて初の確定申告
精密検査のために病院に行く。たぶん検査入院が必要と思われ…
母のPCを買い換える。
妹にプレゼントを買う。

*来年の目標
英語を何とかする
基本に立ち返ってちゃんと仕様書を理解する
環境の変化を自分から起こす
もう少し運動する。とりあえずスキーとスケートとサイクリング、かなあ。
増えすぎたクレジットカードを整理する
電池の持ちがだいぶ悪化した携帯電話をどうにかする

890275 journal
日記

ttの日記: Thumb2パズル 15

日記 by tt

新UIになって今まで以上におっくうになってたんだけど、余りにも日記を書かないとなんなので…
今苦しんでるパズルのヒントを/.Jの皆様に求めてみたりします。

今をときめくARMアーキテクチャのThumb2モードでは、即値アドレッシングの演算系命令で使える値がかなり限られます(ちなみにARMモードだともっと制限が厳しい)。具体的には以下のどれか。

  1. 8bit値をnビット左シフトしたもの(nは0以上24以下の整数)
  2. 8bit値を0x00010001倍したもの
  3. 8bit値を0x01000100倍したもの
  4. 8bit値を0x01010101倍したもの

加減算に限っては任意の12bit値を使う専用命令があったり、同じ値を加算と減算とか、ビット反転した命令でも使えるので、実質もう少し他の値も使えるのだけれど、まあ基本はこれ。

一方、定数代入はレジスタの上位・下位16bitを設定する命令があるので、2命令の組み合わせで任意の32bit値を設定できます。

ということで、例えば x+0x12345678 みたいな事をしたい場合、

  1. 2命令かけてワーク用のスクラッチレジスタyに0x12345678を代入し、xに足す(3命令)
  2. 何とかして0x12345678を上の定数パターンに分割してがんばる

のどちらかになります。

で、後者の「何とかして」が問題になる。

答えを先に書くと
    0x12345678 = 0x12001200(0x12*0x01000100) + 0x00344000(0xD1*0x4000) + 0x00000478(0x8F*8)
というふうに分割できるので、加算命令3つでx+0x12345678を実現できます。
前者に比べると命令数(=サイクル数)は同じだけど、こちらの方がスクラッチレジスタなしで済む分有利になります。

問題はこういう分割を求めるのが泣きそうに難しいところ。
8ビットずつ4つに分割すれば、つまり0x12345678=0x12000000+0x00340000+0x00005600+0x00000078とすれば確実に再現できるので、4分割すれば絶対に実現できるのは明確。2分割で作れるかどうか、も割と容易に分かる。なのだけど、3分割で作る方法があるかどうかを調べるのが非常に難しい。
現時点で私はブルートフォースで計算する以外の方法が思いつかないでいます。前述の例である0x12345678も総当りで出しました。

ちなみに現状のgccは割とすぐにあきらめて「ワーク用レジスタ使う」になります。
が、時々なぜか0x12000000+0x00340000+0x00005600+0x00000078になることも。ヒドス。

ということで、いい方法思いついた人居たら教えてください。
2分割のときは0x00010001の剰余系で考えると、ってので簡単に実現できたんだけど、3分割だと色々考えたんだけど全然ダメでした。
こういうのに関係する数学の分野名とかあったらそれでもいいです。

更新:20:15コメントにあった疑問を追記しました。

340138 journal

ttの日記: はやり物日記

日記 by tt
http://www.the-fortuneteller.com/asperger/aq-j.html

社会的スキル
0点
注意の切り替え
2点
細部への注意
6点
コミュニケーション
2点
想像力
4点

総合14点でした。うーん。ほんまかいな・・・

329033 journal

ttの日記: E350 + debian squeeze amd64日記まだまだはまる編 3

日記 by tt
久々にはまりまくりだなあ…

powertopコマンドで何かヒント出るかな、とためしに実行したら「USBの電力管理を有効に出来るよ」といわれたのでやってみた。結果…CPUコアの一つのbusy率が100%なった。ぉぃ…戻らないんでリブートすることに。

やっぱなんかおかしいなあということで、ためしにbackportsサービスを使ってカーネルを2.6.38にしてみた。結果…画面が出なくなった(汗)。radeon DRMが中途半端にE350対応になったため、のようだ。起動直後は画面も出ているのだが、画面モード変更以降で砂嵐的な画像しか出なくなる。確認したのはDVI出力時の画面表示のみなので、VGAとかは生きてるのかもしれないが…

一応ネットワーク越しに使うことは出来るのでそちら経由で見てみると、k10tempモジュールでCPU内蔵の温度センサが見えるようになってたりして進歩しているようではある。が、powertopコマンド実行したらセグメンテーションフォールトになるとか色々と謎も残る。

あと、別のマシンに同じOSを入れてsensorsコマンド実行したら、特にパッチとか当ててない奴でも普通に見えた。アレ、なんで…

USB Videoキャプチャは解像度変更他のコマンドもそれっぽくうてるようになった(少なくともエラーは出なくなった)けど、まだ画像を取ろうとすると全く取れないか、カーネルを巻き込んで落ちるかのどちらか。先は長い。コンソールに出るダンプを見ると、NULL踏んで落ちてるんで、E350他で起きるというUSB周りのハードウェアエラッタっぽいのだが…2.6.38で直っているのかどうかとかも確認してみるとしよう。

久々に色々遊べているが…仕事だったら泣きそうだな(笑)

326777 journal

ttの日記: PC-SDVD/U2G を解析してみるなど(3)

日記 by tt
キャプチャ開始とかキャプチャ条件(解像度など)を設定する部分を解析しようとするが、USBSnoopyだとどーゆーわけか映像データの転送が始まるとキャプチャが止まってしまう(アイソクロナス転送が始まるとそこでとまるみたい)。いろいろいじるがどうしようもないので再度ぐぐってみつけたUSBSniffというのを使ってUSBパケットのログを取ることに。WinXPでしか動かん、と書いてあるけど、手元ではWin7 64bitでも動いたので、マシンパワーも余裕のあるVAIO-Zでキャプチャするようにした。ログがテキスト形式になるのは見やすいけどサイズがでかくなってちょっぴり大変。さすがのVAIOZでもパケットキャプチャしつつ映像キャプチャすると派手に処理落ちしてコマ落ち・音途切ればりばりに。まあコマンド自体はキャプチャできたんでいいや。ログ保存・解析はGbEとSSDに溢れる環境ならそれなりに快適。

ということで無事(?)、キャプチャ開始回りや解像度、映像設定(色合・コントラストetc)周りの設定コマンドの確認も出来た。解像度設定コマンドの法則性が良く分からんが、使いそうな一通りのパターンでのコマンド列をゲットしたのでまあテーブルでいいや。

てなわけで、あとは動かしてみるだけというところまできた。さてさてどうなるやら。 なおこの処理の最中にオリジナルであるSTK11xドライバのバグっぽいのを見つけた。hue/saturationの設定部分でコメントとコードが一致してない。 まああとでメールするかね。

323880 journal

ttの日記: PC-SDVD/U2G を解析してみるなど(2) 2

日記 by tt
USB Snoopyのパケットダンプをまねすることで、とりあえず初期化部分と思しきところまでWindowsのドライバと同じことができるようになった…と思う。 ごまかしだけど、

[  285.571863] stk11xx: Melco - STK-1150 based device found. Product ID 0x0195.
[  285.571872] stk11xx: Release: 0005
[  285.571877] stk11xx: Number of interfaces : 3
[  285.572632] stk11xx: Initialize USB2.0 Syntek Capture device
[  286.134664] stk11xx: Syntek USB2.0 Capture device is ready
[  286.134874] stk11xx: Syntek USB2.0 Camera is now controlling video device /dev/video0
[  286.134957] usbcore: registered new interface driver usb_stk11xx_driver
[  286.134967] stk11xx: v2.2.0 : Syntek USB Video Camera

とdmesgに出るところまでは来た。まあ映像はおろか、まだ一枚も画像取れてませんが。というか、映像キャプチャスタートコマンドとかを打った時に通るcamera_init()関数とかは全く変更してないし、そもそもその辺りのパケットダンプは取得すら出来てない(汗)ので、たぶんキャプチャ使用とした瞬間に落ちそうな気がする。まあ先は長いけどまだまだ楽しめそうということで前向きに捉えておく。

323651 journal

ttの日記: emacs23 on debian squeeze

日記 by tt
ええっとおごちゃんに怒られそうですがいまだにemacs生活なので…

いままでemacs21でずっと粘ってきたんだが、時代の波には逆らえず23を使うことに。っていうかパッケージ自分で作ってまで頑張る元気は無いので… なのだが色々はまる。

Wnn6が使えない

emacsというより64bit環境に移動したことによる問題だが、これはあきらめる。最近はどうせWindowsからteraterm経由で使うことの方が多いのでLinuxの日本語入力機能はあきらめる。よってeggとかそのへんもさくっとあきらめる。ついでなんでquailなんて使えねーやつが立ち上がらないように

(global-set-key "\C-\\" 'nil) ; kill quail !

して、かわりにWindowsマシンでC-\でMS-IMEが立ち上がるようにしておく。 まあこれはいい。

migemoで後方検索するとエラーが出る

既知の問題らしい。2006年のパッチをあてればOk.

日本語メールが一部文字化け

既知の問題らしい。2008年のパッチをあてればOk.

ちゃんとパッケージャに伝えたほうが良いのかな。まあとりあえずはこれで。

323556 journal

ttの日記: E350 + debian squeeze amd64日記GW編

日記 by tt
Fedora13はgcc4.4.4ベースらしいが、こちらの方はFC13 AMD64+E350マザーボード(私の持っているのとは違うが)でsensorsコマンドが正しく動いているようだ。Debian Squeezeはgcc4.3系ベースなんだろうか。少なくともkernelはgcc4.3.5でコンパイルされているようだが、squeezeのgccは4.4系ぽくも見える。よくわからん。パッケージが4.3.xで作られていたならば、OS純正パッケージでうまく動かなかったのはそこが問題なんだろう。が、てもとではデフォルトではgcc4.4を使うようにしているのに、パッケージを再構築しても再現した、ということは、パッケージ構築時はgcc4.3が使われてしまうということなんだろうか。うーん。ディストリビューションが個別に当てているパッチの違いとか、コンパイルオプションの違いかもしれない。深まる謎…

色々ぐぐると一件だけ似たケースがヒットした。が、解決してないようだ。Debianのバグ報告にも特に何も無い。

backportsに2.6.38カーネルが来たようだ。謎の割り込み問題対策にこいつをベースにE350向けパッチも当てたカーネルを作るか2.6.38で「AMD Hudson Support」ということなので多分AMDのパッチがデフォルトで取り込まれているんだろう、と思いつつも、phoronixの電力問題テストの話も気になる。ちなみに過去に6回ほど起きているようだが、謎の割り込みはいつもIRQ16で、/proc/interruptsによると

16: 0 338 IO-APIC-fasteoi firewire_ohci, HDA Intel

らしい。両方とも使ってないし、こいつらのドライバモジュールをロードしないとかEFIから無効にして様子を見るのもありかもしれない。

2011年5月16日追記:上記の二つのドライバをrmmodしたところ、とりあえず一日ずっと稼動させても問題は起きなくなった。両ドライバを止めても、/proc/interruptsには

16: 2 382 IO-APIC-fasteoi

ってのが残るのは気になるが、まあ、そういうもんなんだろうということで。

322325 journal

ttの日記: PC-SDVD/U2G を解析してみるなど

日記 by tt
気の迷いでPC-SDVD/U2Gというのを買ってしまった。 アナログビデオ(VHS)をPCに取り込むのが主目的なので、まあWindowsで使えればよいのだけど、長時間動かすことを考えるとデスクトップ環境で色々作業している間にサーバマシン(Linux)で動かせたりした方が都合が良いのは確か。ということでどんなもんかと試してみる。

軽くググルと、同じようなカテゴリの商品でも、 プリンストンの PCA-DAV2 だと em28xx ドライバで普通にLinuxでも使えるが、SDVD/U2G は今のところうまくいかない、とのこと。

ためしにDebian Squeezeの入ったマシンにさして見るが、そのとおりであった。一応オーディオ入力だけは汎用USB Audio扱いになって使えるようになったが…

はい終了、では面白くないのでー、まずは部品をチェックしてみる。 ねじは一つも使わず、単純に挟んであるだけなんで、わりと簡単に分解できる。 が、自分で分解するまでもなく、ぐぐると出てくる分解してみたページに書いてあったりする。

  • USB IF部分? STK1150
  • Video Decoder TW9910
  • Audio ADC CS5340

という組み合わせ。なおこのページにもあるとおり、回路構成の関係で品質に問題があるロットがある模様だけど、私のやつをWindowsで使う限り特に問題ないようだ。まあ、最悪他のAudioIF使えばいいので気にしないことにする。

このうち、ADCはまあ普通のチップだし、Linuxで既に使えているので問題ない。

TW9910はごく普通のビデオデコーダチップで、PCIスロット接続タイプのものならLinuxにドライバもあるようだ。チップの機能としては3D Y/C分離とか無いけど、USB BusPowerの枠内で動かすためにはこのぐらいが限界か。まあSvideo入力使うなら問題ない。 ちなみにTechWell社、どっかで聞いた社名だと思ったら日経エレに連載中の、日本人創立者がシリコンバレーでIPOした最初の会社であった。とりあえず尊敬しますな。

で、このなかでメインチップと思われているSTK1150が問題。 当然ながらこいつのドライバが無いから認識されてないわけで。

STK1150 でググルと、EasyCap といわれる USB ビデオキャプチャ製品が存在していて、 こいつはSTK1160+SA7113の組み合わせらしい。 そしてこいつにはリバースエンジニアリングによるドライバ stk11xx が存在している。 あとLinuxカーネルにはSA7113もPCI接続タイプ用の独立したドライバが存在している。

型番的にはSTK1150とSTK1160は同じようなものに見えるが、さて…うまくいけば EasyCapドライバのSA7113用に書かれた部分をTW9910用に入れ替えるだけで動くかもしれないのだけど…

チップベンダのページを見ると両者の違いは一箇所だけで、 1160には"Built-in ADC for mono microphone audio" がある、 ってところだけのように見える。EasyCapにはADCチップなしのパチモンがあって、 非常に音がしょぼい、という情報があるが、多分そいつはこの機能を使っている のだろう(まあ今回はADCがあるので余り関係ない)。

しかし問題はこーゆー表に表れる機能一覧ではなく、制御コマンドとかが変わっている可能性があるということである。 この手のチップは中にマイコンが入っててそいつのソフト部分がコマンド対応をする、てなのが多いが、 そのマイコンのファームは細かく変更が入ったり、下手すると同じチップだけど納入先ごとに違ったりするので…

STKのサイトを見てもデータシートとかはなさそうなんでここはもう全く分からない。 PC CAM以外のProductのページにはドライバとかデータシートがおいてあるのに。 っていうかPC CAMチップの概要として"Linux kernel 2.6.26 and later release"に対応とか書いてるけどどーゆーことやねん。ソース未公開のドライバがあるって事なんかな…

気を取り直して。 STK1160+SA7113, SA7113, TW9910 の各ドライバソースを見ている限り、これらのデコーダは I2CというかSMBUSで制御するようである。まあふつーそうするよね。 STK1150/1160 に備え付けの "serial interface" というのは SMBUS のことなのだろう。 なので常識的に考えて SDVD/U2G も STK1150 と TW9910 は SMBUS で接続されていると予想される。

ということでSMBUS経由でTW9910を制御する(映像調整系)コマンドについては何とかなりそうである。が、STK1150 そのものの制御は全く不明である。

とりあえず強引だが stk11xx ドライバをいじって SDVD/U2G を EasyCap と同じ扱いにしてみる。コードのUSB のベンダーIDとかを書き換えるだけ。結果は…

[93401.782896] stk11xx: Check device return error (0x0201 = 0C) !

ってな感じで、初期化パケットの段階で応答がNGとかいわれた。残念。まああたりまえか。

もう少し真面目にUSBパケットを覗いてみる。 お仕事ならハードウェアの箱を使うんだが、個人ではそうも行かない。 ということで完全ソフトのソリューションを探す。 ぐぐると色々あるようだが、最初に見つかったとあるシェアウェアは評価版が2週間無料ということで、 とりあえずインストール。結果、ダンプは出来たが、ダンプした結果を見ていると数秒で 「ソフトの反応がなくなりました」というダイアログが出て強制プロセス終了させるほか無くなってしまう。うぐぅ。

ということでフリーソフトのUSB snoopy proを使ってパケットをみる。 しばらくメンテナンスされてないので動かないかも、と思ったが、少なくとも 32bit の Windows7 では動かせた(キャプチャ時には管理者権限で実行が必要なぐらい)。

これでゲットしたパケットと、stk11xxドライバのコードを並べて眺める。 目grepならぬ目diff。 ところどころ同じようなシーケンスは存在しているが、結構違うようだ。

これは結構大変そうだが、まあ、根気さえあれば何とかなりそうではある。 時間があったらがんばるとしよう。いやないけど。

あと俺向けメモ。USB Snoopy Proの使い方

  1. F2 (View → USB Devices)
  2. 出てきた窓でFile → Unpack Drivers
  3. 同じくFile → Install Service
  4. 窓を閉じてデバイス一覧から解析したいデバイスを右クリック → Install Restar

取れたダンプファイルは http://www.stillhq.com/usblogdump/ で解析できる、らしい。

typodupeerror

目つきのヤバい少年がナイフをシュッ・シュッと振り回しながら街を徘徊している情景が目に浮かんだ -- あるセキュリティ専門家

読み込み中...