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】 |
| iamgeB | iamgeA | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
| 126976 | 126976 | BIM工程代碼 | 0x0000-0x07FF | 0 | 0 | 0 | 0 | ? | ? | ? | |
| ? | 7 | CODE_BEG | 0x0830 | 800 | 1 | 1 | ? | ? | ? | ||
| ? | 1000 | 2 | 2 | ? | ? | ? | |||||
| ? | 1800 | 3 | 3 | ? | ? | ? | |||||
| ? | 2000 | 4 | 4 | ? | ? | ? | |||||
| ? | 2800 | 5 | 5 | ? | ? | ? | |||||
| ? | 3000 | 6 | 6 | ? | ? | ? | |||||
| ? | CODE_END | 0x3FFF | 3800 | 7 | 7 | ? | ? | ? | |||
| 8 | ? | CODE_BEG | 0x4030 | 4000 | 8 | 8 | ? | ? | ? | ||
| ? | 4800 | 9 | 9 | ? | ? | ? | |||||
| ? | 5000 | 10 | 10 | ? | ? | ? | |||||
| ? | 5800 | 11 | 11 | ? | ? | ? | |||||
| ? | 6000 | 12 | 12 | ? | ? | ? | |||||
| ? | 6800 | 13 | 13 | ? | ? | ? | |||||
| ? | 7000 | 14 | 14 | ? | ? | ? | |||||
| ? | CODE_END | 0x7FFF | 7800 | 15 | 15 | ? | ? | ? | |||
| 16 | ? | BANK1_BEG | 0x18000 | 18000 | 16 | 0 | 1 | 10000 | 8000 | ? | |
| ? | 18800 | 17 | 1 | ? | ? | ? | |||||
| ? | 19000 | 18 | 2 | ? | ? | ? | |||||
| ? | 19800 | 19 | 3 | ? | ? | ? | |||||
| ? | 1A000 | 20 | 4 | ? | ? | ? | |||||
| ? | 1A800 | 21 | 5 | ? | ? | ? | |||||
| ? | 1B000 | 22 | 6 | ? | ? | ? | |||||
| ? | 1B800 | 23 | 7 | ? | ? | ? | |||||
| ? | 1C000 | 24 | 8 | ? | ? | ? | |||||
| ? | 1C800 | 25 | 9 | ? | ? | ? | |||||
| ? | 1D000 | 26 | 10 | ? | ? | ? | |||||
| ? | 1D800 | 27 | 11 | ? | ? | ? | |||||
| ? | 1E000 | 28 | 12 | ? | ? | ? | |||||
| ? | 1E800 | 29 | 13 | ? | ? | ? | |||||
| ? | 1F000 | 30 | 14 | ? | ? | ? | |||||
| ? | BANK1_BEG | 0x1F000 | 1F800 | 31 | 15 | ? | ? | ? | |||
| 16 | ? | BANK2_BEG | 0x28000 | 28000 | 32 | 0 | 2 | 20000 | 8000 | ? | |
| ? | 28800 | 33 | 1 | ? | ? | ? | |||||
| ? | 29000 | 34 | 2 | ? | ? | ? | |||||
| ? | 29800 | 35 | 3 | ? | ? | ? | |||||
| ? | 2A000 | 36 | 4 | ? | ? | ? | |||||
| ? | 2A800 | 37 | 5 | ? | ? | ? | |||||
| ? | 2B000 | 38 | 6 | ? | ? | ? | |||||
| ? | 2B800 | 39 | 7 | ? | ? | ? | |||||
| ? | 2C000 | 40 | 8 | ? | ? | ? | |||||
| ? | 2C800 | 41 | 9 | ? | ? | ? | |||||
| ? | 2D000 | 42 | 10 | ? | ? | ? | |||||
| ? | 2D800 | 43 | 11 | ? | ? | ? | |||||
| ? | 2E000 | 44 | 12 | ? | ? | ? | |||||
| ? | 2E800 | 45 | 13 | ? | ? | ? | |||||
| ? | 2F000 | 46 | 14 | ? | ? | ? | |||||
| ? | BANK2_BEG | 0x2F000 | 2F800 | 47 | 15 | ? | ? | ? | |||
| 16 | ? | BANK3_BEG | 0x38000 | 38000 | 48 | 0 | 3 | 30000 | 8000 | ? | |
| ? | 38800 | 49 | 1 | ? | ? | ? | |||||
| ? | 39000 | 50 | 2 | ? | ? | ? | |||||
| ? | 39800 | 51 | 3 | ? | ? | ? | |||||
| ? | 3A000 | 52 | 4 | ? | ? | ? | |||||
| ? | 3A800 | 53 | 5 | ? | ? | ? | |||||
| ? | 3B000 | 54 | 6 | ? | ? | ? | |||||
| ? | 3B800 | 55 | 7 | ? | ? | ? | |||||
| ? | 3C000 | 56 | 8 | ? | ? | ? | |||||
| ? | 3C800 | 57 | 9 | ? | ? | ? | |||||
| ? | 3D000 | 58 | 10 | ? | ? | ? | |||||
| ? | 3D800 | 59 | 11 | ? | ? | ? | |||||
| ? | 3E000 | 60 | 12 | ? | ? | ? | |||||
| ? | 3E800 | 61 | 13 | ? | ? | ? | |||||
| ? | 3F000 | 62 | 14 | ? | ? | ? | |||||
| ? | BANK3_BEG | 0x3F000 | 3F800 | 63 | 15 | ? | ? | ? | |||
| 6 | ? | BANK4_BEG | 0x48000 | 48000 | 64 | 0 | 4 | 40000 | 8000 | BANK4用作存儲常量數據段映射到代碼段中 | |
| ? | 48800 | 65 | 1 | ? | ? | ||||||
| ? | 49000 | 66 | 2 | ? | ? | ||||||
| ? | 49800 | 67 | 3 | ? | ? | ||||||
| ? | 4A000 | 68 | 4 | ? | ? | ||||||
| ? | BANK4_END | 0x4AFFF | 4A800 | 69 | 5 | ? | ? | ||||
| ? | 10 | BANK4_BEG | 0x4B000 | 4B000 | 70 | 6 | ? | ? | |||
| ? | 4B800 | 71 | 7 | ? | ? | ||||||
| ? | 4C000 | 72 | 8 | ? | ? | ||||||
| ? | 4C800 | 73 | 9 | ? | ? | ||||||
| ? | 4D000 | 74 | 10 | ? | ? | ||||||
| ? | 4D800 | 75 | 11 | ? | ? | ||||||
| ? | 4E000 | 76 | 12 | ? | ? | ||||||
| ? | 4E800 | 77 | 13 | ? | ? | ||||||
| ? | 4F000 | 78 | 14 | ? | ? | ||||||
| ? | BANK4_END | 0x4FFFF | 4F800 | 79 | 15 | ? | ? | ||||
| ? | 16 | BANK5_BEG | 0x58000 | 58000 | 80 | 0 | 5 | 50000 | 8000 | BANK5用作存儲常量數據段映射到代碼段中;BANK5數據會傳輸到XDATA的區域中去 | |
| ? | 58800 | 81 | 1 | ? | ? | ||||||
| ? | 59000 | 82 | 2 | ? | ? | ||||||
| ? | 59800 | 83 | 3 | ? | ? | ||||||
| ? | 5A000 | 84 | 4 | ? | ? | ||||||
| ? | 5A800 | 85 | 5 | ? | ? | ||||||
| ? | 5B000 | 86 | 6 | ? | ? | ||||||
| ? | 5B800 | 87 | 7 | ? | ? | ||||||
| ? | 5C000 | 88 | 8 | ? | ? | ||||||
| ? | 5C800 | 89 | 9 | ? | ? | ||||||
| ? | 5D000 | 90 | 10 | ? | ? | ||||||
| ? | 5D800 | 91 | 11 | ? | ? | ||||||
| ? | 5E000 | 92 | 12 | ? | ? | ||||||
| ? | 5E800 | 93 | 13 | ? | ? | ||||||
| ? | 5F000 | 94 | 14 | ? | ? | ||||||
| ? | BANK5_END | 0x5FFFF | 5F800 | 95 | 15 | ? | ? | ||||
| ? | 16 | BANK6_BEG | 0x68000 | 68000 | 96 | 0 | 6 | 60000 | 8000 | ? | |
| ? | 68800 | 97 | 1 | ? | ? | ? | |||||
| ? | 69000 | 98 | 2 | ? | ? | ? | |||||
| ? | 69800 | 99 | 3 | ? | ? | ? | |||||
| ? | 6A000 | 100 | 4 | ? | ? | ? | |||||
| ? | 6A800 | 101 | 5 | ? | ? | ? | |||||
| ? | 6B000 | 102 | 6 | ? | ? | ? | |||||
| ? | 6B800 | 103 | 7 | ? | ? | ? | |||||
| ? | 6C000 | 104 | 8 | ? | ? | ? | |||||
| ? | 6C800 | 105 | 9 | ? | ? | ? | |||||
| ? | 6D000 | 106 | 10 | ? | ? | ? | |||||
| ? | 6D800 | 107 | 11 | ? | ? | ? | |||||
| ? | 6E000 | 108 | 12 | ? | ? | ? | |||||
| ? | 6E800 | 109 | 13 | ? | ? | ? | |||||
| ? | 6F000 | 110 | 14 | ? | ? | ? | |||||
| ? | BANK6_END | 0x6FFFF | 6F800 | 111 | 15 | ? | ? | ? | |||
| ? | 13 | BANK7_BEG | 0x78000 | 78000 | 112 | 0 | 7 | 70000 | 8000 | ? | |
| ? | 78800 | 113 | 1 | ? | ? | ? | |||||
| ? | 79000 | 114 | 2 | ? | ? | ? | |||||
| ? | 79800 | 115 | 3 | ? | ? | ? | |||||
| ? | 7A000 | 116 | 4 | ? | ? | ? | |||||
| ? | 7A800 | 117 | 5 | ? | ? | ? | |||||
| ? | 7B000 | 118 | 6 | ? | ? | ? | |||||
| ? | 7B800 | 119 | 7 | ? | ? | ? | |||||
| ? | 7C000 | 120 | 8 | ? | ? | ? | |||||
| ? | 7C800 | 121 | 9 | ? | ? | ? | |||||
| ? | 7D000 | 122 | 10 | ? | ? | ? | |||||
| ? | 7D800 | 123 | 11 | ? | ? | ? | |||||
| ? | BANK7_END | 0x7E7FF | 7E000 | 124 | 12 | ? | ? | ? | |||
| ? | ? | NV1 | 7E800 | 125 | 13 | ? | ? | ? | |||
| ? | ? | NV2 | 7F000 | 126 | 14 | ? | ? | ? | |||
| ? | ? | 位鎖頁鎖位頁面 | 7F800 | 127 | 15 | ? | ? | ? | |||
| ? | ? | 78000 | 128 | ? | ? | ? | |||||
| ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
總結
以上是生活随笔為你收集整理的CC2541 内存区域的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为交换机vlan配置举例_华为S570
- 下一篇: 乐视乐Max Pro和Max65 Bla