[導(dǎo)讀]之前一直很奇怪一個(gè)問(wèn)題,每次寫(xiě)好單片機(jī)程序之后,用燒錄軟件進(jìn)行燒錄時(shí),能看到燒錄文件也就是hex的文件大?。?我用的單片機(jī)芯片是STM32F103C8T6,程序儲(chǔ)存器(flash)只有64K。 從上圖可以看出,hex有128K。 我有兩點(diǎn)疑問(wèn), 1. 只是一個(gè)很簡(jiǎn)單的平衡小車(chē)程
之前一直很奇怪一個(gè)問(wèn)題,每次寫(xiě)好單片機(jī)程序之后,用燒錄軟件進(jìn)行燒錄時(shí),能看到燒錄文件也就是hex的文件大小:
我用的單片機(jī)芯片是STM32F103C8T6,程序儲(chǔ)存器(flash)只有64K。
1. 只是一個(gè)很簡(jiǎn)單的平衡小車(chē)程序而已,有128K,這么大嗎?
2. 就算有128K,能下載到只有64K容量的單片機(jī)中去?
下面開(kāi)始我們的探索之旅,以STM32開(kāi)發(fā)為例。
在keil中進(jìn)行程序編譯之后,在界面部分:
很多朋友估計(jì)看到這界面,也只關(guān)心2個(gè)點(diǎn):
第一、自己編寫(xiě)的程序是否正確生成了hex!
第二、自己編寫(xiě)的程序有沒(méi)有錯(cuò)誤,有沒(méi)有警告!
有4個(gè):
Code、RO-data、RW-data、ZI-data。
Code:
表示所要執(zhí)行的代碼,程序中所有的函數(shù)都位于此處。
RO-data:
表示只讀數(shù)據(jù),程序中所定義的全局常量數(shù)據(jù)和字符串都位于此處。
RW-data:
表示已初始化的讀寫(xiě)數(shù)據(jù),程序中定義并且初始化的全局變量和靜態(tài)變量位于此處。
ZI-data:
表示未初始化的讀寫(xiě)數(shù)據(jù),程序中定義了但沒(méi)有初始化的全局變量和靜態(tài)變量位于此處。
1. 下載到單片機(jī)FLASH的程序是:
Code+RO-data+RW-data(上圖中數(shù)據(jù)為字節(jié)數(shù),kb=byte/1024);
hex=(39546+5862+12428)/1024=56.48
2. 運(yùn)行在RAM中的數(shù)據(jù)是:
RW-data+ZI-data;
原來(lái)window下顯示的hex大小,并非是我們下載到單片機(jī)中的hex大小。
關(guān)于為什么顯示不同,這又是一個(gè)十分有趣的問(wèn)題,有興趣的朋友可以一起探討下。
最后,貌似C8T6這個(gè)芯片的資源差不多被我榨干了,要考慮換芯片了~
本文授權(quán)轉(zhuǎn)載自公眾號(hào)“大魚(yú)機(jī)器人”,作者張巧龍
-END-
免責(zé)聲明:整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!
欲知詳情,請(qǐng)下載word文檔
下載文檔
掃描二維碼,關(guān)注更多精彩內(nèi)容
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。