1.數據存儲是以“字節”(byte)為單位,數據傳輸大多是以“位”(bit,又名“比特”)為單位,一個位就代表一個0或1(即二進制),每8個位(bit,簡寫為b)組成一個字節(Byte,簡寫為B),是最小一級的信息單位
1字節(Byte)=8位(bit)
1KB( Kilobyte,千字節)=1024B
1MB( Megabyte,兆字節)=1024KB
1GB( Gigabyte,吉字節,千兆)=1024MB
1TB( Trillionbyte,萬億字節,太字節)=1024GB
1PB( Petabyte,千萬億字節,拍字節)=1024TB
2.32位操作系統的地址空間為32位,地址總數為2^32。每個地址對應1Byte内存空間,32位操作系統管理的最大内存空間限制為4GB。
1.KEIL編譯後顯示Program Size詳解:
data=23.3代表程序生成的代碼所占用單片機的内部RAM空間是23.3個字節;xdata是片外RAM空間,xdata=45表示沒有使用片外RAM空間數據;
code=282代表生成的代碼大小(即ROM空間,這裡一般指flash)是282字節。
2、什麼是哈弗結構和馮*諾伊曼結構?
哈佛結構是一種将程序指令存儲和數據存儲分開的存儲器結構,中央處理器首先到程序指令存儲器中讀取程序指令内容,解碼後得到數據地址,再到相應的數據存儲器中讀取數據,并進行下一步的操作(通常是執行)。程序指令存儲和數據存儲分開,可以使指令和數據有不同的數據寬度。
馮.諾伊曼結構(von Neumann architecture),也稱普林斯頓結構,是一種将程序指令存儲器和數據存儲器合并在一起的電腦設計概念結構。
3、什麼是ROM和RAM?
ROM:隻讀内存,其中flash可以理解為ROM。保存在ROM中的數據不會因斷電而丢失,用于保存用戶程序和在程序執行中保持不變的常數。
RAM: 随機讀/寫内存,其中Sram 、DRAM可以理解為RAM。保存在RAM中的數據斷電後也随之丢失,主要用于存儲程序中的變量。
4、什麼是棧和堆?
棧(stack):用來存儲每個函數創建的局部變量和形參等,棧是先進後出原則的結構體。在函數中每次聲明一個局部變量就存在棧中,函數退出則定義的局部變量也就會被釋放。局部變量創建和釋放都是自動,因此不需要管理棧内存。
堆(heap):堆是一種經過排序的樹形數據結構,每個節點都有一個值。堆的存取是随意的,如同我們在圖書館書架上取書一樣。通過malloc()在堆上創建内存,使用free()或者由os釋放。
5、單片機内存模型?
5.1對于棧生長方向向下的單片機,其内存一般模型是:
5.2代碼中标注存儲位置
5.3 單片機運行時所占用的内存,可以分為如下幾個部分:1、棧區(stack):由編譯器自動分配釋放,存放函數地形參,局部變量的值等。2、堆區(heap):由程序員分配釋放,或程序結束時由OS釋放。3、全局變量、靜态變量:初始化的全局變量和靜态變量放在一塊區域,未初始化的全局變量和和未初始化的靜态變量在相鄰的的另一塊區域。程序結束後由系統自動釋放。
4、文字常量:常量字符串就是存放在這裡的,程序結束後由系統釋放。5、程序代碼:存放函數體的二進制代碼。
MCU從FLASH啟動文件分析:
5、Keil編譯 Program Size含義?
keil 顯示:Program Size:Code=xx RO-data=xx RW-data=xx ZI-data=xx
Flash存儲 code(代碼存儲區)和RO-data(隻讀數據存儲區)。
Sram存儲 RW-data(讀寫數據存儲區)和ZI-data(零初始化數據區)。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!