论坛» 综合技术» 基础知识

WinAVR,SRAM WinAVR中关于变量与SRAM

院士
2006-12-22 22:43 1楼
WinAVR,SRAM WinAVR中关于变量与SRAM
院士
2006-12-22 22:43 2楼
问 例用AT90S8515,定义全局变量以下:
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
u8 BUF[256];
u32 gTest00;
u32 gTest01;
u32 gTest02;
u32 gTest03;
u32 gTest04;
u32 gTest05;
u32 gTest06;
u32 gTest07;
u32 gTest08;
u32 gTest09;
然后这些变量在main中赋值
编译后查看main.lss
发现有这类传送:
...
sts 0x0284 r24;
...
8515的 SRAM地址是0x0060-0x025F,0x0260后是外部 SRAM
那么说明有些全局变量定义在外 SRAM中。
WinAVR好象没什么警告, WinAVR中有如何设置避免这种情况?
要使用如此大的数组,是不是一定要加 SRAM,有其他办法?
我现在的办法是手动把全局变量放到指定的 SRAM中,但担心影响普通变量。 1: 不会出现你所说的现象。估计你的变量总数超过了512字节。 2: 当然函数中还有其他很多临时变量,当然函数中还有其他很多临时变量, 3: RAM不够用当然要扩512字节可不全是给变量用的,堆栈还要占一部分呢 4: 临时变量和全局变量超过了512BYTE了。
高工
2022-10-16 16:38 3楼

学习一下

高工
2022-10-16 19:36 4楼
感谢分享
工程师
2022-10-19 23:58 5楼

讲解的蛮不错的

专家
2022-10-20 00:59 6楼

感谢分享

高工
2022-10-20 08:32 7楼

谢谢分享

助工
2022-10-20 08:59 8楼

感谢分享

工程师
2022-10-20 23:54 9楼

讲解的不错的

共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]