我が家は基本的にそれなりのスペックを持ったデスクトップマシンは1台しかない。残りは既に数世代前の骨董品であり、鯖用のi810+Celeron800やi815+P3-1GHzである。いろいろ実験しようと思うとHDDをリムーバブル化したメインで行なう。で、kernelのコンパイルはやたらリソースを食うのでvmware上では苦しくなってきた。そこで2.6 Linuxをネイティブにインストしようと思ったが中古の3.5’HDDも底を尽いた。そういえば以前、2.5’HDDをM/Bに繋ぐ変換ケーブルを買ったのだが、これがようやく日の目を見ることにw X40の予備に買った1.8’HDDが、丁度遊んでいるので活用。1.8’だが口金は2.5’互換なので、こいつをケーブルに繋いでみる。このメインマシンの唯一の取り得はBIOSでHDDの起動順を設定出来ることだ。これならどのHDDに入れてもOS起動できる。早速、1.8’HDDをプライマリにしてLinuxをインスト、見事起動してくれた。さすがにHDDが遅いが、vmware上よりは快適に動作する。Vineには2.6系が無いのでCentOSにしておいた。使い勝手が違うので設定がよくわからない・・・orz
2006/7/9 日曜日
2006/7/8 土曜日
心を何にたとえよう
ゲド戦記ってどうなんだろう?ハウルの動く城は絵が変だったので見なかったが、これは絵の感じが戻ってるっぽい。それと唄も気に入ったw パイレーツオブカリビアン2、M:I:3とこの夏は映画を見に行くかなぁ・・・
基盤FlashのMTD対応
– MTD0:0000-0000 (256KB) Bootloader
– MTD1:0004-0000 (512KB) Partition Table
– MTD2:000C-0000 (1MB) Kernel
– MTD3:001C-0000 (29MB) File System(/)
– MTD4:01EC-0000 (1.25MB) Data
– END:0200-0000
– MTDのサイズはイレースブロック単位(BLK=128KBの2チップ構成パラレルアドレス結線のなので256KB単位)
– MTDドライバのメジャー番号=31(0x1f)でマイナーは(0,1,2,3,4)
– MTD1は多分不要
– 2.6kernelは圧縮して約1.2MBあるのでMTD1を削除してMTD2領域を広げる
– 起動devはCONFIG_CMDLINE=root=1f03 ro でmtd3に割り当てられている
2006/7/7 金曜日
SMC91C
– A0-A1はチップに結線されていないようなので32bitアクセスしかできないはず。
– A1はグランドされているがA0は不明。グランドされてないと”1″が立ってしまうのできっと”0″だろう。
– D0-D31まで結線されているようなので32bitデータアクセスが可能かもしれない。
– アドレスバス上位6bitでチップセレクトをデコードしていると思われるが回路図に無い。
– 取り敢えずLANではDMA転送を行なわない設定にしておく。
– probeでLANが検出されるようdrivers/net/Space.cにSMC91を追加しておく。
– ボードによるConfigをヘッダーに追加、PXA IDP用をぱくってDMAをoffにする。32bit I/Oを有効のままに。
– LANのレジスタには奇数オフセットのものがあるので、Quadアクセスして後でバイトを抜くのかも。
はっきり言って、これは無理だwwwwwwww 中途なパッチ状態でkernelコンパイルはできたが、これ絶対動かない。
ARMのオペランド
全てが32bitワード固定長のARM命令ではオペランドを外に持てない。レジスタに32bitの即値や32bitアドレスを直接代入出来ないのでマクロを使ってアセンブラに任せる:
ldr rd,=const
ldr rd,=label
これらは適当な命令に変換される。場合によってはメモリから即値をロードするよう変換されるので、データ領域を確保しておかないといけないが、これはリテラルプール擬似命令で指示する:
.ltorg
何ともやっかいなアセンブラである。オフセットも12bitまでなのでTEXTセクションに定数データが置かれることも珍しくないらしい・・・
ARMアラカルト
ARMにはret命令が無い・・・、ってかコールしてもスタックに戻り番地が積まれない。戻り番地はレジスタに保持され、戻る時はpcレジスタに直接入れて復帰する。コールをネストする場合は自分で戻り番地を保持しとかないといけない(確かに命令はブランチなので間違ってはいないんだけど・・・)。さすがRISCである、i386までしか知らない世代には驚きだw MC68000系ではすらすらコードが書ける程理解しやすいアーキテクチャだったが、ARMでは無理wwwww 最適化のこともあって素直にコンパイラ使えということなんだろうが、残念ながらkernelにはアセンブラコードがある・・・orz
2006/7/6 木曜日
予想以上に苦戦
2.4から2.6へのLinuxの移植であるが、取り敢えずドライバ類は一切省き、シリアルコンソールだけで動作させるのを目標に取り掛かってみる。しかし、2.4のソースが流用できるだろうと踏んでいたが、2.6では思った以上にマクロや定数、関数定義が変わってしまっている(まぁ、2.4で泥臭かった部分が洗練されたのだが)・・・orz ある程度kernelのソースは読まないといけないと思っていたが、こりゃ前途多難である・・・
(more…)
マシン発熱
やはり気温が高くなってくるとマシンの発熱が気になる、ってかモワっと部屋に熱気を感じる。今までは冷房のよく効いた会社だったのだが、自宅では一日中冷房はかけていない。デスクトップマシンは静音対策でファンの回転数を下げているので、負荷が掛かるとCPU温度がヤバい領域まで達してしまう。T43もしかりで、一日作業すると底面は触れない程熱をもつ。今はデスクトップのvmware上で動作するLinuxをT43からリモートで作業して負荷を分散させようとしているが、それでも結構な発熱である(これをT43だけでやるとスゴイ発熱なのだ・・・)。最近、ノートパソコンの下に置く冷却装置とか出ているが、ちと探してみようかと思ってしまう。もうじきCore2が出るが、これって発熱の方はどうなんだろう・・・?

