漫談嵌入式系統內存【拜托了,物聯網!】

      網友投稿 773 2022-05-28

      0前沿

      物聯網嵌入式芯片,存儲是數據核心之一,這個對于編程和設計的人來說又比較陌生,今天來說說MCU中的內存結構

      1、存儲器形式

      MCU的存儲器從存儲特性上分為:易失性存儲器、非易失性存儲器,即常說的Volatile memory和Non-volatile memory

      1??隨機存取存儲器 :1、DRAM(動態隨機存儲器)、2、SRAM(靜態隨機存儲器)一般MCU的內存多采用SRAM構成,主要原因是速度快、結構簡單。

      2??非易失性存儲器(Non-volatile memory)是指即使電源供應中斷,存儲器所存儲的資料并不會消失,重新供電后,就能夠讀取存儲器中的資料。 主要種類如下:

      只讀存儲器(ROM)

      可編程式只讀存儲器(PROM)

      可擦除可規劃式只讀存儲器(EPROM)

      電子抹除式可復寫只讀存儲器(EEPROM)

      Flash ROM

      磁存儲、硬盤、軟盤、磁帶、3D XPoint、固態硬盤、光存儲、光盤

      漫談嵌入式系統的內存【拜托了,物聯網!】

      其中 PROM、Flash一般作為MCU數據程序存儲器,不過現在也有很多MCU內掛EEPROM,方便用戶寫入臨時數據。

      3??可擦除可編程式只讀存儲器

      是一種斷電后仍能保留數據的計算機存儲芯片、它是一組浮柵晶體管,被一個提供比電子電路中常用電壓更高電壓的電子器件分別編程。一旦資料寫入完成后,EPROM只能用強紫外線照射來擦除。我們常說的24C芯片就是這類的存儲器芯片,他可以按照Byte去擦鞋數據,比按照扇區擦寫的Flash效果高很多。

      2、數據存儲

      內存的數據一般可以分為堆、棧、程序代碼、數據代碼、全局變量代碼

      一般如下分布:

      堆內存(也稱內存池)的起始地址及堆區域總大小是LiteOS對程序堆的解釋,就是一段AP程序所占用的內存大小,這些大小由鏈表或是二叉樹組成,用于該程序段內存的占用。

      棧——堆棧(:stack)又稱為棧或堆疊,是計算機科學中的一種抽象資料類型,只允許在有序的線性資料集合的一端(稱為堆棧頂端,:top)進行加入數據(:push)和移除數據(:pop)的運算。因而按照后進先出(LIFO, Last In First Out)的原理運作。在MCU由系統LiteOS對剩余內存進行分配用于程序的局部變量的使用和數據malloc產生新分配的內存。

      bss段:(bss segment)通常是指用來存放程序中未初始化的全局變量的一塊內存區域。bss是英文Block Started by Symbol的簡稱。bss段屬于靜態內存分配。

      data段:數據段(data segment)通常是指用來存放程序中已初始化的全局變量的一塊內存區域。數據段屬于靜態內存分配。

      text段:代碼段(code segment/text segment)通常是指用來存放程序執行代碼的一塊內存區域,一般存放在ROM中。這部分區域的大小在程序運行前就已經確定,并且內存區域通常屬于只讀(某些架構也允許代碼段為可寫,即允許修改程序)。在代碼段中,也有可能包含一些只讀的常數變量,例如字符串常量等。

      我么編程時很少會設計到這些的設計,往往是由系統LiteOS自動完成或是由編譯器完成。

      3、如何利用程序設計內存呢?

      宏命令:

      #pragma alloc_text( "textsection", function1, ... )

      命名特別定義的函數駐留的代碼段。該編譯指示必須出現在函數說明符和函數定義之間。

      #pragma code_seg( ["section-name"[,"section-class"] ] )

      指定分配函數的代碼段。code_seg編譯指示為函數指定默認的段。你也能夠像段名一樣指定一個可選的類名。使用沒有段名字符串的#pragma code_seg將恢復分配到編譯開始時候的狀態。

      #pragma const_seg( "MY_DATA" )

      導致在#pragma語句后面的常量數據分配在一個叫做MY_DATA的段中。

      #pragma const_seg( ["section-name"[, "section-class"] ] )

      指定用于常量數據的默認段。data_seg編譯指示除了可以工作于所有數據以外具有一樣的效果。你能夠使用該編譯指示將你的常量數據保存在一個只讀的段中。

      【拜托了,物聯網!】有獎征文火熱進行中:https://bbs.huaweicloud.com/blogs/296704

      IoT 嵌入式

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:锃然網絡提供金融行情數據接口,交易服務,全平臺終端
      下一篇:安全性能兩手抓,華為云MySQL“非雙一特性”助力企業業務穩定高效運行
      相關文章
      亚洲乱码无人区卡1卡2卡3| 亚洲综合精品伊人久久| 亚洲AⅤ视频一区二区三区| 亚洲国产日韩在线人成下载| 亚洲日本在线看片| 亚洲国产精品无码中文字| 自拍偷自拍亚洲精品情侣| 亚洲综合久久夜AV | 亚洲一区日韩高清中文字幕亚洲| 精品无码专区亚洲| 亚洲AV成人一区二区三区观看| 亚洲欧美国产国产综合一区| 亚洲无人区码一二三码区别图片| 日本亚洲精品色婷婷在线影院| 亚洲丝袜中文字幕| 久久精品国产亚洲AV久| 国产精品亚洲精品| 亚洲人成色4444在线观看| 亚洲精品无码国产片| 亚洲男人的天堂网站| 亚洲av无码专区在线观看下载| 亚洲精品精华液一区二区| 亚洲国产高清国产拍精品| 久久亚洲色WWW成人欧美| 国产青草亚洲香蕉精品久久| 亚洲XX00视频| 国产AV无码专区亚洲AV手机麻豆| 亚洲中文字幕不卡无码| 亚洲国产精品无码AAA片| 亚洲国产精品久久久久| 亚洲视频免费播放| 亚洲资源最新版在线观看| 亚洲最大的成人网| 国产精品成人亚洲| 亚洲日本一区二区一本一道| 亚洲无码在线播放| 亚洲尹人九九大色香蕉网站| 亚洲校园春色小说| 亚洲国产欧美一区二区三区| 国产99久久亚洲综合精品| 亚洲色婷婷六月亚洲婷婷6月|