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