如何知道裸機金屬ARM代碼的閃存大小。如果我有精靈,有可能知道需要多少閃存來存儲程序?例如,如果我擁有應該進入基於ARM的MCU的elf文件,我如何確定代碼將消耗多少MCU的閃存?裸機金屬ARM程序的閃存大小
回答
ELF標題應包含您需要的信息。您可以使用objdump
(使用-h)或readelf
工具讀取這些。這些工具應該包含在您的工具鏈中。
基本上,您希望將所有可加載部分的大小加起來,例如.text
和.data
。例如,在objdump
的輸出中查找LOAD
標誌。
可以忽略不加載部分,如.comment
,.debug
和.bss
·他們有些是那裏的調試器的好處,例如,有的內存只是佔位符將由程序在運行中使用時間,但不包含預先存在的數據。
當我說「加起來的大小」,這不是真的;鏈接器將已經將每個部分分配到閃存中的特定地址(我假設您的程序將直接從ROM中運行),因此您需要查找最後一部分的結束地址以確定剩下多少部分。
或者只是你* toolprefix * - 這是爲此目的,如果它是可用的。 –
@artlessnoise謝謝你!那就是我正在尋找的! :) – user2668988
我發現「尺寸」的輸出不理想;隱藏的假設太多了。正如我上面所說的,你真正想要的是閃存中最後使用的地址。 – ams
- 1. C環境Init裸機金屬ARM GCC
- 2. beaglebone黑色裸金屬編程
- 3. ARM裸機二進制鏈接
- 4. 裸機嵌入式系統(ARM)剖析
- 5. 用於裸金屬的SoftLayer REST API
- 6. 雙核ARM CPU是否有兩個程序計數器? [裸機多核編程]
- 7. 嵌入小應用程序或手機閃存的HTML
- 8. 指令到裸金屬機器上安裝與Kubernetes 1.6插件?
- 9. 高性能裸金屬抽象
- 10. 在SL中取消裸金屬
- 11. Beagleboard裸機編程
- 12. 調整閃存對象的大小
- 13. 金屬工具欄圖標大小
- 14. 測量裸機ARM Cortex A9系統的CPU效率
- 15. long_calls在裸機上的RAM和ROM部分ARM與gcc
- 16. ARM程序集中的最大整數
- 17. 當使用裸機金屬覆盆子pi調用printf到uart時,應用程序掛起
- 18. OpenGL ES中的金屬閃爍效果?
- 19. 裸機的Java
- 20. 閃存組件和調整大小
- 21. ARM二進制大小
- 22. 使用qemu-system-arm從閃存啓動
- 23. Git:從裸機或非裸機導入
- 24. arm(裸機):調用二進制文件作爲函數
- 25. Eigen示例代碼失敗ARM裸機編譯
- 26. 內存中的C++程序大小
- 27. 閃亮的應用程序不自動擬合網頁大小
- 28. 用於BeagleBone的裸金屬TCP/IP堆棧?
- 29. 閃存卡應用程序
- 30. 裸機/原生虛擬機管理程序?
@dwelch他說他已經有了精靈檔案。 – ams
然後簡單地使用gnu工具... readelf,objdump等。 –
['size'](http://unixhelp.ed.ac.uk/CGI/man-cgi?size)是標準的。唯一需要注意的是,如果你在ELF格式中有很大的漏洞,它們可能會使二進制閃存映像看起來很大。 –