我工作的一個嵌入式項目上有幾種不同的存儲空間自定義鏈接文件中的ARM MCU:GNU LD可以通過內存空間打印內存使用情況,而不僅僅是散裝百分比?
/* Memory Spaces Definitions */
MEMORY
{
rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00200000
data_tcm (rw) : ORIGIN = 0x20000000, LENGTH = 0x00008000
prog_tcm (rwx) : ORIGIN = 0x00000000, LENGTH = 0x00008000
ram (rwx) : ORIGIN = 0x20400000, LENGTH = 0x00050000
sdram (rw) : ORIGIN = 0x70000000, LENGTH = 0x00200000
}
具體來說,我公司擁有一批具有不同特徵的不同的存儲設備(TCM的,純RAM(帶有一個D-Cache)和一個外部SDRAM),它們都被映射爲同一地址空間的一部分。
根據需要,我特別在不同的內存空間中放置了不同的變量(我是否正在進入DMA中,是否存在緩存一致性問題,我是否期望溢出D緩存等。 ..)。
如果我超過了任何一個部分,我會收到鏈接器錯誤。但是,如果我這樣做,鏈接器將只打印內存使用散裝率:
Program Memory Usage : 33608 bytes 1.6 % Full
Data Memory Usage : 2267792 bytes 91.1 % Full
假設我有3個積極使用的內存空間,我知道一個事實,即我使用一個100% (SDRAM),這是一種無用的輸出。
有什麼辦法讓鏈接器輸出每個內存空間單獨使用的百分比?現在,我必須手動打開.map
文件,搜索節標題,然後手動從.ld
文件中指定的總可用內存中減去大小。
雖然這是一種輕微的事情,它會肯定是不錯的只是鏈接器做:
Program Memory Usage : 33608 bytes 1.6 % Full
Data Memory Usage : 2267792 bytes 91.1 % Full
data_dtcm : xxx bytes xx % Full
ram : xxx bytes xx % Full
sdram : xxx bytes xx % Full
這是GCC-ARM,因此GCC-LD。