CC2530存储空间——Code
2014-07-07 09:44
197 查看
硬件平台: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的访问空间。
![](https://img-blog.csdn.net/20140707093505359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXRvc3d3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
于是CC2530便采用Bank映射的方式,地址空间0x0000-0x7FFF,作为ROOT,用于存放启动代码等,地址空间0x8000-0xFFFF用于映射不同的Bank(0~7),如图4(来自IARC/C++
Compiler Reference Guide)所示,需要访问某个Bank的数据或代码时,将该Bank映射到地址空间0x8000-0xFFFF。
![](https://img-blog.csdn.net/20140707093658265?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXRvc3d3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
映射不同Bank时,需使用FMAP寄存器。
![](https://img-blog.csdn.net/20140707093902046?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXRvc3d3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
注:
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的访问范围。
![](https://img-blog.csdn.net/20140707094128109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXRvc3d3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在目录8051\src\lib中有一个iar_banked_code_support.s51文件用于程序运行时自动切换Bank。
![](https://img-blog.csdn.net/20140707094204062?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXRvc3d3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
测试代码如下:
其中BANK5,BANK4是连接配置文件”lnk51ew_CC2530F256_banked.xcl“定义的segment。运行结果如下:
![](https://img-blog.csdn.net/20140707094330359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXRvc3d3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
串口打印的调试信息如下:
开发环境: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的数据或代码时,将该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文件用于程序运行时自动切换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。运行结果如下:
串口打印的调试信息如下:
相关文章推荐
- (转载)CC2530存储空间——Code
- CC2530存储空间——Code
- SQL Server CE:没有足够的存储空间来完成该操作[CODE:8007000E]
- SQL Server CE:没有足够的存储空间来完成该操作[CODE:8007000E]
- Windows系统数据与WMI存储空间的对应关系
- Google提供收费存储空间
- C程序的存储空间
- 无辅助存储空间判断回文数字
- 利用siezof运算现实存储各种数据类型使用内存空间的字节数
- Android获取外部和内部存储空间总大小和可用大小
- C++类的存储空间学习总结
- 【Java】【TIJ】验证类中的static域只有一份存储空间,与类实例化的对象个数无关。
- 分析 Android 4.4.4 设备的 存储空间监控
- C程序的存储空间布局 (转)
- ZumoDrive免费网络硬盘提供1G存储空间
- 浅谈Java中的存储空间类型
- Jetson TX1刷机教程(解决Auvidea carrier boards(2x USB3.0)+ 源码编译安装opencv3.2存储空间不足问题)
- [嵌入式开发板]iTOP-4412开发板linux 系统存储空间的修改
- uboot在nandflash存储时内存和NandFlash存储空间
- PL/SQL-Thread creation error:存储空间不足,无法处理此命令