日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CC2541 内存区域

發布時間:2024/3/26 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CC2541 内存区域 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ROM或者閃存,叫程序存儲區,寫的程序是存在這里面的,上電后從這里面執行。程序存儲區也分為片內和片外,閃存或者羅不管是片內還是片外的,只能用來定義常量,是用代碼來修飾。也就是說,用代碼來修飾的東西,在程序運行過程中,不能修改。

51-RAM

  • 內部RAM的低128位(00-7F),對應?語言就是數據;直接或間接尋址內部RAM的0×20~值為值為0x2F是一塊可位尋址區,對應于?語言的BDATA。
  • 內部RAM的高128位(80-FF),對應?語言就是IDATA;間接尋址。
  • IDATA的范圍是256位(00-FF),可以看出IDATA是包含數據(00-7F)的,區別只是尋址方式不同,同時在80?FF,這塊片內RAM通常用于中斷和函數調用的堆棧,一般不區使用的的.idata是用類似?中的指針方式訪問的。
  • 特殊功能寄存器(SFR)
  • 外部RAM 64K(0000-FFFF)。前256個算是一頁,這一頁比較特殊,是用pdata來修飾的,當然,也可以用xdata來修飾。除了第一頁的256個以外的其他65280個空間,只能用XDATA來修飾;

向地址80H地址寫一個數值,內部的高128位RAM?還是SFR?是用指令。

直接尋址訪問的就是SFR
R0或者R1間接尋址內部高128位RAM
DPTR或者是R0,R1間接尋址且配合的是MOVX指令訪問外部外部RAM中地址

存儲類型與存儲區關系

  • ?????data --->可尋址片內ram
  • ?????bdata --->可位尋址的片內ram
  • ?????idata --->可尋址片內ram,允許訪問全部內部ram
  • ?????pdata --->分頁尋址片外ram(MOVX @ R0)(256 BYTE /頁)
  • ?????xdata --->可尋址片外ram(64k地址范圍FFFFH)
  • ?????code --->程序存儲區(64k地址范圍),對應MOVC @DPTR

?

8051 CPU核心是一個單周期8051兼容的核心。它有三個不同的內存訪問總線(SFR,DATA和CODE / XDATA),具有對SFR,數據和主SRAM的單周期訪問。它還包括一個調試接口和一個18輸入的擴展中斷單元.CPU和內存的詳細功能將在第2章中介紹。

- - - - - - - - - - - - - - - - - -

內存仲裁程序是系統的核心,因為它通過SFR總線將CPU和DMA控制器與物理內存和所有外設連接起來。仲裁內存器有四個內存訪問點,其中的訪問可以映射到三個物理內存中的一個:RAM,閃存和XREG / SFR寄存器。內存仲裁程序負責執行對同一物理內存的同時內存訪問之間的仲裁和排序。

- - - - - - - - - - - - - - - - - -

這是低功耗應用程序的一個重要特性。

- - - - - - - - - - - - - - - - - -

32,64,96,128或256 kb的閃存塊為設備提供了在線可編程的非易失性程序內存,并映射到CODE和XDATA內存空間。除了保存程序代碼和常量之外,非易失性內存還允許應用程序保存必須保存的數據,以便在重新啟動設備后可用例如,使用這個特性可以使用保存的特定于網絡的數據,從而避免完全啟動和網絡查找-連接過程的需要。

8051 CPU架構有四個不同的RAM內存空間.8051有獨立的內存空間用于程序內存和數據內存 .8051內存空間如下(詳見2.2.1節和2.2.2節):

1,CODE。用于程序內存的只讀存儲器空間。這個內存空間的地址是64 KB。

2,DATA。可由單周期CPU直接指令或間接訪問的讀寫數據內存空間。這個內存空間的地址是256字節。數據內存空間的下128字節可以直接或間接尋址,而上128字節只能間接尋址。

3,XDATA。讀寫數據內存空間,通常需要4-5個CPU指令周期來訪問。這個內存空間的地址是64 KB【0-FFFF】。對XDATA內存的訪問也比數據訪問慢,因為CODE和XDATA內存空間在CPU核心上共享一個公共總線,因此不能與XDATA訪問并行執行來自代碼的指令預取

