ROMライタ上のI/Oポート0x200008番地を叩き続けるループを回したときの波形です
上から空き、/CS1、/CS2、/HWR、/RDですがI/Oポートがある/CS1がアサートされる期間もDRAMの/CS2がLowになりっぱなしになっています
これではDRAMのデータと衝突する可能性があります
これは同じブロックにあるDRAMを連続してアクセスする場合/RAS(/CSn)をアサートしたままにしておいてバースト読出しを継続できるようにするしくみのようです。
マニュアルにも
同じループを回してみると、今度は/CS1がアサートされる期間中は/CS2がHighに戻りバスの競合なくなったことがわかります
テストプログラムも正常に動作するようになりました。
マイクロコントローラにはすでにいろいろI/Oが内蔵されているので普通はI/Oを外部拡張してまでして使うことは少ないですが、さらにDRAM制御も共存したために起きた失敗でした