CC2530存储空间——Code
硬件平臺:CC2530-F256
開發(fā)環(huán)境:IAR 8051(版本號 8.10)
參考:
1、《CC2530 User's Guide.pdf》(swru191c)
2、《IAR C/C++ Compiler Reference Guide.pdf》
3、《IAR Linker and Library Tools.pdf》
?
一、CC2530代碼空間介紹
?
? ? ? CC2530-F256有著256K的Flash,其代碼存儲空間如圖2-2(來自CC2530User‘s Guide)所看到的,可是51單片機僅僅支持64K的訪問空間。
? ? ? ?于是CC2530便採用Bank映射的方式,地址空間0x0000-0x7FFF,作為ROOT,用于存放啟動代碼等,地址空間0x8000-0xFFFF用于映射不同的Bank(0~7),如圖4(來自IARC/C++ Compiler Reference Guide)所看到的,須要訪問某個Bank的數(shù)據(jù)或代碼時,將該Bank映射到地址空間0x8000-0xFFFF。
? ? ? ? 映射不同Bank時,需使用FMAP寄存器。
注:
CC2530 ROM的不同地址:
物理地址:0x00000~0x3FFFF
Bank地址:
Bank0:0x00000~0x07FFF
Bank1:0x18000~0x1FFFF
Bank2:0x28000~0x2FFFF
Bank3:0x38000~0x3FFFF
Bank4:0x48000~0x4FFFF
Bank5:0x58000~0x5FFFF
Bank6:0x68000~0x6FFFF
Bank7:0x78000~0x7FFFF
?
二、CC2530存儲空間使用
?
? ? ? ? IAR中CC2530的有兩種代碼模式,Near和Banked。當中Banked模式是ZStack使用的模式,ZStack的ROM使用大約在100多KB。當中Near是普通的51單片機模式,僅僅支持64KB的訪問范圍。
? ? ? ? 在文件夾8051\src\lib中有一個iar_banked_code_support.s51文件用于程序執(zhí)行時自己主動切換Bank。
? ? ? ? 測試代碼例如以下:
__code const char code0_buf[10000]@0x48000 = {0, 1};#pragma location="BANK4" void demo1_code() {TRACE("FMAP: %02x\r\n", FMAP);TRACE("%02x %02x\r\n", code0_buf[0], code0_buf[1]); }__code const char code1_buf[10000]@0x58000 = {2, 3};#pragma location="BANK5" void demo2_code() {TRACE("FMAP: %02x\r\n", FMAP);TRACE("%02x %02x\r\n", code1_buf[0], code1_buf[1]); }? ? ? ? 當中BANK5,BANK4是連接配置文件”lnk51ew_CC2530F256_banked.xcl“定義的segment。執(zhí)行結(jié)果例如以下:
? ? ? ? 串口打印的調(diào)試信息例如以下:
總結(jié)
以上是生活随笔為你收集整理的CC2530存储空间——Code的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDS HDIM背后的小秘密
- 下一篇: 地址总线与内存大小的关系(待续…)