精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

嵌入式小知識:燒錄文件是被如何存儲到MCU中的?


      單片機軟件都是以hex或者bin文件的形式燒錄到我們的MCU中進行存儲的,那你知道這些燒錄的文件在MCU中是如何分布的嗎?

      舉一個簡單的例子,編譯一個STM32例程的MDK軟件工程,得到輸出信息如下:

      接下來詳細看下Program Size的組成部分解析(我們燒錄文件的組成部分):

Code:程序代碼段,主要用于儲存程序代碼。

Ro-data:只讀類型數據段,主要用于存放程序中定義的常量。

RW-data:讀寫類型數據段,主要用于存放被初始化為非0值的全局變量。

ZI-data:讀寫類型數據段,主要用于存放被初始化為0值的全局變量。

看到這里你可能會有點好奇都是讀寫數據類型,為什么要分為RW和ZI兩個部分呢?(思考一下,文章后面會給出答案)。

      通常我們所說的MCU的存儲部分主要是片內Flash和片內RAM,這里我可以簡單地把片內忽略掉,那么我們燒錄文件中的四個段內容,哪些需要燒錄到Flash?哪些又要燒錄到RAM中呢?你知道對工程Map一下,在map文件的最后會給出答案。(map的含義就是內存映射,map一下就是查看所有的代碼及數據的內存映射地址),如下:

RO size:包含了Code 和RO data ,是需要存放在MCU的flash空間中。

RW size: 包含了RW 和 ZI data,是需要存放在MCU的RAM空間中。

那么是不是flash中的內容就是RO size ,RAM中的內容就是 RW size呢?

答對了一半,RAM中內容就是RW size。

而flash的中的真實內容應該是 ROM Size。是不是很神奇?(比RO SIZE多了個 RW,RW不應該是放在RAM中?WHY???)

RW的神奇之處:他雖然是讀寫類型的數據,但是他是非0的數據,也就是上電初始化過程中,要對其進行非0初始化,那么這些特定的非0值從哪里來呢?只能先把用于初始化的數據放到flash中了,從flash中讀取值,然后寫入RAM中相應的RW數據內部。

所以flash中還需要存儲RW的初始數據值。


當你完成hex或者bin文件的燒錄以后,MCU內部存儲數據分布如下:

當MCU上電開始運行以后,存儲分布會發生一些微妙的變化(看破不說破,嘗試自己分析下why會這樣?):

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 6
收藏 6
關注 153
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 日日视频 | 成人日韩av | aⅴ一区二区三区无卡无码 五级床片三区全部免费播放 | 综合色一区二区 | 欧洲精品色 | 国人国产免费AV影院 | 日韩a免费 | 中文一区二区视频 | 最新国产网站 | 自拍视频区 | 国产91在线视频 | 国产精品人妻无码久久久 | 感官之火在线观看 | 中文字幕高清在线中文字幕 | 亚洲成aⅴ人片久青草影院 aaaa少妇高潮欧美大片 | 夜草视频 | 在线欧美激情 | 中文字幕久久久人伦 | 黄色网址你懂的 | 天天爽夜夜爽人人爽一区二区 | 四虎影视精品成人 | 国产成人亚洲影院在线播放 | 深爱五月网 | 国产一级午夜一级在线观看 | 日韩人人爱| 岛国视频在线免费观看 | 国产精品成人免费视频 | 无码夫の前で人妻を侵犯 | 成人观看av| 亚洲偷精品国产五月丁香麻豆 | 国产成人亚??合 | 国产在线一卡 | 中国精品久久久久国产 | 日本阿V网站在线观看中文 舌L子伦熟妇ΑV | 老色鬼在线精品视频 | 国产成人无码性教育视频 | 国产成人一区二区三区视频免费 | 欧美精品国产一区二区 | 精品国产伦一区二区三区 | XUNLEIGE无码新入口 | 日日摸日日碰夜夜爽2015电影 |