摘要:摘要物聯(lián)網(wǎng)嵌入式芯片,存儲(chǔ)是數(shù)據(jù)核心之一,這個(gè)對(duì)于編程和設(shè)計(jì)的人來(lái)說(shuō)又比較陌生,今天來(lái)說(shuō)說(shuō)中的內(nèi)存結(jié)構(gòu)。棧堆棧又稱為?;蚨询B,是計(jì)算機(jī)科學(xué)中的一種抽象資料類型,只允許在有序的線性資料集合的一端稱為堆棧頂端,進(jìn)行加入數(shù)據(jù)和移除數(shù)據(jù)的運(yùn)算。
摘要:物聯(lián)網(wǎng)嵌入式芯片,存儲(chǔ)是數(shù)據(jù)核心之一,這個(gè)對(duì)于編程和設(shè)計(jì)的人來(lái)說(shuō)又比較陌生,今天來(lái)說(shuō)說(shuō)MCU中的內(nèi)存結(jié)構(gòu)。
本文分享自華為云社區(qū)《漫談嵌入式系統(tǒng)的內(nèi)存》,作者:o0龍龍0o 。
物聯(lián)網(wǎng)嵌入式芯片,存儲(chǔ)是數(shù)據(jù)核心之一,這個(gè)對(duì)于編程和設(shè)計(jì)的人來(lái)說(shuō)又比較陌生,今天來(lái)說(shuō)說(shuō)MCU中的內(nèi)存結(jié)構(gòu)
MCU的存儲(chǔ)器從存儲(chǔ)特性上分為:易失性存儲(chǔ)器、非易失性存儲(chǔ)器,即常說(shuō)的Volatile memory和Non-volatile memory
隨機(jī)存取存儲(chǔ)器 :1、DRAM(動(dòng)態(tài)隨機(jī)存儲(chǔ)器)、2、SRAM(靜態(tài)隨機(jī)存儲(chǔ)器)一般MCU的內(nèi)存多采用SRAM構(gòu)成,主要原因是速度快、結(jié)構(gòu)簡(jiǎn)單。
非易失性存儲(chǔ)器(Non-volatile memory)是指即使電源供應(yīng)中斷,存儲(chǔ)器所存儲(chǔ)的資料并不會(huì)消失,重新供電后,就能夠讀取存儲(chǔ)器中的資料。 主要種類如下:
其中 PROM、Flash一般作為MCU數(shù)據(jù)程序存儲(chǔ)器,不過(guò)現(xiàn)在也有很多MCU內(nèi)掛EEPROM,方便用戶寫入臨時(shí)數(shù)據(jù)。
可擦除可編程式只讀存儲(chǔ)器
是一種斷電后仍能保留數(shù)據(jù)的計(jì)算機(jī)存儲(chǔ)芯片、它是一組浮柵晶體管,被一個(gè)提供比電子電路中常用電壓更高電壓的電子器件分別編程。一旦資料寫入完成后,EPROM只能用強(qiáng)紫外線照射來(lái)擦除。我們常說(shuō)的24C芯片就是這類的存儲(chǔ)器芯片,他可以按照Byte去擦鞋數(shù)據(jù),比按照扇區(qū)擦寫的Flash效果高很多。
內(nèi)存的數(shù)據(jù)一般可以分為堆、棧、程序代碼、數(shù)據(jù)代碼、全局變量代碼
一般如下分布:
堆內(nèi)存(也稱內(nèi)存池)的起始地址及堆區(qū)域總大小是LiteOS對(duì)程序堆的解釋,就是一段AP程序所占用的內(nèi)存大小,這些大小由鏈表或是二叉樹(shù)組成,用于該程序段內(nèi)存的占用。
棧——堆棧(:stack)又稱為?;蚨询B,是計(jì)算機(jī)科學(xué)中的一種抽象資料類型,只允許在有序的線性資料集合的一端(稱為堆棧頂端,:top)進(jìn)行加入數(shù)據(jù)(:push)和移除數(shù)據(jù)(:pop)的運(yùn)算。因而按照后進(jìn)先出(LIFO, Last In First Out)的原理運(yùn)作。在MCU由系統(tǒng)LiteOS對(duì)剩余內(nèi)存進(jìn)行分配用于程序的局部變量的使用和數(shù)據(jù)malloc產(chǎn)生新分配的內(nèi)存。
bss段:(bss segment)通常是指用來(lái)存放程序中未初始化的全局變量的一塊內(nèi)存區(qū)域。bss是英文Block Started by Symbol的簡(jiǎn)稱。bss段屬于靜態(tài)內(nèi)存分配。
data段:數(shù)據(jù)段(data segment)通常是指用來(lái)存放程序中已初始化的全局變量的一塊內(nèi)存區(qū)域。數(shù)據(jù)段屬于靜態(tài)內(nèi)存分配。
text段:代碼段(code segment/text segment)通常是指用來(lái)存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域,一般存放在ROM中。這部分區(qū)域的大小在程序運(yùn)行前就已經(jīng)確定,并且內(nèi)存區(qū)域通常屬于只讀(某些架構(gòu)也允許代碼段為可寫,即允許修改程序)。在代碼段中,也有可能包含一些只讀的常數(shù)變量,例如字符串常量等。
我么編程時(shí)很少會(huì)設(shè)計(jì)到這些的設(shè)計(jì),往往是由系統(tǒng)LiteOS自動(dòng)完成或是由編譯器完成。
宏命令:
#pragma alloc_text( "textsection", function1, ... )
命名特別定義的函數(shù)駐留的代碼段。該編譯指示必須出現(xiàn)在函數(shù)說(shuō)明符和函數(shù)定義之間。
#pragma code_seg( ["section-name"[,"section-class"] ] )
指定分配函數(shù)的代碼段。code_seg編譯指示為函數(shù)指定默認(rèn)的段。你也能夠像段名一樣指定一個(gè)可選的類名。使用沒(méi)有段名字符串的#pragma code_seg將恢復(fù)分配到編譯開(kāi)始時(shí)候的狀態(tài)。
#pragma const_seg( "MY_DATA" )
導(dǎo)致在#pragma語(yǔ)句后面的常量數(shù)據(jù)分配在一個(gè)叫做MY_DATA的段中。
#pragma const_seg( ["section-name"[, "section-class"] ] )
指定用于常量數(shù)據(jù)的默認(rèn)段。data_seg編譯指示除了可以工作于所有數(shù)據(jù)以外具有一樣的效果。你能夠使用該編譯指示將你的常量數(shù)據(jù)保存在一個(gè)只讀的段中。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/122122.html
摘要:今天痞子衡給大家分享的是系統(tǒng)中斷延遲及其測(cè)量方法。至此,系統(tǒng)中斷延遲及其測(cè)量方法痞子衡便介紹完畢了,掌聲在哪里歡迎訂閱歡迎訂閱文章會(huì)同時(shí)發(fā)布到我的博客園主頁(yè)主頁(yè)知乎主頁(yè)微信公眾號(hào)平臺(tái)上?! 〈蠹液?,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是Cortex-M系統(tǒng)中斷延遲及其測(cè)量方法?! ≡谇度胧筋I(lǐng)域里,實(shí)時(shí)性是個(gè)經(jīng)常被我們掛在嘴邊的概念,這里的實(shí)時(shí)性主要強(qiáng)調(diào)得是當(dāng)外界事件發(fā)生時(shí),...
摘要:聊一聊端的即時(shí)通訊端實(shí)現(xiàn)即時(shí)通訊的方法有哪些短輪詢長(zhǎng)輪詢流輪詢客戶端定時(shí)向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器接到請(qǐng)求后馬上返回響應(yīng)信息并關(guān)閉連接。介紹是開(kāi)始提供的一種在單個(gè)連接上進(jìn)行全雙工通訊的協(xié)議。 聊一聊Web端的即時(shí)通訊 Web端實(shí)現(xiàn)即時(shí)通訊的方法有哪些? - 短輪詢 長(zhǎng)輪詢 iframe流 Flash Socket 輪詢 客戶端定時(shí)向服務(wù)器發(fā)送Ajax請(qǐng)求,服務(wù)器接到請(qǐng)求后馬上返...
摘要:所以今天,就和大家一起聊一聊前端的安全那些事兒。我們就聊一聊前端工程師們需要注意的那些安全知識(shí)。殊不知,這不僅僅是違反了的標(biāo)準(zhǔn)而已,也同樣會(huì)被黑客所利用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog... 隨著互聯(lián)網(wǎng)的發(fā)達(dá),各種WEB應(yīng)用也變得越來(lái)越復(fù)雜,滿足了用戶的各種需求...
閱讀 3270·2021-11-24 10:43
閱讀 4234·2021-11-24 10:33
閱讀 3815·2021-11-22 09:34
閱讀 2155·2021-10-11 10:58
閱讀 3785·2021-10-11 10:58
閱讀 885·2021-09-27 13:36
閱讀 3607·2019-08-30 15:54
閱讀 2993·2019-08-29 18:41