PIC32でRAMからROMコードを呼び出すことができた

ようやくで来ました。ebaseの設定でおかしな動きをしてました。
ROM上のダウンローダーが設定した割り込みベクタのベースアドレス(cp0_ebase)をRAM上プログラムに実行を移した時に書き換えていた。その後、RAM上プログラムがROM上ダウンローダーを呼んだら、RAM上のベクタを読みに行き、ROM上ダウンローダのベクタアドレスは設定されていないので迷子になっていました(リセット)。
各々のベクタをROM上ダウンローダーとRAM上プログラムが排他使用するようにしました。
これでMDD File Systemなどアプリ開発ではほぼ変更しないコードをROMに置くこと(追いやること)により、全部入れると128KBでは足りない大きなプログラムもRAM上で実行できるようになります。フラッシュにも書き込むこともないので寿命も気になりません。