4,SFR。讀寫一種寄存器內存空間,可由單個CPU指令直接訪問。這個內存空間由128字節組成。對于地址可被8整除的SFR寄存器,每個位也可以單獨尋址。

這四個不同的內存空間在8051架構中是不同的,但是在設備中有部分重疊,以簡化DMA傳輸和硬件調試器操作。

不同的內存空間如何映射到三個物理內存(閃存程序存儲器,SRAM和存儲器映射寄存器)在2.2.1和2.2.2節中進行了描述。

內存映射內存映射與標準8051內存映射在兩個重要方面不同,如下所述。

首先,為了允許DMA控制器訪問所有物理內存,從而允許不同8051內存空間之間的DMA傳輸,將SFR和DATA內存空間的部分映射到XDATA內存空間(見圖2-1)。

其次,可以使用兩種替代方案進行代碼內存空間映射。

如圖1所示,第一種方案是標準8051映射,其中只有程序內存(即閃存)映射到CODE內存空間。該映射是設備重置后的默認映射,如圖2-2所示。

2,第二種方案用于從SRAM執行代碼。在這種模式下,SRAM映射到0x8000到(0x8000 + SRAM_SIZE - 1)的區域,映射如圖2-3所示。從SRAM執行代碼可以提高性能并降低功耗。

XDATA的上32 KB是一個只讀區域,稱為XBANK(參見圖2-1)。任何可用的32 KB閃存blonk都可以在這里映射。這使得軟件可以訪問整個閃存。這個區域通常用來存儲額外的常量數據。有關所有8051內存空間映射的詳細信息在2.2.2節中給出。

圖2-1到圖2-3給出了顯示不同物理內存如何映射到CPU內存空間的內存映射圖。可用閃存庫的數量取決于閃存大小選項。

128byte SFR地址---> xdata [7080-70FF];

256byte DATA地址---> xdata [0000-1FFF];

?

CPU的內存空間:

XDATA內存空間.XDATA內存映射如圖2-1所示。

