原创 CC2530内存空间

2014-10-30 17:33 1435 25 26 分类: 消费电子

硬件平台: CC2530-F256

开发环境: 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 的访问空间。

CODE Memory Space

       于是 CC2530 便采用 Bank 映射的方式,地址空间 0x0000-0x7FFF ,作为 ROOT ,用于存放启动代码等,地址空间 0x8000-0xFFFF 用于映射不同的 Bank ( 0~7 ),如图 4 (来自 IARC/C++ Compiler Reference Guide )所示,需要访问某个 Bank 的数据或代码时,将该 Bank 映射到地址空间 0x8000-0xFFFF 。

Banked code memory layout

        映射不同 Bank 时,需使用 FMAP 寄存器。

Flash Bank Map

注:

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 的访问范围。

Target Set

        在目录 8051\src\lib 中有一个 iar_banked_code_support.s51 文件用于程序运行时自动切换 Bank。

Code Bank Set

        测试代码如下:

__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。运行结果如下:

debug memory

        串口打印的调试信息如下:

Test

文章评论1条评论)

登录后参与讨论

用户1602177 2014-11-4 15:54

感谢分享~
相关推荐阅读
我要评论
1
25
关闭 站长推荐上一条 /2 下一条