返回> 网站首页 

[转载]CC2530存储空间

yoours2014-07-07 16:58:25 阅读 1473

简介一边听听音乐,一边写写文章。

一、CC2530代码空间介绍
      CC2530-F256有着256K的Flash,其代码存储空间如图2-2(来自CC2530User‘s Guide)所示,但是51单片机只支持64K的访问空间。
[转载]CC2530存储空间 - happyboy200032 - happyboy200032的博客
        于是CC2530便采用Bank映射的方式,地址空间0x0000-0x7FFF,作为ROOT,用于存放启动代码等,地址空间0x8000-0xFFFF用于映射不同的Bank(0~7),如图4(来自IARC/C++ Compiler Reference Guide)所示,需要访问某个Bank的数据或代码时,将该Bank映射到地址空间0x8000-0xFFFF。
[转载]CC2530存储空间 - happyboy200032 - happyboy200032的博客
         映射不同Bank时,需使用FMAP寄存器。
[转载]CC2530存储空间 - happyboy200032 - happyboy200032的博客
 注:
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的访问范围。
[转载]CC2530存储空间 - happyboy200032 - happyboy200032的博客
         在目录8051\src\lib中有一个iar_banked_code_support.s51文件用于程序运行时自动切换Bank。
[转载]CC2530存储空间 - happyboy200032 - happyboy200032的博客
         测试代码如下:

__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。运行结果如下:
[转载]CC2530存储空间 - happyboy200032 - happyboy200032的博客
串口打印的调试信息如下:
[转载]CC2530存储空间 - happyboy200032 - happyboy200032的博客
 
 
微信小程序扫码登陆

文章评论

1473人参与,0条评论