2014-02-17 76 views
1

如何知道裸機金屬ARM代碼的閃存大小。如果我有精靈,有可能知道需要多少閃存來存儲程序?例如,如果我擁有應該進入基於ARM的MCU的elf文件,我如何確定代碼將消耗多少MCU的閃存?裸機金屬ARM程序的閃存大小

+0

@dwelch他說他已經有了精靈檔案。 – ams

+0

然後簡單地使用gnu工具... readelf,objdump等。 –

+0

['size'](http://unixhelp.ed.ac.uk/CGI/man-cgi?size)是標準的。唯一需要注意的是,如果你在ELF格式中有很大的漏洞,它們可能會使二進制閃存映像看起來很大。 –

回答

2

ELF標題應包含您需要的信息。您可以使用objdump(使用-h)或readelf工具讀取這些。這些工具應該包含在您的工具鏈中。

基本上,您希望將所有可加載部分的大小加起來,例如.text.data。例如,在objdump的輸出中查找LOAD標誌。

可以忽略不加載部分,如.comment.debug.bss·他們有些是那裏的調試器的好處,例如,有的內存只是佔位符將由程序在運行中使用時間,但不包含預先存在的數據。

當我說「加起來的大小」,這不是真的;鏈接器將已經將每個部分分配到閃存中的特定地址(我假設您的程序將直接從ROM中運行),因此您需要查找最後一部分的結束地址以確定剩下多少部分。

+0

或者只是你* toolprefix * - 這是爲此目的,如果它是可用的。 –

+0

@artlessnoise謝謝你!那就是我正在尋找的! :) – user2668988

+0

我發現「尺寸」的輸出不理想;隱藏的假設太多了。正如我上面所說的,你真正想要的是閃存中最後使用的地址。 – ams