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的訪问范围。
在文件夹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之Flash映射
标准51系列内核的逻辑空间为哈佛结构,也就是说,程序空间和地址空间是分开的.具体分为: CODE区:存放程序代码和一些常量信息,有16根地址总线,寻址范围为0x0000~0xFFFF,共计64K DA ...
- CC2530的Flash
CC2530F256内部集成一个增强型8051单片机,拥有8 KB SRAM和256 KB内部Flash存储器.内部Flash主要用来保存程序代码和常量数据.由于传统8051代码存储空间寻址范围只有6 ...
- CC2530使用串口下载(SBL)
工作环境: WIN7 64位 IAR 版本: 8.10.3 (8.10.3.10338) ZStack-CC2530-2.3.1-1.4.0协议栈,下载地址:http://download.csdn. ...
- AppBox升级进行时 - 拥抱Entity Framework的Code First开发模式
AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. 从Subsonic到Entity Framework Subsonic最早发布 ...
- 转载扩展Windows Mobile模拟器存储空间的方法
扩展Windows Mobile模拟器存储空间的方法 在Windows Mobile应用程序开发的初期,可以使用SDK自带的模拟器来进行调试,这给我们开发人员提供了一种方便的途径.一般的应用程序,占用 ...
- Entity Framework Code First 映射继承关系
转载 http://www.th7.cn/Program/net/201301/122153.shtml Code First如何处理类之间的继承关系.Entity Framework Code Fi ...
- C语言编译数组中有的加code有的不加,有什么区别
像uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};和uchar ds1302[]={0xfe,0xfd,0xfb,0xf7,0 ...
- CC2530 Debug ---CC2530 无启动之32K晶振
今天焊接CC2530,其中有个模块下载程序(协议栈程序),无法创建也无法加入网络. 第一步先检查32MH 晶振是否启动,用basice 程序看uart,发现可以正常打印log. 第二步,在线调试,看看 ...
- Keil中 Program Size: Code RO-data RW-data ZI-data
一般 MCU 包含的存储空间有:片内 Flash 与片内 RAM,RAM 相当于内存,Flash 相当于硬盘. 现在我们就一个STM32的工程为例子 linking... Program Size: ...
随机推荐
- 欧舒丹 L'Occitane 活力清泉保湿面霜 - 男士护肤 - 香港草莓网StrawberryNET.com
欧舒丹 L'Occitane 活力清泉保湿面霜 - 男士护肤 - 香港草莓网StrawberryNET.com 欧舒丹 活力清泉保湿面霜 50ml/1.7oz
- ipsec vpn私网数据大量掉包问题
周四出现了一个很奇葩的问题,所有的站点的VPN通信都是正常的,唯独郑州节点和中心节点的私网数据长ping掉包量达到20%左右,在中心节点ping郑州节点公网IP没有发现掉包问题,故障排除如下: 1.测 ...
- POJ训练计划3080_Blue Jeans(串处理/暴力)
Blue Jeans Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11542 Accepted: 4962 Descr ...
- hdu1028(整数划分问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028 整数划分问题 整数划分 --- 一个老生长谈的问题: 描述 整数划分是一个经典的问题.请写一个程 ...
- zoj2059(经典dp)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1059 分析:dp[i][j]表示前i个石头组成两座塔高度差为j的较低 ...
- openstack学习笔记一 虚拟机启动过程代码跟踪
openstack学习笔记一 虚拟机启动过程代码跟踪 本文主要通过对虚拟机创建过程的代码跟踪.观察虚拟机启动任务状态的变化,来透彻理解openstack各组件之间的作用过程. 当从horizon界面发 ...
- 记得有一个奇怪的ORA-04028: cannot generate diana for object
开发商称新一package,目前已经在翻译过程中的一些错误.提示PL/SQL:ORA-00942: table or view does not exists.这是一个非常明显的错误,即要么是表不存在 ...
- mybatis 打印SQL语句
在log4j文件中配置 log4j.rootLogger=DEBUG log4j.logger.com.ibatis=DEBUG log4j.logger.org.mybatis=DEBUG
- Service组件 总结 + 绑定理Service三种实现方式 Messager + Binder + AIDL
在Android中进程按优先级可以分为五类,优先级从高到低排列: - 前台进程 该进程包含正在与用户进行交互的界面组件,比如一个Activity - 可视进程 该进程中的组件虽然没有和用户交互,但是仍 ...
- java导入excel
package com.duosen.gate.test; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...