初心者のIKUZOでございます、アドバイスお願いできないでしょうか?
①現在のやりかた
●セクションの設定0C000000 DVECTTBL DINTTBL0C000800 PResetPRG PIntPRG0C001200 プログラムの開始 P C C$BSEC C$DSEC D B R2C001000 PCACHE2CFBF800 BUSB_BUFF usbのバッファ2DFC0000 BETH_BUFF BETH_DESC etherのバッファFFF80000 B_LAN_BUF tcp/ipのバッファFFF87C00 S
これで.MOTファイルを出力させて、そのMOTファイルをバイナリ変換する際に
0x0C080000以上のアドレスは上位アドレスを切り捨ててデータを上書きしてバイナリを生成しております
これで問題なく動作しております
②改善したやりかたをしたい
最初からバイナリで出力できないものか?
まず.BINファイルを出力させるとサイズがとても大きくなる、その原因はSHがキャッシュ無効の領域にアドレス上位を使用しているためにその領域までの全てのデータを出力する、これは当たり前の(正常な動作)なのですが、実際に実行されるのは0x0C000000~0x0C080000なので、なにか方法はないものかと思いまして、SH2A hew 最適化リンカ 出力ファイルの分割を指定してやってみると(ファイル名、0x0C000000~0x0C080000等指定)確かに①の方法で求めたファイルサイズと同じになるのでデータも同じとおもいきや、内部データは抜けております、これは大体想像が付くのですが、つまりキャッシュ領域が抜けている、①の方法は特別な方法で変換しているためです、
そこでお伺いしたいのが、.BINファイルを出力させる時にキャッシュ領域も含めた状態でなおかつ実行部分のみ取り出すような方法ってあるのでしょうか?
わわいさん
やってみました、うまくいきました!、これで一安心です、解決です、ありがとうございました。