麻豆一区二区三区蜜桃免费_中文字幕Va一区二区三区 _国产成人综合久久二区_丰满多毛的大隂户毛茸茸_国产麻豆剧果冻传媒免费老狼_无码人妻精品一区二区三区久久久 _亚洲中文无码精品卡通_蜜臀亚洲AV永久无码精品老司机

【ARM】PK51關(guān)于內(nèi)存模式的解析與區(qū)別

1、 文檔目標(biāo)

解決PK51中三種內(nèi)存模式所對應(yīng)的不同場景選擇。


2、 問題場景

在PK51中有三種內(nèi)存模型可以進(jìn)行選擇,但是這三種內(nèi)存模型的具體作用以及應(yīng)用場景大部分工程師都不太清楚。


圖2-1

3、軟硬件環(huán)境

1)、軟件版本:Keil PK51 9.60

2)、電腦環(huán)境:Windows 11

3)、外設(shè)硬件:無


4、解決方法

1)、在PK51中一共有三個(gè)內(nèi)存模型:

(1)、“Small : variables in DATA”:在這個(gè)模型中,默認(rèn)情況下,所有變量都駐留在8051系統(tǒng)的內(nèi)部數(shù)據(jù)內(nèi)存中,就像顯式地使用數(shù)據(jù)內(nèi)存類型說明符聲明了它們一樣。在這種內(nèi)存模型中,變量訪問是非常高效的。但所有對象(沒有顯式位于另一個(gè)內(nèi)存區(qū))和棧都必須能夠裝入內(nèi)部物理內(nèi)存。棧大小至關(guān)重要,因?yàn)槭褂玫臈?臻g依賴于各種函數(shù)的嵌套深度。通常,如果鏈接器被配置為覆蓋內(nèi)部數(shù)據(jù)內(nèi)存中的變量,那么Small內(nèi)存模型是最好的模型。


(2)、”Compact : variables in PDATA“:默認(rèn)情況下,使用Compact模型時(shí),所有變量都駐留在8051系統(tǒng)的外部數(shù)據(jù)內(nèi)存的一頁中,就像顯式地使用pdata內(nèi)存類型說明符聲明的那樣。這個(gè)內(nèi)存模型最多可以容納256字節(jié)的變量。這種限制是由于所使用的尋址方案是間接通過寄存器R0和R1 (@R0, @R1)。這種內(nèi)存模型沒有Small模型高效,變量訪問也沒有Small模型快。然而,Compact模型比Large模型更快。在使用Compact模型時(shí),C51編譯器使用@R0和@R1操作數(shù)的指令訪問外部內(nèi)存。R0和R1是字節(jié)寄存器,只提供地址的低位字節(jié)。如果您的目標(biāo)硬件有超過256字節(jié)的外部內(nèi)存,高位地址字節(jié)(或頁)由大多數(shù)8051設(shè)備的端口2提供。必須使用適當(dāng)?shù)耐獠績?nèi)存頁(在啟動(dòng)代碼中)初始化端口2,并且必須指定鏈接器PDATA的起始地址。


(3)、“Large : variables in XDATA:”:在Large模型中,默認(rèn)情況下,所有變量都駐留在外部數(shù)據(jù)內(nèi)存中(最高可達(dá)64K字節(jié))。這與使用xdata內(nèi)存類型說明符顯式聲明它們是一樣的。數(shù)據(jù)指針(DPTR)用于外部內(nèi)存尋址。需要注意的是,通過數(shù)據(jù)指針訪問內(nèi)存的效率很低,而且速度很慢,特別是對于兩個(gè)或兩個(gè)以上字節(jié)長的變量。這種類型的數(shù)據(jù)訪問機(jī)制比small model或compact model生成更多的代碼。


2)、這個(gè)三種內(nèi)存模型的主要差別就是代碼大小和變量存儲上,如圖4-2所示。在代碼大小上Large>Compact>Small。而且在Small模型下,大部分的數(shù)據(jù)存儲在Data段,在Compact和Large模型中就存儲到XData段了。


圖4-2


【更多軟件使用問題請站內(nèi)搜索或關(guān)注B站:億道電子查看視頻教學(xué)】