CC2530存储空间——Code
硬件平台: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的访问空间。 ? ? ? ?于是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的访问范围。 ? ? ? ? 在目录8051srclib中有一个iar_banked_code_support.s51文件用于程序运行时自动切换Bank。 ? ? ? ? 测试代码如下: __code const char code0_buf[10000]@0x48000 = {0,1}; #pragma location="BANK4" void demo1_code() { TRACE("FMAP: %02xrn",FMAP); TRACE("%02x %02xrn",code0_buf[0],code0_buf[1]); } __code const char code1_buf[10000]@0x58000 = {2,3}; #pragma location="BANK5" void demo2_code() { TRACE("FMAP: %02xrn",code1_buf[0],code1_buf[1]); } ? ? ? ? 其中BANK5,BANK4是连接配置文件”lnk51ew_CC2530F256_banked.xcl“定义的segment。运行结果如下: ? ? ? ? 串口打印的调试信息如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby – 在Rails中创建一个plist 3
- cocos2d-x-3.3rc0的安装和在win7下的visual studio的运行例
- Ehcache 中ehcache.xml 配置详解和示例
- ruby – Gem :: Ext :: BuildError:错误:无法构建gem原生
- 在Swift中将变量更改为子类
- FastJson格式化Request对象导致的一次异常思考
- Flex RadioButton 分组使用repeater
- ruby-on-rails-3 – 使用rails 3中的表单按钮覆盖respond_t
- PostgreSQL 10.4在RHEL7.5上的源码安装
- oracle sql 查询