来,看看你的单片机程序有多大!
之前一直很奇怪一個(gè)問(wèn)題,每次寫好單片機(jī)程序之后,用燒錄軟件進(jìn)行燒錄時(shí),能看到燒錄文件也就是hex的文件大小:
我用的單片機(jī)芯片是STM32F103C8T6,程序儲(chǔ)存器(flash)只有64K。
從上圖可以看出,hex有128K。
我有兩點(diǎn)疑問(wèn),
1. 只是一個(gè)很簡(jiǎn)單的平衡小車程序而已,有128K,這么大嗎?
2. 就算有128K,能下載到只有64K容量的單片機(jī)中去?
這可能是一道送命題!
下面開(kāi)始我們的探索之旅,以STM32開(kāi)發(fā)為例。
在keil中進(jìn)行程序編譯之后,在界面部分:
很多朋友估計(jì)看到這界面,也只關(guān)心2個(gè)點(diǎn):
第一、自己編寫的程序是否正確生成了hex!
第二、自己編寫的程序有沒(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:表示已初始化的讀寫數(shù)據(jù),程序中定義并且初始化的全局變量和靜態(tài)變量位于此處。
ZI-data:表示未初始化的讀寫數(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è)芯片的資源差不多被我榨干了,要考慮換芯片了~
題 外 話
昨天帶了學(xué)弟們?nèi)⒓恿撕鲜?019年的研究生電子設(shè)計(jì)競(jìng)賽,現(xiàn)場(chǎng)倒是十分有趣。
很多好玩但我又看不懂的作品。
往期好文合集
談一談無(wú)人機(jī)的編隊(duì)控制方法。戳這里>>
干貨 | 雙目攝像頭實(shí)現(xiàn)手勢(shì)識(shí)別,完美還原人體運(yùn)動(dòng)手勢(shì)。戳這里>>
這篇文章后,不要再問(wèn)我怎么做一臺(tái)智能車了。戳這里>>
電子工程師也有“鄙視鏈”!軟件硬件無(wú)一幸免!戳這里>>
//end
若覺(jué)得文章不錯(cuò),轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機(jī)、等等!
在公眾號(hào)內(nèi)回復(fù)「更多資源」,即可免費(fèi)獲取,期待你的關(guān)注~
長(zhǎng)按識(shí)別圖中二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的来,看看你的单片机程序有多大!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 高通第二项反垄断上诉今日开庭:欲推翻欧盟
- 下一篇: 群体智能,多个机器人协同搬运!