標准51系列內核的邏輯空間為哈佛結構,也就是說,程序空間和地址空間是分開的。具體分為:
CODE區:存放程序代碼和一些常量信息,有16根地址總線,尋址范圍為0x0000~0xFFFF,共計64K
DATA區:存放運行中的數據,8根地址總線,尋址范圍為0x00~0xFF,共計256個字節,其中,低128字節可直接尋址,高128字節可間接尋址。
XDATA:外部數據存儲器,間接尋址,16根地址總線,尋址范圍為0x0000~0xFFFF.共計64K。
51系列內核的物理存儲空間划分為Flash,SRAM,SFR,Info Page,XREG。
邏輯空間划分為4類,CODE、DATA、SFR、XDATA。
CODE全部映射到Flash中去,DATA區全部映射到SRAM中去,其中,低128字節的DATA可直接或間接尋址,高128字節只能間接尋址。XDATA大部分映射到Flash,少部分映射到SRAM中。DMA在XDATA上尋址。
這里,就有一個疑問了,既然CC2530系列內部Flash最大可達256K,最小可以為32K。但是CODE區可尋址范圍最大只有64K,如何去尋址256K呢?為了兼容不同系列的Flash大小空間讀寫問題,以32K為一個bank單位,最大空間256K,划分為8個bank,編號為bank0~bank7,其中,bank0是root bank,始終占有。那么CODE尋址還剩下32K空間,因此,最多可以再映射一個bankx(x=1~7),其中,x值的選擇由FMAP[2:0]數值來確定將高位空間映射到剩下的0x8000-0xFFFF 中去。
空間結構圖如下:
下圖是示意Flash映射分配圖
Flash中,一個page的大小為2K,.SRAM映射的空間為低位的8K空間,地址范圍為0x0000~0x1FFF.其頂部256個字節用於映射DATA區。
那么,在這么些bank里面,每個區域又是如何划分的呢?這就要用到IAR的全局鏈接文件f8w2530.xcl了。
f8w2530.xcl文件時IAR的鏈接工具的配置文件,其中,定義了許多段(-Z.-P)、宏(-D)。
對於一些NV項目的存儲,鏈接文件中有如下說明:
內部NV項存儲地址開始和結束,總體預留空間為6個page,也就是12K。
在Flash中的最后一個bank的最后一個page,保留使用,其內容分布如下: