30-Apr-2009
[腕が痛いので]

今日の更新はお休みです…

べ、別に今月は毎日更新を狙っている訳じゃないんだからね!←その芸風はもう飽きた(23:45)

29-Apr-2009
[漢字は苦手です]

Tech総研の漢字検定に釣られてみたよ。90点。

あのテストは100点取らなきゃ人間じゃないから、という空気が漂っているようなので、明日から人未満です。サーセン。

押下は「おうげ」、法面は「ほうめん」とは読まないんですね。正しくは「おうか」、「のりめん」…っと。また一つ賢くなれるといいな。

でもさあ、書き取り問題、ケイソの選択肢に砒素を並べるのは問題としてどうなんでしょうか。手抜きにしか見えないのですが←負け惜しみにしか見えない。

朝:即席ラーメンとパン。昼:冷凍庫の中にあったパスタ。夕:肉野菜うどん。(21:35)

28-Apr-2009
[うーむ]

最近はx86の、16bitリアルモードでコードを書くのが流行っているのだろうか…

入手性が良好で、動作が確実なCPUボードという視点では、確かにPC/ATというのは良い選択なんじゃないかと思う今日この頃(でもx86用のICEってあったっけ?あっても高そう…)

朝昼:いつもの。夕:白飯、色々残りもの。(22:35)

27-Apr-2009
[E8エミュレータ終了のお知らせ?]

E8aはともかく、E8はVista対応リストに載ってないというのが、なんとも。

一応、リストにない製品は保守フェーズに入る製品もしくは計画中の製品とは書いてあるけども…まあ基本的には期待すんなっていうのが世の常だし。

E8の動作を解析して(難しそうだと思うけど)、JTAG ToolsやUrJTAGと組み合わせて使えるようにしてみたらどーよとも思ったけど、多分あのリストに挙がってるものを素直に買うなり作るなりする方が早くて確実に一票。

折角なので、HEWのインストール・おぼえがき。

とりあえずソフト突っ込んで、ユーザ登録して、チェックプログラムが通ることを確認して今日はおしまい。

PASS

…うんうん、PASSしたのはよーっく分かったから。

朝昼:いつもの。夕:白飯、肉を焼いて野菜を茹でて、あとは納豆だったか…(23:35)

26-Apr-2009
[\(^o^)/(4):原因判明]

sysinit_main.cに手を入れて、丹念に追いかけます。ぶっちゃけ、printf()デバッグとなーんにも変わりません。

ということで、23-Apr-2009の内容と一致しますね。

結局のところ、kernel/sysdepend/cpu/at91/cpu_support.Sにあるknl_call_entry()の、以下の部分に問題がありました。

