MPC5746R
S32 Design Studio for Power Architecture バージョン 2017.R1
我使用了一.a静态库文件,现在我想把.a库文件内関数链接固定地址,どのように现现しますか?
以下の方法で失敗しました。
メモリ
{
m2_text : org = 0x01280000+0x10、len = 768K-0x30
}
セクション
{
}
こんにちは、
関数を固定アドレスにリンクするための一般的な推奨手順:
1. カスタム リンカー ファイル (.ld) を使用する:
デフォルトのリンカー スクリプトを変更して、特定のメモリ セクションを定義し、関数を固定アドレスに配置します。
.my_fixed_section 0x10000000 :
{
KEEP(*(.my_fixed_func))
} > m_text
2. コード内のタグ関数:
GCC 属性を使用して、カスタム セクションに関数を配置します。
void __attribute__((section(".my_fixed_func"))) my_function(void) {
// Your code
}
3. .aを確認するライブラリはセクション属性を使用して構築されます:
.a ファイルのソースを制御していない場合は、セクション属性を使用してライブラリをラップまたは再コンパイルする必要がある場合があります。
あるいは、objcopy を使用してセクションを手動で抽出し、再割り当てします。
4. プロジェクト設定でリンカーコマンドを更新します。
[プロジェクト プロパティ] > [C/C++ ビルド] > [設定] > [ツール設定] > [クロス リンカー] に移動します。
次のようなフラグを追加します:
-T your_custom_linker.ld
5. マップファイルで検証する:
ビルド後、.map ファイルを調べて、関数が意図したアドレスに配置されていることを確認します。
よろしくお願いいたします。
ピーター