1,SRAM映射到地址范圍0x0000到(SRAM_SIZE - 1)。若SRAM_SIZE = 8 kb【0x0000-0x1FFF】
2,XREG區域映射到1 KB地址范圍(0x6000-0x63FF)。這些寄存器是附加寄存器,有效地擴展了SFR寄存器空間。一些外圍寄存器和大多數無線電控制和數據寄存器都映射在這里
3,SFR寄存器映射到地址范圍(0x7080-0x70FF)。
4,閃光燈信息頁(2KB)映射到地址范圍(0x7800- 0x7FFF的)這是一個只讀區域,包含有關設備的各種信息
.5,XDATA內存空間的上32 KB(0x8000-0xFFFF)是只讀閃存代碼庫(XBANK),使用MEMCTR.XBANK [2:0比特,可以映射到任何可用的閃光空白
0.6,閃存,SRAM和寄存器到XDATA的映射允許DMA控制器和CPU訪問單個統一地址空間中的所有物理內存
0.7,寫入內存映射(圖中陰影部分)未的實現的區域讀取數據將返回0×00。對只讀區域(即閃爍區域)的寫操將被忽略
如圖8所示,代碼的內存空間.CODE存空間為64 KB,分為公共區域(0x0000k - 0x7FFF的的)。和銀行區域(0x8000-0xFFFF),如圖2-2所示公共區域總是映射到銀行區域可以映射到任何可用的32 KB閃存銀行(從0到7,共256k)。可用閃存銀行的數量取決于閃存大小選項。使用閃存銀行 - 較低的32 KB物理閃存(銀行0)。選擇寄存器FMAP選擇閃存銀行。在32 kb的設備上,沒有閃存可以映射到銀行區域。從該區域讀取數據將在這些設備上返回0×00。
9,允許程序執行從SRAM,可以SRAM映射到低銀行區域的范圍從0 x8000-(0 x8000 + SRAM_SIZE - 1)。其余的當前選擇的bank仍然是映射到的地址范圍(0 x8000 + SRAM_SIZE) - 0 xffff。設置MEMCTR.XMAP位啟用此功能
.10,CODE的內存空間.CODE內存的8位地址范圍映射到SRAM的上256字節,即從(SRAM_SIZE - 256)到(SRAM_SIZE - 1)的地址范圍。用于執行代碼
0.11,SFR內存空間。通過這個內存空間可以訪問128條目的硬件寄存器區域.SFR寄存器也可以通過地址范圍(0x7080-0x70FF)的XDATA地址空間訪問。一些特定于CPU的SFR寄存器駐留在CPU內核中,只能使用SFR內存空間訪問它們,而不能通過映射到XDATA內存空間的重復映射訪問它們。這些特定的SFR寄存器列在SFR寄存器中。

iamgeBiamgeA??????????
126976126976BIM工程代碼0x0000-0x07FF 0000???
?7CODE_BEG0x0830 80011???
?   100022???
?   180033???
?   200044???
?   280055???
?   300066???
?CODE_END0x3FFF 380077???
8?CODE_BEG0x4030 400088???
?   480099???
?   50001010???
?   58001111???
?   60001212???
?   68001313???
?   70001414???
?CODE_END0x7FFF 78001515???
16?BANK1_BEG0x18000 180001601100008000?
?   18800171???
?   19000182???
?   19800193???
?   1A000204???
?   1A800215???
?   1B000226???
?   1B800237???
?   1C000248???
?   1C800259???
?   1D0002610???
?   1D8002711???
?   1E0002812???
?   1E8002913???
?   1F0003014???
?BANK1_BEG0x1F000 1F8003115???
16?BANK2_BEG0x28000 280003202200008000?
?   28800331???
?   29000342???
?   29800353???
?   2A000364???
?   2A800375???
?   2B000386???
?   2B800397???
?   2C000408???
?   2C800419???
?   2D0004210???
?   2D8004311???
?   2E0004412???
?   2E8004513???
?   2F0004614???
?BANK2_BEG0x2F000 2F8004715???
16?BANK3_BEG0x38000 380004803300008000?
?   38800491???
?   39000502???
?   39800513???
?   3A000524???
?   3A800535???
?   3B000546???
?   3B800557???
?   3C000568???
?   3C800579???
?   3D0005810???
?   3D8005911???
?   3E0006012???
?   3E8006113???
?   3F0006214???
?BANK3_BEG0x3F000 3F8006315???
6?BANK4_BEG0x48000 480006404400008000BANK4用作存儲常量數據段映射到代碼段中
?   48800651??
?   49000662??
?   49800673??
?   4A000684??
?BANK4_END0x4AFFF 4A800695??
?10BANK4_BEG0x4B000 4B000706??
?   4B800717??
?   4C000728??
?   4C800739??
?   4D0007410??
?   4D8007511??
?   4E0007612??
?   4E8007713??
?   4F0007814??
?BANK4_END0x4FFFF 4F8007915??
?16BANK5_BEG0x58000 580008005500008000BANK5用作存儲常量數據段映射到代碼段中;BANK5數據會傳輸到XDATA的區域中去
?   58800811??
?   59000822??
?   59800833??
?   5A000844??
?   5A800855??
?   5B000866??
?   5B800877??
?   5C000888??
?   5C800899??
?   5D0009010??
?   5D8009111??
?   5E0009212??
?   5E8009313??
?   5F0009414??
?BANK5_END0x5FFFF 5F8009515??
?16BANK6_BEG0x68000 680009606600008000?
?   68800971???
?   69000982???
?   69800993???
?   6A0001004???
?   6A8001015???
?   6B0001026???
?   6B8001037???
?   6C0001048???
?   6C8001059???
?   6D00010610???
?   6D80010711???
?   6E00010812???
?   6E80010913???
?   6F00011014???
?BANK6_END0x6FFFF 6F80011115???
?13BANK7_BEG0x78000 7800011207700008000?
?   788001131???
?   790001142???
?   798001153???
?   7A0001164???
?   7A8001175???
?   7B0001186???
?   7B8001197???
?   7C0001208???
?   7C8001219???
?   7D00012210???
?   7D80012311???
?BANK7_END0x7E7FF 7E00012412???
??NV1  7E80012513???
??NV2  7F00012614???
??位鎖頁鎖位頁面  7F80012715???
??   78000128  ???
????????????

總結

以上是生活随笔為你收集整理的CC2541 内存区域的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。