#if USE_TRAP | (USE_DBGSPT & USE_HOOK_TRACE)
	/* micro T-Kernel System Call */
	mov	r10, lr, asr #16	// r10 = Function number
	ldr	ip, =N_TFN + 0xffff8000
	cmp	r10, ip
	bgt	l_illegal_svc

	mov	lr, lr, lsr #8
	and	lr, lr, #0xff		// lr = Number of arguments
	cmp	lr, #5
	bne	l_nocopy
	ldr	ip, [r4]		// Copy fifth argument
	stmfd	sp!, {ip}
  l_nocopy:

	ldr	ip, =_svctbl - (0xffff8000 << 2)
	mov	lr, pc
	ldr	pc, [ip, r10, lsl #2]	// micro T-Kernel system call
#else
	b	l_illegal_svc
#endif

tk_cre_flg()を実行すると、libsvc内のSWI命令でknl_call_entry()へ飛び、_svctblを参照してT-Kernel APIの各処理を担う関数へ飛びます。しかし、その_svctblの中身がこんな風に

00000b64 <_svctbl>:
     b64:	0b5c      	.short	0x0b5c
     b66:	0000      	.short	0x0000
     b68:	00000df5 	.word	0x00000df5
     b6c:	00000eed 	.word	0x00000eed
     b70:	00000fa1 	.word	0x00000fa1
     b74:	00001061 	.word	0x00001061
     b78:	000010e5 	.word	0x000010e5
     b7c:	0000115d 	.word	0x0000115d
     b80:	00001221 	.word	0x00001221
     b84:	0000125d 	.word	0x0000125d
     b88:	000012a5 	.word	0x000012a5
     b8c:	0000137d 	.word	0x0000137d
     b90:	000013fd 	.word	0x000013fd

Thumb命令を指している(アドレスが奇数になっている)にも関わらず、ldr pc, [ip, r10, lsl #2]でpcに代入しようとしています。

ARM←→Thumbステートの切り換えは基本的にbx命令を使うのが鉄則なので(他の方法もあるけど、ここでは敢えて触れない)、こんな風にldr命令でpcをいじってしまうのはダメなのです。という訳で、10-Apr-2009の修正をもう少しマシにしてみたのがコレ(リファレンスのコードにLPC2388対応パッチを当て、その後にこれを当てます)。

ちなみに、μT-Kernel/DS(Debugger Support)側のAPI呼び出しも上と同じようなコードになっているので、とりあえず直しています。動くかどうかは知りませんけど。

μT-Kernelのリファレンスコードは、一応Thumb-interworking対応ということになっているようですが…μT-Kernel/DSで使用する各種のフックはpcをldr命令で直接設定しているため、ARM専用です(これって仕様書に書かれていたっけ?)。

お手軽に直すのであれば

(before)
ldr	ip, =hook_xxyyzz

ldr	pc, [ip]
(after)
ldr	ip, =hook_xxyyzz
ldr	ip, [ip]
bx	ip

とでもなるのでしょうが、完全に等価な動作にはならない以上、実際にこれでokかどうかは謎です。

また、μT-Kernelの各種APIを呼び出すために使用するlibsvcはARM命令で記述されているため、Thumb命令で記述したコードから呼び出すと地味なオーバーヘッドがあります。実用的に使うのであれば、libsvcをThumb命令で書き直す方が良いでしょう。

という訳で、USE_TRAPを使用したLEDの点滅サンプル(kernel-rom.hexkernel-rom.map)を転がして、この件はとりあえず終了〜

朝:寝てた。昼:即席ラーメン他。夕:白飯、肉と野菜の炒め物。(21:25)

25-Apr-2009
[\(^o^)/(3):前か後ろか]

タイマ割り込みは殺したまま、icrt0.Sをさらにいじって、r0〜r3レジスタの保存とUARTの送信完了待ちを入れてみました。これを利用して、cpu_support.Sのknl_dispatch_entryの最後にあるEXC_RETURNの直前に、こんなコードを仕込んでみます。

20090425.png

EXC_RETURN(マクロ)によって、スタック上のSPSR_svc, ip(r12), pc(r15)をロードし、切り換え先のルーチンへ飛んで行きます。という訳で、その直前のスタックの状況を確認してみたのですが…SPSR_svcはThumbモードを示していますし、pcもおかしなアドレスは指していないようです。kernel-rom.map曰く、0x000003e8はknl_init_task()ということなので、ディスパッチャから抜けた先を追いかけてみることにします。

朝:寝てた。昼:妻にお任せ(パスタ)。夕:ホカ弁。

家宅捜索って言うけどさあ、捜索の名を借りた証拠隠滅工作の間違いじゃね?(22:15)

24-Apr-2009
[\(^o^)/(2):チェックすべき事項の洗い出し?]

本来ならarm-elf-gdbに食わせた結果を元にどこに何を仕掛けるかを考えるものですが…ちょっとあの惨状ではどうにもならないので、H8/300Hノーマルモード版のログを参考にしてみます。ありがとう過去の俺。

基本的に、各種メモリエリアの初期化→OSの使用する各種領域・支援ルーチン類の初期化→初期タスク作成→ディスパッチャを使って初期タスク起動→初期タスクの処理、という流れみたいなので、どの辺りが危険そうかというと…基本的にUSE_TRAPで有効化されるコード全部、と書きたいのですが最初に疑うのはディスパッチャだと思う多分。

あと、割り込みの影響でおかしくなる可能性もあるので、タイマ割り込みを一時的に殺してみるという手もあるかもしれない。単純に初期タスクを起動して終了させるだけなので、タイマ割り込みが無くても困らないし。

身も蓋もない話だけど、こういう状況だと泥臭いことを手当たり次第やってみるしかない、というのが結論だったりします。勘と経験と知識と運とその他色々(食費とか時間とか)、どれも欲しいです。ぃゃ運頼みはマズいか(適当やって動いちゃった、というのは問題の先送りに過ぎないので、運頼みは良くないんですが…ふとした拍子に問題点に気付くってのは運なのかなあ)。

さて、どこから始めましょうか。なんとなくここが怪しいから、という理由にしても良いのですが…流れを乱すタイマ割り込みをまずは止めてみることにします。

割り込み発生時の処理は、割り込み発生→割り込みハンドラ処理→SWI命令でディスパッチャ起動、となっていますのでちょっと厄介です。割り込み発生時のARM/Thumbステートを、きちんとディスパッチャまで持っていけるかどうかが気になったので。

という訳で、タイマ割り込みを殺して、試してみましょう。

20090424.png

…ハズレorz(ヤケを起こして、何度かリセットしていますがダメなものはダメ)

朝昼:いつもの。夕:白飯、豚肉とキムチの炒め物、納豆。(23:15)

23-Apr-2009
[\(^o^)/(1):状況と使える道具の確認]

ICEの類でもあれば、ブレークポイント仕掛けてあれこれ調べて終了、なんですが…そんな便利な物はありません。買うなり作るなりするお金もありませんし(あの雑誌一冊でも、結構手痛い出費なのよ)。

という訳で、万能ナイフで頑張る冒険野郎に敬意を示し、俺も頑張ってみます。

とりあえず、UARTの初期化が済んでいることに期待して、こいつを使ってみます。LEDの繋がったGPIOというのもありますが、LEDを使えるようにする手間を考えるとちょっと面倒です。

まずはicrt0.Sに手を入れて、Undefined instructions, Prefetch Abort, Data Abortが起こっているかどうかを調べてみます。詳細なメッセージを表示するのも大変なので、U, P, Dとでも略します。FIFOは16段ありますから、データの送信完了は気にせずにばんばん書き込みます。

20090423.png

Undefined instructionsが起こっていることが分かったので、欲張ってr14(lr)の下位16bitとSPSRの下位16bitを表示させるようにしてみました。

lrの値とkernel-rom.mapから、tk_cre_flg_implの中からundef_vectorへ飛んできたようです。また、SPSRのbit5が0であることから、ARMステートでThumbコードの中へ突っ込んだためにアイタタなことになっていると言えそうです。…でも、tk_cre_flg()の類を呼び出した覚えは無いはずなのですが。

あと、この状況で分かることとして…UARTが使えている以上はsio_init()の呼び出しは成功しています。また、表示されるはずのmicro T-Kernel Version 1.01.00が表示されていないので、このメッセージを表示するよりも前の段階でコケています。

結構広い範囲を捜索することになりそうですが、こればかりは地道にやるしかなさそうですね…(23:45)

23-Apr-2009
[怒るのは結構ですが]

発言を全部聞いた訳では無く、ネット上のニュースで反応するのもどうかとは思いますが…草なぎ容疑者、地デジメーンキャラ降板へ=鳩山総務相「めちゃくちゃな怒り」って、要約すると

「容疑者は国を挙げてフルボッコ」

ということですよね。

言論弾圧を看過し、人権侵害を認めるような人間が上に立っているというのは、非常に危険な状態だと思うのですが、如何でしょうか。

朝昼:いつもの。夕:白飯、茹でた野菜と鶏肉。(20:15)

asahi.comの記事はもっと過激ですね。「最低の人間」だそうです。(23:40)

22-Apr-2009
[そーいや]

Thumb化のテストでUSE_TRAPで詰まっているアレ、gdbに食わせてなかったので食わせてみたんですが…なんかtm_monitor()で固まってます。ていうかなんでそこに飛ぶのかな。

あと、デバッグモードだと何故か動くのも謎です。

デバッグモードか否かで最適化のレベルが変わったり(-O0/-O2)、デバッグ用のオブジェクトが追加されるので、その辺りの違いから攻めてみようかと考えています。

朝昼:いつもの。夕:白飯、刺身、チンゲンサイの炒め物。(22:00)

…ごめん、なんか混乱してる。ちょっと頭冷やしてから挑み直すよ。

ざっと見直してみたら、USE_TRAP指定が抜けてるとか、書き込みモード用のジャンパの設定を間違えていたりとか、思いつきで慌てていじるとロクなことがない。とほほorz(22:10)

21-Apr-2009
[ちょっと宇宙戦争に行ってきた]

UGSF-2 Geosword ready for start.って訳でSTARBLADEですよ。WiiのVirtual Console Arcadeの。

SOLVALOUの処理落ちが結構酷かったので出来はどうなんだろうと心配していましたが…処理落ちは無かった気がするけどBGMがなんとなく怪しい感じがします。

コマンダー(ラスボス)戦BGMは一部のパートが妙に目立ったのと、エンディングBGMは一部の音色が微妙に違っているように思えます(比較対象は昔持ってたサントラの記憶とニコ動にうpされているプレイ動画)。どちらも錯覚という可能性が高いのですが、個人的には「ん?」と思った部分です。

PlayStation2版(鉄拳5がおまけ)のスタッフロールで削除されているらしい、めがてんの名前は…Wii版ではきちんと出ています。今はナムコに所属していないとは言え、当時のスタッフに対する敬意を払うのは当然の礼儀でしょう。

ちなみにエンディングを観るまで、大体\1000くらい使っています(1クレジット\200計算で)。もちろん、自動連射on、シールドはたっぷりの設定で。この手のゲームは好きだけど下手なんだよ!(22:20)

21-Apr-2009
[食事メモだけ]

朝昼:いつもの。夕:白飯、スーパーで買ったサラダ、焼いたスペアリブ。

肉を焼く行為に、バーニング(笑)を使うのは流石に無理らしい。

…っていうか、バーニング(笑)って何?(21:30)

20-Apr-2009
[某所で]

E8エミュレータ新品・ただし動作確認できないためジャンク扱い、というのを痛くない値段で落札してみました。と言っても、まだ商談中(送金方法の問い合わせ中)なので、モノを手にした訳ではないのですが。

…で。

コレ、何に使うんでしょうね(ぉぃ

軽く調べた範囲では、ルネサスの石は何種類かのデバッグ用インタフェースがあって、そのうちの一つということまでは分かっています。

まさかとは思いますが、あのハコは単なるJTAGのpodで、その上を流れるプロトコル(とでも呼べば良いのかな)がE8だのH-UDIだのAUDだの、っていうんじゃないでしょうね…?

朝昼:いつもの。夕:白飯、納豆、餃子(野菜分が不足っぽい)。(21:50)

19-Apr-2009
[難しいですよね]

オカズでも腹は満たせる。でもやっぱり主食は欲しい。

主食さえあれば大丈夫。でもオカズが無いとさびしい。

…という意味不明なことしか書けないのが、なんとも。

朝:寝てた。昼:妻の実家にて。夕:白飯、焼いた鶏肉、野菜とベーコンの炒め物。(23:40)

18-Apr-2009
[試作。]

μT-KernelをH8/3664に移植してみたアレ、のその後。USE_TRAP抜きでいってみよーの続き。

足りないものは補えばいーじゃないということで、knl_dispatch_entry()では、JSR命令で飛んできた直後にCCRをスタックに積むようにしてみました。当時、CCR→PCの順番にスタックに積んでいると思っていたため、TRAPA命令に頼らないと無理かなと思っていたのですが…PC→CCRの順番ということが分かったので挑んでみることに。

knl_inthdr_startup(), knl_timer_handler_startup()については、TRAPAで戻る代わりにtk_ret_int_impl()へ飛ぶようにすれば良いとして…問題なのがknl_call_entry()。

これ、サブシステム(拡張SVC)呼び出し用のTRAPAだけでなく、USE_DBGSPTとUSE_HOOK_TRACEの指定が同時に行われた場合にはlibsvcからJSRでも飛んでくるという点が厄介です。

何が厄介かというと、H8/300HアドバンストモードであればTRAPA/JSRの両方ともスタック上に4byteの領域を確保するのに対し、H8/300Hノーマルモードでは4byte/2byteとなるため、JSRで飛んできた場合は補正処理が必要になるのです。ちなみに、H8/300LではTRAPA自体が存在しないので、こんなことで悩む必要すら無かったりします。

とりあえず、デバッガサポート機能には対応しないので、この辺りは移植元のコードをそのまま突っ込んでスルーしていますが…真面目にやるとしたら、こんな感じのコードでも書いて、ベクタテーブルに記述したTRAPAの飛び先をknl_call_entry_trap()に変更するのでしょうか。

	.text
	.balign	2
	.globl	Csym(knl_call_entry)		// 新knl_call_entry・JSR用
	.globl	Csym(knl_call_entry_trap)	// 旧knl_call_entry・TRAPA用
Csym(knl_call_entry):
	dec.w	#2, r7			// スタック補正

	// fall-through

Csym(knl_call_entry_trap):

	push.l	er4			// er4, er6 = working register
	push.l	er5			// er6 is used for pass fncd
	(以下省略)

別解もありそうな気がしますが、この辺りの詳細は使う側の好みで決めればいーぢゃんというのが個人的な意見です。

という訳で、この辺りのアイデアをコード置き場上のパッチに入れる予定は今のところありません。互換性検証に通らないとμT-Kernelを名乗れないという問題も依然として残っています(それ以前に、検証を受ける手段がありません)から、変な物突っ込んでおかしくするようなことも避けたいですし。※LPC2388のThumb対応コードも、同様の理由で保留中です。

朝:寝てた。昼:アジア風かけご飯もどき。夕:冷食ピラフ。(24:20)

17-Apr-2009
[むー…]

とりあえず記述してみたけど、何とも微妙な…動くのかなコレ。

まあいいや明日以降に試そうっと。

朝昼:いつもの。夕:妻にお任せ(パスタ)。(24:35)

16-Apr-2009
[もう少ししんみりした気分でいさせてくれよう]

ですが、色々思うことがあるのでキーを叩くことにします。

大阪のラジオの件、注目しています。色々な意味で。

関東もそうですが、「なにかがおかしい」と感じざるを得ません。

何を必死に隠しているかは知りませんが、そこまで必死になる以上、相応の覚悟は出来ているものと見做します。

iommu.cの更新履歴を見る限り、4G超えをやるならOpenBSD 4.6以降かなーって気がしました(これを書いている時点だと、12時間ちょい前にRevision 1.27になったとこ)。待ってるぜー

そういやOpenBSD/amd64って、Intel系のCPUで4G超えできるんでしょうか。iommu.c、AMD専用という気がなんとなく…

μT-KernelのLPC2388への移植、USE_TRAPを有効にしてコンパイルするとバイナリサイズが随分増えます。

現時点で、H8版、特にH8/3664版は(移植の手を抜くために)USE_TRAP前提としていますが…多分これ直さないとマズいよね。やってることの割に随分デカいなとは思ってたんだけどさあ。

朝昼:いつもの。夕:白飯、納豆、ゴーヤと豚肉の炒め物。(21:50)

15-Apr-2009
[…]

火葬場は、苦手です。

…「○号炉、運転を開始しました」と機械に無機質に告げられると、もうね。

朝:食べてない。昼:斎場にて。夕:白飯、納豆、酢豚(キット使用)。(20:40)

14-Apr-2009
[明日は外祖父の葬儀です]

今日は通夜。

朝:即席ラーメン。昼:実家にて。夕:斎場にて。

納棺に立ち会いましたが、彼の生きてきた時間は非常に重かったです。(22:15)

13-Apr-2009
[んーと]

再度主張しておきます。

民放の真似事するなら、尚更…ね。

以前にも書いているネタ、再利用です。当時から変わってないよんと。

ま、.uk使ってる日本人風情が言っても説得力ゼロですが、それが何か?

朝昼:いつもの。夕:白飯、茹でた肉と野菜をドレッシングで和えてみる。(21:35)

12-Apr-2009
[日付間違えたぜー]

日が変わってることに気づかず、いつも通りに日記書いたら未来の日記になってた…

折角なので、OpenBSD-4.4でもiommu.cのRevision 1.25→1.26で行われた修正を入れて、bigmem=1にして、4G超えできるかどうか試してみました。

今度は大丈夫そうに見えるんだけど…Linux界隈ではData corruption with Hardware IOMMU on Nvidia chipsetsなんて話があるのを思い出して、元に戻しました。

記事を追いかけた範囲では、x86_64: make GART PTEs uncacheableということで、GARTが使うPage Table Entryのキャッシュがoffかどうかを調べれば良さそうです。

…試す前に、ちゃんと調べてからにしようよ。HDDの中身が消えて困るのはアンタだよ?>俺

朝:白飯、納豆、即席味噌汁。昼:増田屋にて(実は一度行ってみたかった)。夕:野菜炒め、以前作った野菜スープ、白飯、唐揚げ(スーパーで買った物)。(20:05)

11-Apr-2009
[寝坊したぜー]

明日も早いんだけど…

OpenBSDのCVSweb、src/sys/arch/amd64/pci/iommu.cのRevision 1.26のコメント、

Attach iommu on AMD family 10h processors (e.g. phenom) too.

ひょっとして、あれか。メモリ4G超えはAthlon64系に限られていたのか。

あと、OPENBSD_4_5のCVS tagが付いているのはRevision 1.23だったりするので、この修正の恩恵を受けられるのはその先(4.6以降)ということか。

src/sys/dev/pci/ahci.cのRevision 1.145で行われた、MCP67のAHCI対応は今度の4.5に入るんじゃないかなーとは思っているんだけど…

4.5に上げるべきか、見送るべきか、ちょっと悩んでます。

朝:カップラーメン。昼:パンとレトルトのカレー。夕:弁当、あと実家であれこれと。(25:15)

10-Apr-2009
[凍結しようかと思ってたんですが…]

とりあえずここまでやってから凍結します(LEDが点滅するだけのtest2: kernel-rom.rom, kernel-rom.hex, kernel-rom.map)。

08-Apr-2009から変えた箇所は二つ。

一つはicrt0.Sのswi_handlerの処理。SWI命令はまだ使っていないけども、これは必須科目です。特に、USE_TRAP指定を有効にする場合は(まだ未対応ですが)。オリジナルと異なり、ARM命令でもSWI 0〜255までしか認めていませんが、こればかりはThumb命令側の制約なので仕方がありません。

もう一つが、手を入れたくなかったcpu_support.S。というのも、基本的にこいつが一番のキモなので、下手にいじると確実に泥沼化します…が、knl_dispatch_entry()の最初にある、lr(r14), ip(r12), CPSRの順番でスタックに積む部分に問題がありました。

これは、EXC_RETURN(include/tk/sysdepend/app_at91/asm_depend.h)内のldmfd sp!, {ip, pc}^で復帰するための仕掛けなのですが、Thumbコードから以下のようなglueを経由してARMコードで記述されたknl_dispatch_entry()を呼び出すと、lrレジスタの内容とCPSRの内容がknl_dispatch_entry()の期待するものになりません。

00002714 <__knl_dispatch_entry_from_thumb>:
    2714:       4778            bx      pc
    2716:       46c0            nop                     (mov r8, r8)

00002718 <__knl_dispatch_entry_change_to_arm>:
    2718:       eafff896        b       978 

真面目に説明を書きたいのですが、明日朝が早いので割愛します。__knl_dispatch_entry_from_thumbにbl命令で飛んで来る際のlrの内容(bit0='1', Thumb)と、knl_dispatch_entry()内で読み出すCPSRの内容(bit5='0', ARM)が食い違うとか、その辺りの話です。

朝昼:いつもの。夕:弁当。ちょっとどたばたしていて飯を作る余裕が無いのです。(23:30)

09-Apr-2009
[Thumb化は無期限で凍結…]

うえーん…分かんないよう(泣

朝昼:いつもの。夕:いわゆるホカ弁。(21:40)

08-Apr-2009
[動きませんよ]

折角thumb-interworkが使えるようになったので、カーネル本体をThumbでコンパイルしたら動くかなーどこまで小さくなるかなーという実験をやってみます。

こんな風に手を入れて(Makefileは作業で使ってるものをそのまま突っ込んでます)、kernel-rom.rom, kernel-rom.hex, kernel-rom.mapを作ってみました。

kernel-rom.mapにある__data_orgのアドレスで判断すると…0x2630だから9776byteですね。昨日作った、thumb-interworkありのARM版は0x3460(13408byte)なので、元の73%程度に圧縮されたことになりますか。

しかし、コレ、現時点では正しく動きません。LEDが点滅するはずのusermain.c(test2)を組み込んでも、全然点滅しないのです。(kernel-rom.rom, kernel-rom.hex, kernel-rom.map)

あと少し直せば動くのかなーという気がしてちょっと悔しいものがあるのだけど…Thumbの使い方はもうちょっと勉強した方が良いってことで今日は終了。

朝昼:いつもの。夕:妻にお任せ(パスタ)。(20:45)

knl_getCPSR()の置き換えに失敗してるかもしれないなー。MRS命令を実行するときって、必ずARMステートだし。(21:25)

でもこれ割り込み禁止状態か否かの判定に使ってるから、あんまり関係ない気がするんだけどなあ…何がおかしいんだろう…何かがおかしいのは確かなんだけど…(22:10)

cpu_support.Sを見ると、knl_timer_handler_startupがbl tk_ret_intなんてことをやっているのだけど…これ、blx命令で飛ぶところなんじゃないかなあ。ARMv5であれば(ARM7TDMIはARMv4)。まあ、俺が無茶苦茶やってることは把握した。(22:45)

うーん、blx云々も見当違いっぽいなあ、もういいや今日は寝る。(22:55)

07-Apr-2009
[作り直そう]

pkg_add gcc-4.2.20070307p7.tgzは上手くいかなかったし、(前にも試してダメだったような…)gcc-4.3でもt-arm-elfの差し替えが要るのか、ということが分かったので(要らないと思ったから4.2じゃなく4.3を使おうと思っていた)、大人しくgcc-4.2でarm-elfなtoolchainを作り直してみる。もちろん、前回と違って今回はinterwork対応で。

…前回と異なる部分は下線引いときます。

binutils-2.18 (arm-elf)
適当な場所からbinutils-2.18.tar.gzを拾って、tar zxpf binutils-2.18.tar.gz; cd binutils-2.18; mkdir arm-elf; cd arm-elf; ../configure --target=arm-elf --prefix=/usr/local --enable-interwork --enable-multilib --disable-nls; gmake; gmake install。
gcc-4.2.4, newlib-1.17.0 (arm-elf)
http://www.gnuarm.org/t-arm-elfを入手し、どこかに保存しておく。適当な場所からgcc-core-4.2.4.tar.bz2とnewlib-1.17.0.tar.gzを拾ってきて、tar jxpf gcc-core-4.2.4.tar.bz2; tar zxpf newlib-1.17.0.tar.gz; cd gcc-4.2.4; cp どこかに保存しておいた/t-arm-elf gcc/config/arm; ln -s ../newlib-1.17.0/newlib .;mkdir arm-elf; cd arm-elf; ../configure --target=arm-elf --enable-languages=c --with-newlib --prefix=/usr/local --enable-interwork --enable-multilib --disable-nls; gmake; make install。

ちなみに差し替え前後のt-arm-elfをdiffするとこんな感じ。なんでこれがデフォルトで入っていないんだろうってツッコミ入れたくなるんだけど、何か事情があるんだろう。

サイズ比較用に、interworkを有効にしたkernel-rom.rom, kernel-rom.hex, kernel-rom.mapを作ってみました。

interwork無効のkernel-rom.rom, kernel-rom.hex, kernel-rom.mapと比べると、多少太ってます。

朝昼:いつもの。夕:白飯、野菜とベーコンのスープ、納豆。(21:45)

14-Apr-2009補足:gccのconfigureが./configureとなっていましたが、正しくは../configureです。修正しました。

06-Apr-2009
[あれ?]

gcc-4.3.xをビルドする際に必要なのってGMPとMPFRの他に何かあったっけ?それ以前にgcc-3.3.5でイケたっけ?(って書いてる以上、うまくいってない)

実はきちんと覚えていない(し面倒なのでやり直すのも勘弁してほしい)んだけど、確かconfigureの時に--enable-languages=cの場合、ビルドは通るけど何かをした時に「error trying to exec 'cc1plus': execvp: No such file or directory」というエラーが出ていたような気がする。

んでもって、--enable-languages=c,c++の時は、ビルド中にchecking for compiler with PCH supportで止まってたような。

Prerequisites for GCCの、although versions of GCC prior to 3.4という記述が妙に引っかかって…イマドキはgcc-3.4以降を使うでしょフツーと言われているような気がしなくもないというかやっぱりそうなのかな。

困ったときはパッケージにに頼ってみるベということで、ftp.openbsd.orgを覗いてみたら…gcc-4.2.20070307p7.tgzなるパッケージを見つけた。これを使えば良いのかな?

朝昼:いつもの。夕:白飯、炒め物(書くのが面倒になってる)。(23:30)

05-Apr-2009
[ふむー]

ケータイとかITRONをガラパゴスとdisる人間が、地デジやワンセグをdisらないというのが不思議でたまらない。

あれこそガラパゴスなのに。(23:20)

05-Apr-2009
[RiscPCおぼえがき]

VirtualAcornがセール中。RISC OS 4.02/StrongARMモデルが£59, RISC OS 4.39(Select)/StrongARMモデルが£79。これなら手が届きそうな気がする。

RISC OS 3.6, 3.7を4.02に、RISC OS 4.02を4.39にアップグレードするCD(download version)が£20, エミュレータ向けのRISC OS 4.02 ROMイメージの入ったCD(download version)が£5。どちらもRISCOS Ltd Shopにて。download versionってことで…多分ISOイメージの類かな。

RPCEmu Linux Guide。FreeBSDやMacOS Xでも動くなら…試してみる価値はあるのかぬうと思って試してみたら、「OpenBSDなんか知らないよーん」とconfigureに蹴られたorz。んでも、RISC OSのfloppy discってMS-DOSでお馴染みの720k/1440kフォーマットではないという点が厄介で…Linuxならfdutilsでゴリ押しできるものの、OpenBSDだとここは苦労しそうな予感。

まあせいぜい生きてるうちに花を愛でておけってことで、ちょいと花見してました。酒うまー

tdsc_0018.jpg

親父のデジカメ(結構高そうな奴)を借りて撮ってみたんですが…何枚か撮ったうち、マトモに使えるのはこれだけだったりします(しかも、一番てきとーに撮った物だったり)。やっぱり、酔っ払いにカメラ持たせちゃダメですね。

朝:寝てた。昼:適当。夕:焼きうどん。(20:45)

04-Apr-2009
[忘れる前に]

(政治的な理由により名前が使えない)のLPC2388 port、コード置き場に転がしておきます。と言っても、22-Mar-2009の物に移植元からの修正点を記したCHANGES.txtを追加しただけなのですが。

実装仕様書は、移植元の実装仕様書と修正差分とLPC2388のデータシートとARM ARM読んでください、で済ませたいのが本音なのですが…ダメでしょうね、やっぱり。

朝:寝てた。昼:パンとか。夕:白飯、スーパーで買った惣菜ほか。(24:05)

03-Apr-2009
[【注意喚起】nisiq.netのトラブル【その後】]

31-Mar-2009にあったトラブル、一応こちらでは31-Mar-2009の夕方頃には復活しているのですが、以下のようなアナウンスが出ているので警戒はしておいた方が良いかもしれません。というか、正直このトラブルには肝が冷えましたよ…

20090403.png

もっとも、DNS cache poisoningあるいはその類を食らったのではないか?というのはこちらの勝手な推測なので、実際は(画像に記されているように)単なるサーバの障害なのかもしれませんが。

ただまあ、nisiq.netはもともとBTNISというISPのドメインで、ここが後にharmonix.ne.jpになってみたりfamille.ne.jpになってみたり…という経緯があるので、多分色々と手薄な部分があったんだろうなーという邪推はさせて頂きます(だって障害としか書いてないんだもん)。悪く思わないで下さいね?

朝昼:いつもの。夕:白飯、唐揚(チキンフード大和田で買った物)、野菜炒め。

チキンフード大和田、確かあのお店は25年以上前からあったんじゃないかなあ(実は同じ場所にある別の店かもしれないけど)。とりあえず、あの場所は親と一緒に行って唐揚げを買ってもらった記憶があるってことで…まあとにかく戻ってきた以上は一度行ってみたい店だったのだな、うんうん。機会があったらまた行くぜ。

あとは鳥忠(橋本店と相模原店があるけどリンク先は橋本の方)と、家の近くにある土曜しか店が開いていないという焼き鳥屋に行きたいのう。

海外じゃ高いらしいんだけど、日本は鶏肉安いし、美味いから。(22:55)

02-Apr-2009
[あーあー…]

TBSラジオのストリームも終わっちゃったし、OTTAVAも随分番組が減っちゃったし、正直どうしろっていうんだっていう春の大改編。

はっきり言って、OTTAVA con brioが18:00〜21:30に移動したのは失敗だと思う。あの番組は、プレゼンターを経由したリスナー同士のやり取りがキモである以上、リスナーの参加しづらい時間帯では意味が無い。

深夜放送を聴いたことのある人間なら分かる感覚だと思うのだけど、あの妙な連帯感を生で味わえるからこそ番組として面白いのであって、夕食の支度だのなんだのでごちゃごちゃした状況の裏で聴く番組じゃないんだよね。

おまけにこれからプロ野球の時期だし…いくらオンデマンドで聴けるからって、それに頼るような真似はして欲しくないんだなあ。

マイクロペイメントが実用化されないかなあ。そしたら応援したい番組にちょびっと出資(缶コーヒー1〜2本くらいのお値段/月あたりを想定してる)とかできるのに。

「スポンサーがいないなら、俺達リスナーがスポンサーになってやるぜ」とか、そういう番組が聴ける時代が来たら、ちったあ面白いかもよ?

もっとも、《敵》はこういう動きにかなり嫌な顔をするだろうな。思想統制のための手段を失うことはかなり困るはずだし…おそらく、現時点でもそれを防ぐべく工作に励んでいることだろう。

ネットワーク上でラジオ局を開く場合は国に許可を取れとか、インターネット上のラジオ局を受信する場合は国が指定した受信ソフトを使え…いや、それ以前に、ネットワークに繋ぐなら免許を取れとか、パソコンの所持は許可制とか、そんな時代が来たりしてな。

あああしまった、これは昨日のネタに使うんだった…orz

朝昼:いつもの。夕:白飯、納豆、刺身、スーパーで買ったサラダ(木曜にもなると、夕食を作る気力が…)(22:10)

01-Apr-2009
[レセコンの書体に萌える。]

Medicomの、こんな感じのやつを病院で目撃。

医事用コンピュータ(レセコン)という理由かどうかは分からないけど、あの書体は見やすそうだ。

スクリーンショットの解像度(480×359)から、1024×768の解像度で20×20ドットの文字を使っているのかな…流石に800×600で16×16ドットの文字ではあんなに綺麗に映らないし。

1152×864で24×24ドットの文字という可能性もあるけど、歴史的な経緯(この解像度って、XGA, SXGAよりも新しいんじゃなかったっけか)を考えると…うーむ。

昔利用していた診療所のレセコンとか、市の図書館にあった貸出し用の端末とかの画面を見ていると、どうもあの手の書体が気になって仕方が無いのですよー。

そういや、昔ワープロ分解ネタをやっていましたが、今度はオフコンを分解してみたいなあとか…思っても構いませんよね?

朝:コンビニのパンとおにぎり。昼:玉子家の弁当。夕:妻にお任せ(ラーメン、野菜炒め)。(21:20)