コードの小さなセグメントを1つのファイルに追加しようとすると、次のエラーが発生しますが、そのコードセグメントを別のファイルに移動すると完全に機能します。エラーの原因となっているコードが割り当てられたPAGE_E3スペースをオーバーフローさせているようで、それを修正する方法がよくわかりません。PAGE_E4に割り当てられたスペースを減らしながら、PAGE_E3に割り当てられたサイズを増やそうとしましたが、同じメモリアドレスを指し示す同じエラーが発生します。
これは、既存のコードに追加したコード セグメントです。
UI32 tempArry[10] = {0};
for (int i = 0; i < 10; i++)
{
tempArry[i] = i;
}
次の質問があります:
1. ファイル間でコード セグメントを移動すると、両方のコードが既定の領域にあるように見えるため、動作が変わるのはなぜですか?
2. 他のページに干渉せずにPAGE_E3スペースを増やすにはどうすればよいですか?
3. 特定のコード セグメントを別のPAGE_XXに配置し、ファイルの残りの部分を別のページに保持する特別なアプローチはありますか?その場合、パフォーマンスにはどのような影響がありますか?
MC9S12XDP512(R3.prm)のリンカーパラメータファイルが添付されています:参考までに R3.zip。
私はかなり新しいので、問題を理解するためにあなたの助けに感謝します...
感謝
マドゥシャン
PS:次のようにしてページをマージしようとしましたが、それでも同じエラーが発生しました。
セグメント
/* PAGE_E3 = READ_ONLY 0xE30000 TO 0xE3BFFF;
PAGE_E4 = READ_ONLY 0xE48000 TO 0xE4BFFF; */
PAGE_E3E4 = READ_ONLY 0xE30000 TO 0xE4BFFF;
配置
私は自分で問題を解決したでしょう:ビルドには2つのprmファイルが関与しており、私は1つのファイルしか変更していません...:)。両方のファイルを変更すれば、正常にビルドできたでしょう。
何か助けはありますか@ZhangJennie ?