You are here

マイコン

マイコン

マイクロプロセッサ・マイクロコントローラ等です。

アドレスエラー・バスエラー (その4)

カテゴリー:

アドレスエラー・バスエラーについて今度こそ終わりにするつもりです。

MC68040

MC68040からは大きな方向転換があったように感じます。

複雑度は増しているはずなのにスタックに積まれる情報は減っているのです。前にもMC68010の判別(補足)に書きましたが、命令の再開を諦めて頭からやり直す方針のようです。

まずはアドレスエラーの場合です。

アドレスエラー・バスエラー (その3)

3回目は残りですが書ききれるかなぁ。さらに1回増えてしまうかもしれません。

ここからは自分の手で動かしたことはないのでマニュアルを元にざっくり書いていきます。

MC68020 / MC68030

この両者はソフトウェアから見た例外処理はほぼ共通のようなのでまとめて書きます。

これらではエラー発生時の状況によってスタックに積まれる情報量に違いがあるようです。キリの悪いところで発生すると保存しないといけない項目が増えるということなのかな。

どちらが使われたかはSP+6の上位4ビットでわかります。

この4ビットでどのフォーマットかはわかりますが、それが何ワードなのかは書かれていません。
Universal MonitorではこれまでMC68010までの対応だったので0000なら4ワード、それ以外なら29ワードとしていました。それをMC68020以降で実行するとスタックがおかしなことになります。今回MC68010, MC68020, MC68030, MC68040, MC68060, SCC68070で使われているフォーマットとその長さをテーブルにして引くようにしました。

まずは少ない場合から。

HD1-6120ボード(モニタ移植編)

カテゴリー:

HD1-6120ボードを作ってから約2年、ASが使えるようになったのでUniversal Monitorの移植に着手しました。

ボード完成以来ソフトウェア編での無限ループ確認くらいしかしていなかったのですが、やっとまともなプログラムが動かせます。いくつかあった問題は、ASはIM6100対応を行ない、EMILY Boardも12ビット8進表示モードを作ったことでほぼ解決しています。

残るUniversal Monitorの仕様は... 常に8進表示でダンプ時のASCII表示は無しとすることにします。

そう決まればあとは黙々と実装するのみです。

現在 D(ump), G(o), S(et) の各コマンドができて L(oad) はインテルHEXのみ実装してデバッグ中といった状況です。

ある程度のプログラムを書いてこのIM6100の癖がわかってきたので書いてみたいと思います。

uPD78CG14ボード(その2)

テーマ:

カテゴリー:

前回、ピギーバックのROMと内蔵RAMで動作したので、今回は外部RAMを追加してみます。


ハードウェア的には未実装だった74HC04, 74HC573, 62256を載せるだけです。

ソフトウェアとしては、内蔵ROM(ピギーバック含む)有効モードで起動するとポートD,FはポートになっているのでMM(Memory Mapping)レジスタを設定してバスに切り替えないといけません。

uPD78CG14ボード(その1)

テーマ:

カテゴリー:

先日のuPD78CG14E、QUIPなのでユニバーサル基板では扱いづらい上にμPD7800ともピン配置が大きく異なるのでuPD7800Gボードを流用するわけにもいかず...

別な基板発注するついでに専用基板起こしてみました。


写真はとりあえず動作したところです。

I/Oピンを引き出すためのコネクタと外部RAMが未実装ですが、Universal Monitorは動きます。RAMが内蔵の256バイトしかないので大したことはできませんが。

このボードは以下のようなコンセプトで作っています。

MSM85C154

テーマ:

カテゴリー:

前回に引き続きピギーバック品をもう一つ。


沖のMSM85C154です。

対応するマスクROM品はMSM83C154で、これは80C51の拡張版です。本家のIntelは開発用としてはUV-EPROM内蔵の8751/87C51を用意していました

ROM無しタイプはI/Oピンが減ることもさることながらROMへの配線が面倒ですし、UV-EPROM内蔵タイプは専用ライタやアダプタが必要になるので、個人的にはピギーバックタイプは好きですね。ROMエミュレータを使えるのもメリットです。

uPD78CG14E

テーマ:

カテゴリー:

またちょっとレアなパッケージのマイコンを入手しました。


NECのμPD78CG14E、μPD78C10のピギーバックタイプです。

μPD78C1xシリーズの開発用で、他にUV-EPROMまたはOTP ROM内蔵のμPD78CP14というのも存在します。OTP ROMのは少量生産用ですね。

マスクROM品のROM容量は4kB/8kB/16kBですが、このμPD78CG14Eに載せるROMはなぜか27C256相当品と指定されています。A14に対応するピン27はVSS固定になっていますから前半16kB分しか使えません。

ASのNanoprocessor対応

1820-1692も例によって適当な開発環境が見当たりません。

というわけでCP-1600のときと同様にASのコードジェネレータを書いてみました。CP-1600同様これも書式は簡単で命令数も少なく、着手してから半日ほどでテストも含めて書けました。

現時点のパッチなどをhttps://electrelic.com/pub/asl-Nanoprocessor-20220616/に置いておきます。

  1. asl-1.42bld223を展開してそのトップディレクトリでpatch -p1 < Nanoprocessor.patchでパッチを当てます。
  2. バイナリファイルt_nano.oritests/t_nanoにコピーします。

後は普通にビルドできるはずです。

Pages