1

オープンソースのAtari2600エミュレーター(Z26)を使用していますが、組み込みARMプロセッサー(NXP 21xxファミリー)を含むカートリッジのサポートを追加したいと思います。アイデアは、1バイトのメモリの読み取りまたは書き込みを試みるまで6507をシミュレートすることです(841nsごとに実行されます)。6507が書き込みを実行する場合は、アドレスとデータをARMのI / Oポートの一部に配置し、ARMコードを20サイクル実行し、ARMがデータバスをフローティングしていることを確認し、ARMをさらに38サイクル実行します。6507が読み取りを実行する場合は、アドレスをARMのI / Oポートに配置し、ARMに38サイクル実行させ、ARMのI / Oポートからデータを取得し(ARMソフトウェアがそこに配置することを期待します)、 ARMはさらに20サイクル実行します。

ARM7の実装は非常に簡単なようです。多くのハードウェア機能をシミュレートする必要はありません。何かご意見は?

編集 私が考えているのは、マシンの状態を保持する構造体とメモリアクセスルーチンへのポインタをパラメータとして受け取るルーチンです。呼び出されると、ルーチンはARMの命令エンジンをエミュレートし、適切な読み取り、書き込み、およびコードフェッチを生成します。次に、メモリアクセスルーチンを記述して、適切な領域をフラッシュ(おおよその待機状態)、RAM、I / Oポート、およびタイマーレジスタと見なすことができます。他のいくつかの領域はドントケアとしてマークされ、他の領域へのアクセスはエラーのフラグを立ててエミュレータを停止します。

おそらくQEMUはそのようなものを内部で使用しています。ARMエミュレーションは既存のエミュレーションエンジンに統合されるため(私はこれを記述しておらず、完全には理解していません。パッチを適用したZ26の唯一の部分は、メモリの読み取り/書き込みロジックでした)必要になります。フットプリントがかなり小さいもの。

QEMUが内部でどのように機能するかについて何か考えはありますか?QEMUでコードの2%を使用する場合、GPLライセンスに必要なものはありますか?コード全体をバンドルする必要があるのか​​、使用する部分だけをバンドルする必要があるのか​​、それとも何ですか?

4

2 に答える 2

2

QEMUをお試しください。

于 2010-08-23T23:36:24.553 に答える
1

いくつかの作業を行うと、私のエミュレーターで必要なことを実行できます。これは ARM920 用に作成されたもので、Thumb 命令セットはまだ完成していません。MMU/キャッシュ インターフェイスも同様です。また、通訳なので遅いです。明るい面としては、すべて C99 で書かれています。

http://code.google.com/p/gp2xemu/

しばらく作業していませんでしたが (svn トランクは 2 年前のものです)、コードを使用する場合は、不足している機能について喜んでお手伝いします。MIT の下でライセンスされているため、広範な BSD ライセンスとまったく同じです。

于 2010-08-25T10:44:05.873 に答える