31-Dec-2007
[雑感。]

偽ることよりも、偽りを偽りであると言わせない方がより恥ずかしいと思う、今日この頃。

来年こそは、そういう「偽りを偽りであると言わせない」勢力を、少しでも削りたい…

それにしても、今年は大胆にサンプリングという名のパクり曲が流行ってたような気がする。Beautiful Girls/Sean Kingston(Stand By Me/Ben E. King)とか、Hot stuff/Craig David(Let's dance/David Bowie)とか。あ、()の中は元ネタ曲ね。

元ネタが元ネタそのものとして存在している以上、うまく合っていた場合とそうでない場合とでかなり賛否が分かれると思うんですが…個人的には、この二曲は非常に拒絶反応を示すんですよね。なんか、安易に引っ張って来たという感じがして。

あれなんだろうなあ、audienceとして「下手なモン出してきたら承知しないぞ、あぁ?」くらいの態度で臨まないと駄目なんだろうな。

今年は、《コンテンツを提供する側》が提供する《コンテンツ》を保護するという名目で、《コンテンツを提供する側》が、《道具》によって作られたコンテンツを否定しようとしたように見えました。

おそらく来年は、コンテンツを作成するための《道具》の存在を否定してくるのではないかと思われます(既に、その試みはあるようですが)。

―――《コンテンツを提供する側》に対する敗北は、許されません。(21:55)

31-Dec-2007
[h8300s→h8300h(1)]

とりあえず、μT-Kernel 1.0.00を秋月のAKI-H8/3069FフラッシュマイコンLANボードで動かせるような非公式パッチを作ってみました。H8簡易モニタがあれば、その上でも試せます。

H8/3664の時と同様に、以下の三つのテストを行っています。こちらではポート4のbit6〜7のレベルを変化させますので、I/OボードのLED1/LED2が点滅するはずです。

【テスト1】単純にμT-Kernelを起動させてみる

【テスト2】システムタイマ(tk_dly_tsk()によるウェイト)の動作を見てみる

【テスト3】割り込みハンドラ(8bitタイマの割り込みを使用)の動作を見てみる

RAM版はH8簡易モニタ+0x00400000〜のRAM空間を前提としています。ROM版は、モード5/モード7の両方に対応していますので、チップ内蔵資源だけでイケるはずです。

…とりあえず、年を越える前にここまでまとまりました。ふぅ。

朝:寝てた。昼:妻にお任せ(トースト)。夕:白飯、納豆、山芋のサラダ、焼いた鶏肉。

30-Dec-2007
[Sflack-12.0をインストールしてみる]

うん、SlackwareをそのままAMD64化するとこんな感じなんだろう。

とりあえず気になった点として、起動直後に何故か「/usr/share/fonts/misc: failed to write cache」と表示されることと、NVIDIAの公式ドライバ(NVIDIA-Linux-x86_64-169.07-pkg2.run)が何故かインストールできなかったこと、ehci-hcd絡みのエラーメッセージをカーネルが吐くこと(これはSlackware-12.0の時もそうだった)かな。

気合いと根性を割いて日本語化すれば、結構イイ感じに使えると思うんだけど…ちょっと割けそうに無いな。とりあえず、distributed.net clientのベンチマークを取って、他のOSを試してみようかと。

しっかし、イマドキはja_JP.utf8が標準なんですか。ja_JP.eucJPはもう古いですかそうですかorz

X.orgもディレクトリの配置が微妙に変わっていたりして、付いていくのが大変ですよorz

朝:おにぎり。昼:実家にて寿司(ごちそうさまでした)。夕:白飯、スーパーで買った惣菜類。(22:55)

29-Dec-2007
[なにやら]

Phenom 9500が\20k切ってるそうで。

TLB周りにerrata抱えてるために本来出るはずのパフォーマンスが出なかったとしても、安価なQuad-core CPUとしての意義は十分にありますからね…むっちゃ欲しいかも。

(キャッシュ周りにerrata抱えたXscaleなんてのも、昔あったよね…?)

…と言っても、いきなり買えるだけのお金がある訳ではないので(誕生日も近いですし、プレゼントとして贈ってくれても構いませんよ?)、まずはrougeをAMD64化するところから始めてみようかと。

31-Mar-2007に修理から戻ってきて未だに梱包を解いていなかったGA-K8S760Mと、Athlon64 3000+を載せて、あとはLinuxカーネルのリコンパイルで終わり。

折角なので、交換前後のdistributed.netベンチマーク対決とかさせてみた。交換前のPentium4 2.8GHzと、交換後のAthlon64 3000+。RC5-72だとAthlon64が、OGR-P2はPentium4が勝っているねえ。

あとは、載せるOSをどうしようか…考え中。候補としては、Sflack-12.0、FreeBSD-6.2辺りか。

朝:くーすか寝てた。昼:妻にお任せ(トースト+α)。夕:長浜ラーメン。(23:55)

28-Dec-2007
[先生っ、38400bpsが出せません!]

H8/3664なアレ、実はsio.cを38400bps設定にすると文字化けします。

16MHzのクロックを4分周して4MHz動作にしているため、38400bpsがうまく出せない(誤差が大きくなる)って奴なんですが…ええ、この辺りは思いっきり手抜きですごめんなさいごめんなさい。

解決法としては、クロックを4分周せずに16MHzのままSCI3を動かすようにすれば多分大丈夫なはず。もちろん、BRRレジスタの計算もそれに合わせて下さいね。

実はこの一件で、PC-9801の5MHz系機種と8MHz系機種でUARTのボーレートがうにゃうにゃ、という話を思い出してみたり。

そういえばそんな話もあったよね、昔…(遠い目)

27-Dec-2007: 朝昼:いつもの。夕:炊き込みごはんの残り、焼鮭、味噌汁。

28-Dec-2007: 朝昼:いつもの。夕:妻にお任せ(白飯、みぞれ鍋)。(22:25)

27-Dec-2007
[h8300s→h8300hn(30)]

.text領域に突っ込まれている各種ベクタは.vector領域に分離しました。あと、makerules.sysdependに-malign-300を追加して、不要なパディングを抑制しています(これによる問題が発生したら、教えて下さい)。

ついでに、10-Nov-2007の各種テストも、こちらの版でmakeし直してみました。

【テスト1】単純にμT-Kernelを起動させてみる

【テスト2】システムタイマ(tk_dly_tsk()によるウェイト)の動作を見てみる

【テスト3】割り込みハンドラ(タイマVの割り込みを使用)の動作を見てみる

食事メモは後日…(21:55)

26-Dec-2007
[あー]

H8/3664向けのμT-Kernelの移植実験なアレ、そのうち.text領域に突っ込まれている各種ベクタは.vector領域に分離しようかと考えています。ていうか、そうしないとgdbでシミュレートする際に色々面倒だし。

という訳で、(何故かスクリーンショットの横幅が違うんだけど)

on ROM

on RAM

秋月のLAN付きH8/3069ボードにも載せられそうです、μT-Kernel。この辺の石は既に誰かが載せている可能性が高い(というか、誰でもやるだろう)ということは分かっていますけど…やりたかったんだから、文句言うなヽ(`Д´)ノ

ちょいとまだ作業途中ですが、狼少年とか呼ばれるのは激しく嫌なんで、色々置いときます。

RAM版は、H8用簡易モニタと組み合わせて動かすことを想定してます。

24-Dec-2007: 朝:適当に。昼:ヴェトナム・アリス@新宿。夕:デパートで買った惣菜類、パン。

25-Dec-2007: 朝昼:いつもの。夕:白飯、納豆、スーパーで買った惣菜。

26-Dec-2007: 朝昼:いつもの。夕:妻にお任せ(炊き込みごはん、野菜炒め)。(23:05)

23-Dec-2007
[h8300s→h8300hn(29)]

細かい部分の修正をあれこれと。ロジックの修正というより、コメントとかその辺り。

H8/3069F向けの移植実験、とりあえず。残る作業は、icrt0.Sとcpu_support.Sの移植、いくつかの調整かな。

H8/3664F向けの成果を使うので、*それなり*のところがゴールです。上は各自で目指して下さい。

朝:寝てた。昼:妻にお任せ(パスタ)。夕:白飯、納豆、昨日のキムチスープの残り。(22:30)

22-Dec-2007
[h8300s→h8300hn(28)]

sysdef_depend.hはアセンブラソースからも参照されると書かれていたので、C言語の記述をばっさり削除しました。

あと、パッチの扱いやらその辺の注意書きを追加っと。

さてと、H8/3069向けの移植作業をゆるゆると始めましょうかねえ…

21-Dec-2007: 朝昼:いつもの。夕:妻が買ってきた、おこわ弁当。

22-Dec-2007: 朝:寝てた。昼:焼きそば。夕:白飯、納豆、キムチスープ。(20:35)

20-Dec-2007
[食事メモだけ]

H8/3069Fの仕様書に目を通して(分量が多いのであんまり分かってない)、狼と香辛料VIに目を通して(斜め読みなので話があんまり分かってない)、年賀状をざざっと印刷して(二枚印刷に失敗した)、NO MORE HEROESを始めようとしている(という割にランク10←一人倒している)ところ。

…全然駄目な人>俺。

18-Dec-2007: 朝昼:いつもの。夕:白飯、酢豚(キット使用)。

19-Dec-2007: 朝昼:いつもの。夕:カレー@ラニー

20-Dec-2007: 朝昼:いつもの。夕:白飯、納豆、チキンラーメン。(21:20)

17-Dec-2007
[ハマりました…]

ちょいとBTRON向けのコード(といってもcli上で動くもの)をいじっていたんですが…sizeof(TR_VOBJREC)に、ヤられました。

typedef struct {
        VLINK   vlnk;                   /* リンクレコード */
        VOBJSEG vseg;                   /* 仮身セグメント */
} TR_VOBJREC;

typedef struct {
        TC      fs_name[20];            /* ファイルシステム名 */
        UH      f_id;                   /* ファイル ID */
        UH      attr;                   /* 仮身タイプ / 属性 */
        UH      rel;                    /* 続柄インデックス */
        UH      appl[3];                /* アプリケーション ID */
} VLINK;

typedef struct {
        RECT    view;                   /* 表示領域 */
        H       height;                 /* 開いた場合の高さ */
        CHSIZE  chsz;                   /* 文字サイズ */
        COLOR   frcol;                  /* 枠の色 */
        COLOR   chcol;                  /* 文字色 */
        COLOR   tbcol;                  /* タイトル背景色 */
        COLOR   bgcol;                  /* 開いた場合の背景色 */
        UH      dlen;                   /* 固有データのバイト長 */
} VOBJSEG;

単純なデータの個数で数えるなら、sizeof(VLINK)=52, sizeof(VOBJSEG)=30なんですが…32-bit alignを意識した場合はsizeof(VLINK)=52, sizeof(VOBJSEG)=32なんですよ。で、sizeof(TR_VOBJREC)も変わってくると。

ぃゃー、参りました…

13-Dec-2007: 朝:いつもの。昼:ベトナムカレー+フォー@ネオ屋台村。夕:スーパーで買った弁当。

14-Dec-2007: 朝:いつもの。昼:スリランカ風鶏丼@ネオ屋台村。夕:スーパーで買った弁当。

15-Dec-2007: 朝:寝てた。昼:チキンラーメン。夕:カレーライス。

16-Dec-2007: 朝:カレー。昼:カレー(三連続は…)。夕:白飯、白菜と肉団子の炒め物(キット使用)。

17-Dec-2007: 朝:チキンラーメン。昼:ピザ。夕:白飯、モヤシの味噌汁、焼鮭。

12-Dec-2007
[みっけ。]

M16C向けのμT-Kernelのソースコードの在処を教えて頂きました。

早速ダウンロードしてみましたが、思いっきりHigh-performance Embedded Workshop(HEW)向けです…ざっと見た限りでは、GNU系のツールでごにょごにょするためにはMakefileの類を補う必要がありそうな感じです。うはぅ。

10-Dec-2007: 朝昼:いつもの。夕:妻にお任せ(焼きそば)。

11-Dec-2007: 朝昼:いつもの。夕:白飯、納豆、スープ。

12-Dec-2007: 朝:いつもの。昼:パエリア@ネオ屋台村。夕:スーパーで買った弁当。(22:15)

09-Dec-2007
[超漢字開発環境に付属のgtermでもいいんだけど]

超漢字以外の開発(?)で使うのもちょっと悪いかなということで、epicon入れてみました。

モトローラS形式のファイルを転送するというテスト目的で、手近にあったH8/3664用のT-KernelμT-Kernelを移植してみようとした際に得られたオブジェクト(kernel-rom.mot)をH8簡易モニタが動いているAKI-H8/3069FフラッシュマイコンLANボードに食わせてみましたが、なかなかイイ感じです。

h8300-elf対応化と、H8/3069のDRAMコントロールレジスタの設定値を変更したH8用簡易モニタの動作チェックとして、TOPPERS/JSPカーネルを動かしてみることにしました。

カーネルのコンパイル手順は、検索エンジンで探せばすぐに見つかりますが…俺用のメモとして、ここでも簡単に書いときます。

アーカイブの展開
tar zxpf jsp-1.4.3.tar.gz; cd jsp
コンフィギュレータの構築
cd cfg; gmake depend; gmake; cd ..
カーネルの構築
mkdir akih8_3069f_kernel; cd akih8_3069f_kernel; perl ../configure -C h8 -S akih8_3069f; gmake depend; gmake libkernel.a; cd ..
アプリケーションの構築
mkdir akih8_3069f_appl; cd akih8_3069f_appl; perl ../configure -C h8 -S akih8_3069f -L ../akih8_3069f_kernel; gmake depend; gmake

出来上がったjsp.srecをH8/3069Fボードに転送して、実行するとこんな感じ。

toppers screenshot

…うむ、大丈夫そうだ。

それにしても、USBシリアルケーブル(Arvel SRC06-USB/FTDI FT232系)だとh8writeがうまく動かないだけでなく、epiconでファイルを送信するのもうまく動かないんですよね。

他の、例えばPL2303とかその辺りを使ったケーブルだとどうなんでしょうか…

朝:寝てた。昼:チキンラーメン。夕:白飯、刻みうなぎ、パン。(19:25)

10-Dec-2007補足:政治的に正しくない表現を修正しました。また、AKI-H8/3069FフラッシュマイコンLANボードを見ると沖電気のM5117800F-60TKが載っていましたので、DRAMコントローラの設定値はH8簡易モニタのデフォルト(バーストアクセス許可)に戻しました。

なお、DRAMコントローラの設定値は、(toppers-users 1369)およびそれに連なる情報を参考にしています。

08-Dec-2007
[わかんないなあ。]

なんとなく読みたくなったのでR8C/Tinyのソフトウェアマニュアルを読んでいるのだけど…このアセンブラって難しいね。

何が難しいかっていうと、同じことをする命令でもいくつかの形式があるので、どれを使えば良いかが分かりにくいってこと(多分、慣れの問題だと思うけど)。

ぃゃフツーにジェネリック形式(:G)だけ使ってても書けるけどさあ、少ないバイト数で高速な処理が記述できるならそっち使ってみたいし…って思うよね?

…で。

H8系とM16C系を統合したRXマイコンなるものが出るみたいですけど、どうやってこの二つのプロセッサを統合するかっていうのが気になります。

だって命令セットとかCPUの性格とか、全然違うし…Z80とTLCS900の関係のように、ニモニックレベルで互換性を図るのかなあ?

どんな物を出してくるか、本当に気になるんですけど…

朝:昨日の惣菜の残り。昼:食べていない。夕:白飯と納豆。(23:45)

07-Dec-2007
[あー、やっぱりね…]

なんかネットワークの接続とか利用とか、免許制にしたくて仕方が無い勢力が居るんじゃないかなーと思ってたんですが、まさか本当に出てくるとは

奴等のことだ、そのうち「PCや携帯電話に限らず、全ての情報機器の所持は免許制にすべきだ!」とか言い出すんだろう。

マイコンとかコンピュータの世界って、もうちょい自由だと思ってたんですがねえ…ていうか、それ幻想ですかやっぱりorz

06-Dec-2007: 朝昼:いつもの。夕:スーパーで買った弁当。

07-Dec-2007: 朝昼:いつもの。夕:妻が買ってきた惣菜類+おにぎり。(23:45)

05-Dec-2007
[なんとなく思ったことを書いただけなので]

実はそこまで深く考えてはなかったんですが…アマチュアのレベル向上、プロのレベル低下に加えて、(日記の言葉を借りると)“埋もれた才能”の露出というのは多分あると思います。

昔は誰かが発掘しなければ出てこなかった。でも今は然るべき場所に置いておけばaudienceが評価してくれる、そんなところでしょうか…もっとも、audienceも勝手に評価するほど暇ではないのですが。

もう一つあるとしたら、多分、プロの技術はもはや必要とされていないのだと思います。コンテンツの中身次第でもあるのですが、60%の完成度で十分な領域に100%の完成度(+コスト)を持ち込んでも、それは不利に決まっているんです。

じゃあ何を以ってプロって言うんだよと言われそうですが、おそらく、60%なら60%の完成度を維持し続けることが求められているのではないかと思うのです(維持することも技の一つではあるんですがね)。でもそれはクリエイターというよりも、メンテナー等と呼ばれる領域でしょう。

…って、リンク先の日記と同じ内容じゃないかこれ。パクったと言われてもおかしくないヽ(`Д´)ノ

ちなみに、プログラマーという仕事で飯を食っているとはいえ家に帰れば一個人とか、誰でも昔はアマチュアだった(俺もそうだったから)という理由で、目線はアマチュア寄りです。

03-Dec-2007: 朝昼:いつもの。夕:白飯、キムチの素で作った豆腐の煮物。

03-Dec-2007: 朝昼:いつもの。夕:妻にお任せ(白飯、キットで作る回鍋肉)。

03-Dec-2007: 朝昼:いつもの。夕:白飯、メロンパン、納豆。(21:15)

02-Dec-2007
[h8300s→h8300hn(27)]

SLEEP命令で省電力化できたら楽しいかなと思ったので、ちょっとこんな風に記述してみました。


uaa@rouge:~/utk/utkernel_source/kernel/sysdepend/device/app_h8s2212$ diff -Ncwr power.c~ power.c
*** power.c~    2007-03-12 20:25:56.000000000 +0900
--- power.c     2007-12-02 15:30:59.000000000 +0900
***************
*** 24,29 ****
--- 24,31 ----
   */
  EXPORT void knl_low_pow( void )
  {
+       Asm("andc       #0x7f, ccr");   // enable interrupt
+       Asm("sleep");                   // go low-power state
  }
  
  /*
uaa@rouge:~/utk/utkernel_source/kernel/sysdepend/device/app_h8s2212$ 

実際に使用する場合は、起動直後に実行されるハードウェア初期化部分にSLEEP命令を発行した場合の動作をどうするかという設定をしておく方が安心です。スタンバイ or スリープの切り替え、確かあったはずですし。

あと、lib/libtm/tm_exit.cのtm_exit()辺りにも(こちらは割り込みを禁止した状態で)SLEEP命令を発行するようなコードを追加しておかないと、シャットダウン後に消費電流が跳ね上がるという事態になるかもしれません。

省電力関係は、H8/3664Fをどう使うかによって変わってくるので…ここではパッチに組み込まず、こんな風に書くという一例(ってほど大袈裟なもんじゃない)を示すに留めておきます。

眠いので食事メモは後日。(20:50)

01-Dec-2007
[とりあえず動くみたい…]

h8mon(h8300-elf) on AE-3069-LAN

朝:パン。昼:特に。夕:妻にお任せ(スパゲティ)。(19:55)