組み込まれたエンジニア

我輩は石である。名前はまだ無い。

pdp11互換機+UNIX

2011-11-30 19:26:06 | Weblog

以前、飯田君がSFLで記述した環境をNSLに移植しました。

機械的に記述を変換しただけなので、論理は変えていません。

変更中、気がついたのですが、SFLでは、常に動作して、終わらないステージを多用する傾向があるようです。

理由を考えると、どうやら、状態遷移マシンを作るには、ステージを使う必要があることからのようです。NSLでは、ブロックは状態を持つことができるので、リセット時に起動して終了しないステージは廃止し、ブロックの状態遷移に変更しました。

NSLの非商用ライセンスでコンパイルができるように、Makefileの構成を少し変更しています。

 

例によって、IP-ARCHのホームページからダウンロードできます。

 


MidwayゲームプラットフォームをNSLに変更

2011-11-22 06:38:34 | Weblog

以前SFLで書いていた(スペースインベーダーのゲーム基板として有名な)MidwayゲームプラットフォームをNSLに書き直しました

といっても、SFLをNSL化するのは、簡単なので、書き直しはあっという間ですが、Verilatorのテストベクトルを流しても、ゲーム画面になっていないので、??と思ったら、割込みタイミングをFPGA用(100Hz)に設定したままでした。

シミュレーション用に割込み頻度を上げる対策をしてもいいのですが、FPGAのタイミングのまま、シミュレーションサイクルを伸ばし、5千万クロックまわすことにしました。ここまでまわすと、インベーダーたちが画面に出てきますが、まだ弾は出ていません。サイトを動かしながら、9千万クロックまでシミュレーションをまわすと、弾が表示され、インベーダーも1機破壊してました。

次は、pdp11互換機のコードをNSL化しようと思っていますが、非商用ライセンスで動作するように、記述を分割したいので、少し暇な時間が必要そうです。

 


ReVIEW

2011-11-10 18:59:05 | Weblog

電子書籍のEPUBフォーマットを簡単に作る方法として、ReVIEWに注目中ですが、自分の環境ではまともなものが出来ません。そもそもサンプルコード自体がbyte sequence errorとなってコンパイルに失敗するのですが、この原因はrubyの文字コードの扱い変更にあるようで、ruby-1.9系では動かない気がします。デフォルト文字コードを明示的に指定するように修正すると、一見、動いたように見えるのですが、出来上がったファイルは壊れています。

Debianのマシンでは動いたのですが、モバイル環境で作れないと、結局利用しなくなるのは見えているので、ArchLinuxのrubyをダウングレードするか、ReVIEWのバージョンアップを待つしかないかな?

言語処理系が、過去の互換性を崩すような変更をする場合、かなり仕様作成に注意するか、マイグレーションの手段を用意しておかなくてはいけないと思うのですが、スクリプト系の言語は平気で連続性のない変更を加えるのでしょうか?

 

 


coLinux+ArchLinux

2011-11-05 07:56:58 | Weblog

持ち運び用のマシンでLinuxを使うのに、VMでは重過ぎるので、coLinuxを導入することにする。

カーネルはともかく、OSとしての構成を整えるのにディストリビューションのファイルシステムを導入する必要があるけれど、ここで、coLinuxのサイトに置いてあった、普段使ったことのないArchLinuxを入れてみることにした。

ところが、思ったよりも導入に手間取ったので、備忘録を記す。

何はともあれ、システムアップデートの前に、パッケージ管理ソフトのpacmanをアップデートする必要があるけれど、これが一筋縄ではいかないのだった。

coLinuxのファイルシステムを使うのであれば、次の手順を順番を変更せずに行うこと。

 

  • /dev/cobd2用のFS作成
  • mount -n -o remount,rw /
  • nano /etc/fstab
    • /dev/hda1 -> /dev/cobd0
    • /dev/hda2 -> /dev/cobd1
    • /dev/cobd2 /mnt/ext ext3 noatime 1 1
  • mkfs.ext3 /dev/cobd2
  • nano /etc/pacman.d/mirrorlist
  • mkdir /mnt/ext
  • reboot
  • for i in root home var usr ; do cp -r /$i /mnt/ext; rm -r /$i; ln -s /mnt/ext/$i /; done
  • pacman -Sy
  • pacman -S xz
  • pacman -S expat
    • cd /var/cache/pacman/pkg; xz -d ex*.xz; pacman -U expat*
  • pacman -S db
    • cd /var/cache/pacman/pkg; xz -d db*.xz; pacman -U db*
  • pacman -S openssl -> /var/cache/pacman/pkgでxzを展開し、pacman -Uでインストール
  • pacman -Sd libarchive
  • pacman -Sd libfetch
  • pacman -S pacman
  • pacman-db-upgrade
  • /etc/pacman.d/mirrorlist のJapanの項のコメント削除
  • rm /etc/profile.d/locale.sh
  • pacman -Syu
  •