Zigbee CC2530 单片机存储 IAR查看内存

平台

协议 TI ZStack-2.5.1a

CC2530

存储简介

单片机的存储器分为数据存储器(RAM)程序存储器(ROM/FLASH)

存储分类

RAM

用来存取各种动态的输入输出数据,中间计算结果以及与外部存储器交换的数据和暂存数据。设备掉电后,数据就会丢失

静态 RAM(SRAM)

速度非常快,是目前读写最快的存储设备。

动态 RAM(DRAM)

保留数据时间短,但速度比 ROM 快,计算机内存多为DRAM。DRAM 包括:EDORAM;DDR RAM;RDRAM;SGRAM;WRAM…

ROM

通常用来固化存储一些用户写入程序或数据,用于启动设备和控制设备工作方式。设备掉电后可保存数据

PROM

可编程,一次性

EPROM

可擦除可编程,通过紫外线擦除

EEPROM

擦除可编程,通过电子擦除

FLASH

通常也是用来固化存储一些用户写入程序或数据。设备掉电后不会丢失数据,同时可以快速读取数据。U 盘、MP3 多用这种存储器。

NOR FLASH

NAND FLASH

单片机存储类型与存储区关系

类型存储区
data可寻址片内 ram
bdata可位寻址的片内 ram
idata可寻址片内 ram,允许访问全部内部 ram
pdata分页寻址片外 ram (MOVX @R0) (256 BYTE/页)
xdata可寻址片外 ram (64k 地址范围 FFFFH)
code程序存储区 (64k 地址范围),对应 MOVC @DPTR

C 语言程序占用的内存

栈区(stack)

由编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构中的栈。

堆区(heap)

一般由程序员分配释放,若程序员不释放,程序结束时可能由操作系统回收。

全局区(静态区)

全局变量和静态变量的存储位置是在一起的。初始化的全局变量和静态变量在同一块区 域,而未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束后由系统自动释放。

文字常量区

这一区域用于存放常量字符串,程序结束后由系统释放。

程序代码区

这一区域用于存放函数体的二进制代码(ROM/FLASH)。

例子

int a = 0; //全局初始化区
char *p1; //全局未初始化区
main()
{
	int b; //栈
	char s[ ] = "abc"; //栈
	char *p2; //栈
	char *p3 = "123456"; //123456\0 在常量区,p3 在栈上。
	static int c =0//全局(静态)初始化区
	//分配得来得 10 和 20 字节的区域就在堆区。
	p1 = (char *)malloc(10);
	p2 = (char *)malloc(20);
} 
strcpy(p1, "123456"); //123456\0 放在常量区,编译器可能会将它与 p3 所指向"123456"优化成一个地方。

变量的存储类型和存储方式

存储类型

auto 自动变量

static 静态变量

register 寄存器变量

extern 外部变量(全局变量)

存储方式

静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。

静态存储

变量通常是在变量定义时就分配一定的存储空间并一直保持不变,直至整个程序结束。

动态存储

变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放。

全局变量

作用域为整个源程序,即所有源文件;

静态变量
静态全局变量

作用域为定义该变量的源文件;
把全局变量改变为静态全局变量后改变了它的作用域,而生存期不变;
局部变量:生存期为定义它的函数或复合语句;

静态局部变量:生存期为整个源程序;

把局部变量改变为静态局部变量后改变了它的生存期,而作用域不变

8051 CPU四个不同存储空间

CODE

一个只读的存储空间,用于程序存储。这一存储空间地址是 64KB。

DATA

一个读/写的数据存储空间,可以直接或间接被一个单周期 CPU 指令访问。这一存储空间地址是 256字节。DATA 存储空间较低的 128 字节可以直接或间接寻址,较高的 128 字节只能间接寻址。

XDATA

一个读/写的数据存储空间,通常需要 4-5 个 CPU 指令周期来访问。这一存储空间地址是 64KB。而且访问 XDATA 存储器慢于访问 DATA,因为 CODE 和 XDATA 存储空间共享 CPU 内核上的一个通用总线,因此来自 CODE 的指令预取可以不必和 XDATA 访问并行执行。

SFR

一个读/写的寄存器存储空间,可以直接被一个 CPU 指令访问。这一存储空间含有 128 字节。对于地址是被 8 整除的 SFR 寄存器,每一位还可以单独寻址。

查 IAR 编译信息和程序大小

设置

IAR 的菜单栏 -->Tools -->IDE Options -->Messages -->Show build messages 选择 ALL
设置完后 IAR 点 MAKE,没有 error 的话最后会在 Message 框显示代码的大小(菜单栏–>View–>Maessge–>Build)

编译信息

1、 下面什么意思
4 960 bytes of CODE memory
4 150 bytes of DATA memory
44 bytes of CONST memory
4 960 个字节的代码(占 FLASH)
4150 个字节的变量数据(占 RAM)
44 个字节的常量数据(占 FLASH)
生成 bin 文件的大小= 4960+44
1、
9 486 bytes of CODE memory
404 bytes of DATA memory (+ 36 absolute )
520 bytes of CONST memory
1、的括号内表示内存的绝对使用量,对应你设的全局变量大小
2、表示共享的存储空间,和单片机的结构有关
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值