之前一直很奇怪一個問題,每次寫好單片機程序之后,用燒錄軟件進行燒錄時,能看到燒錄文件也就是hex的文件大小:
我用的單片機芯片是STM32F103C8T6,程序儲存器(flash)只有64K。
1. 只是一個很簡單的平衡小車程序而已,有128K,這么大嗎?
2. 就算有128K,能下載到只有64K容量的單片機中去?
下面開始我們的探索之旅,以STM32開發(fā)為例。
有4個:
Code、RO-data、RW-data、ZI-data。
Code:
表示所要執(zhí)行的代碼,程序中所有的函數(shù)都位于此處。
RO-data:
表示只讀數(shù)據(jù),程序中所定義的全局常量數(shù)據(jù)和字符串都位于此處。
RW-data:
表示已初始化的讀寫數(shù)據(jù),程序中定義并且初始化的全局變量和靜態(tài)變量位于此處。
ZI-data:
表示未初始化的讀寫數(shù)據(jù),程序中定義了但沒有初始化的全局變量和靜態(tài)變量位于此處。
1. 下載到單片機FLASH的程序是:
Code+RO-data+RW-data(上圖中數(shù)據(jù)為字節(jié)數(shù),kb=byte/1024);
hex=(39546+5862+12428)/1024=56.48
2. 運行在RAM中的數(shù)據(jù)是:
RW-data+ZI-data;
原來window下顯示的hex大小,并非是我們下載到單片機中的hex大小。
關于為什么顯示不同,這又是一個十分有趣的問題,有興趣的朋友可以一起探討下。
最后,貌似C8T6這個芯片的資源差不多被我榨干了,要考慮換芯片了~
本文授權轉載自公眾號“大魚機器人”,作者張巧龍
-END-
免責聲明:整理文章為傳播相關技術,版權歸原作者所有,如有侵權,請聯(lián)系刪除
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!