私は GNU リンカ スクリプト ファイルを作成していますが、次の問題について正しい方向へのナッジが必要です。
リンカー スクリプトが作成されているデバイスには、テキストとロデータをホストするためのフラッシュがあります。また、データと BSS をホストするための SRAM も備えています。
私はリンカー スクリプトのバリアントを作成しました。
これらは正常に動作します。
ここで、TEXT の大部分が Flash に含まれるリンカー スクリプトのバリアントを作成する必要があります。ただし、既知のサフィックスで終わる名前を持つ特定のルーチンは、SRAM にロードされます。
たとえば、Func1IRAMCode() と Func2__IRAMCode() を SRAM セクションにロードし、IRAMCode サフィックスを持たない他のすべての関数をフラッシュにロードする必要があります。
移植性の理由から、これらの SRAM 関数には属性 (セクション) を付けません。
ここでつまずきます。テキスト セクションには次のルールがあります。
.text :
{
*(.text .text.* .gnu.linkonce.t.*);
} > FLASH
.Misc :
{
* (.text.*IRAMCode);
} > SRAM
.data セクションと .bss セクションは別々に定義されます。
問題は、*IRAMCode() が割り当てられたフラッシュ アドレスを取得していることです。
テキスト セクションから *IRAMCode を除外する構文は何ですか?
プロジェクトでこの問題をどのように解決しましたか?