簡體   English   中英

GCC-ARM:在 C 中跳轉到 linker 部分而不是絕對地址

[英]GCC-ARM: Make a jump in C to a linker section instead to a absolute address

我有一個軟件,它分為兩個二進制文件(加載在不同的內存中)。

因此我有兩個 linker 文件。

一個二進制文件運行並在另一個 memory 中加載第二個二進制文件,第二個運行。

有一個 function 兩個代碼都使用,它由第一個代碼加載到 RAM 中,所以在第二個代碼中我調用這個 function 實際上是跳轉到它在 RAM 中加載的地址(在 Z3175B42736043407 的 Z3175B423736043407 文件中第一個 SW 我已經定義了一個特定的部分,我強制加載這個 function)。

目前,這種機制對我來說是正確的。

我的問題是,是否可以跳轉到標簽或符號而不是特定地址?

理想情況下,在我的 linker 文件中,我將使用標簽定義地址,並在代碼中引用該標簽。

也就是說,編譯器和 linker 都會理解該標簽並將其轉換為地址。

因此,如果我更改 linker 中的地址,我也不必更改 JUMP 指令。

非常感謝

注意:gcc-arm-none-eabi-4_9-2015q3

直接從 C 代碼訪問 Linker 部分

NOLOAD 指令

將 linker 文件一分為二並使用兩者進行鏈接(問題的答案有一個例子)

您可以在 App2 中使用 NOLOAD(在 App1 中正常加載時)了解function,但不加載它,然后按照第一個鏈接中所述訪問它。

如果您想使用預處理器宏和編譯/鏈接選項,您可以有一個額外的 linker 文件在兩個應用程序之間共享,但有條件地根據開關加載部分。 這將幫助您避免在 linker 文件中重復地址(例如 App1 將使用ld1 + ldshared鏈接,App2 使用ld1 + ldshared 與不同的開關鏈接)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM