单片机的程序有多大?
之前一直很奇怪一個問題,每次寫好單片機(jī)程序之后,用燒錄軟件進(jìn)行燒錄時,能看到燒錄文件也就是hex的文件大小:
我用的單片機(jī)芯片是STM32F103C8T6,程序儲存器(flash)只有64K。
從上圖可以看出,hex有128K。
我有兩點疑問,
1. 只是一個很簡單的平衡小車程序而已,有128K,這么大嗎?
2. 就算有128K,能下載到只有64K容量的單片機(jī)中去?
這可能是一道送命題!
下面開始我們的探索之旅,以STM32開發(fā)為例。
在keil中進(jìn)行程序編譯之后,在界面部分:
很多朋友估計看到這界面,也只關(guān)心2個點:
第一、自己編寫的程序是否正確生成了hex!
第二、自己編寫的程序有沒有錯誤,有沒有警告!
在圖中紅線部分:
有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. 下載到單片機(jī)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大小,并非是我們下載到單片機(jī)中的hex大小。
關(guān)于為什么顯示不同,這又是一個十分有趣的問題,有興趣的朋友可以一起探討下。
最后,貌似C8T6這個芯片的資源差不多被榨干了,要考慮換芯片了。
-END-
猜你喜歡
誰更了解你,是女朋友嗎。不,是這些推薦算法。
為什么我們應(yīng)該支持華為
晶振,數(shù)字電路的心臟~
?最 后??
?若覺得文章不錯,轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機(jī)、等等!
在公眾號內(nèi)回復(fù)「更多資源」,即可免費獲取,期待你的關(guān)注~
長按識別圖中二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的单片机的程序有多大?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞凡汽车:中大型纯电轿车飞凡 F7 定档
- 下一篇: 数值孔径NA、分辨率极限与衍射极限