来,看看你的单片机程序有多大!
之前一直很奇怪一個問題,每次寫好單片機程序之后,用燒錄軟件進行燒錄時,能看到燒錄文件也就是hex的文件大小:
我用的單片機芯片是STM32F103C8T6,程序儲存器(flash)只有64K。
從上圖可以看出,hex有128K。
我有兩點疑問,
1. 只是一個很簡單的平衡小車程序而已,有128K,這么大嗎?
2. 就算有128K,能下載到只有64K容量的單片機中去?
這可能是一道送命題!
下面開始我們的探索之旅,以STM32開發為例。
在keil中進行程序編譯之后,在界面部分:
很多朋友估計看到這界面,也只關心2個點:
第一、自己編寫的程序是否正確生成了hex!
第二、自己編寫的程序有沒有錯誤,有沒有警告!
在圖中紅線部分:
有4個:Code、RO-data、RW-data、ZI-data。
Code:表示所要執行的代碼,程序中所有的函數都位于此處。
RO-data:表示只讀數據,程序中所定義的全局常量數據和字符串都位于此處。
RW-data:表示已初始化的讀寫數據,程序中定義并且初始化的全局變量和靜態變量位于此處。
ZI-data:表示未初始化的讀寫數據,程序中定義了但沒有初始化的全局變量和靜態變量位于此處。
從描述中可以得出:
1. 下載到單片機FLASH的程序是:Code+RO-data+RW-data(上圖中數據為字節數,kb=byte/1024);
hex=(39546+5862+12428)/1024=56.48
2. 運行在RAM中的數據是:RW-data+ZI-data;
原來window下顯示的hex大小,并非是我們下載到單片機中的hex大小。
關于為什么顯示不同,這又是一個十分有趣的問題,有興趣的朋友可以一起探討下。
最后,貌似C8T6這個芯片的資源差不多被我榨干了,要考慮換芯片了~
題 外 話
昨天帶了學弟們去參加了湖南省2019年的研究生電子設計競賽,現場倒是十分有趣。
很多好玩但我又看不懂的作品。
往期好文合集
談一談無人機的編隊控制方法。戳這里>>
干貨 | 雙目攝像頭實現手勢識別,完美還原人體運動手勢。戳這里>>
這篇文章后,不要再問我怎么做一臺智能車了。戳這里>>
電子工程師也有“鄙視鏈”!軟件硬件無一幸免!戳這里>>
//end
若覺得文章不錯,轉發分享,也是我們繼續更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等!
在公眾號內回復「更多資源」,即可免費獲取,期待你的關注~
長按識別圖中二維碼關注
總結
以上是生活随笔為你收集整理的来,看看你的单片机程序有多大!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高通第二项反垄断上诉今日开庭:欲推翻欧盟
- 下一篇: 华为用的什么处理器