搜索
bottom↓
回复: 8

懂 freescale单片机的请进:freescale 的8位 单片机,显示RAM不够

[复制链接]

出0入0汤圆

发表于 2011-1-22 19:32:03 | 显示全部楼层 |阅读模式

(原文件名:error.jpg)



我定义的RAM的 变量 大概90个,该单片机有256byte的RAM,应该怎么修改呢?

prm文件如下
SEGMENTS /* Here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. */
    ROM                      =  READ_ONLY    0xDC00 TO 0xFBFF;
    Z_RAM                    =  READ_WRITE   0x0060 TO 0x00FF;
    RAM                      =  READ_WRITE   0x0100 TO 0x015F;
END

PLACEMENT /* Here all predefined and user segments are placed into the SEGMENTS defined above. */
    DEFAULT_RAM                         INTO  RAM;
    DEFAULT_ROM, ROM_VAR, STRINGS       INTO  ROM; /*  In case you want to use  as well, be sure the option -OnB=b is passed to the compiler. */
    _DATA_ZEROPAGE, MY_ZEROPAGE         INTO  Z_RAM;
END

变量定义到RAM区,  只有0x5f个,95个。我能不能吧Z_RAM的区域 缩小下啊?高手指点下、谢谢

出0入0汤圆

发表于 2011-1-22 20:55:26 | 显示全部楼层
你的堆栈开的太小了

出0入0汤圆

 楼主| 发表于 2011-1-23 16:53:41 | 显示全部楼层
回复【1楼】lovely-teddy
你的堆栈开的太小了
-----------------------------------------------------------------------

那应该如何修改啊?  这是默认生成的

出0入0汤圆

发表于 2011-1-23 17:37:54 | 显示全部楼层
STACKSIZE 后面的数

出0入0汤圆

 楼主| 发表于 2011-1-23 18:13:29 | 显示全部楼层
回复【3楼】helloshi
stacksize 后面的数
-----------------------------------------------------------------------

我把它改成

STACKSIZE 0x90

还是报错误。

是不是 还需要修改。

Z_RAM                    =  READ_WRITE   0x0060 TO 0x00FF;
    RAM                      =  READ_WRITE   0x0100 TO 0x015F;

之类的东西?
谢谢

出0入0汤圆

发表于 2011-1-23 21:28:16 | 显示全部楼层
STACKSIZE 改小

出0入0汤圆

发表于 2011-1-23 22:21:43 | 显示全部楼层
我说两点。
1.  不要改Z_RAM,RAM的地址及大小。它们都与MCU的存储空间分配有关。 Z_RAM是直接页面存储的,用8位直接寻址就可以访问。而RAM需要16位扩展寻址模式。放在Z_RAM段中的变量,访问速度要快。
2.  你可以把一些要经常访问的变量变到Z_RAM段中。方法如下:
#pragma DATA_SEG __SHORT_SEG  MY_ZEROPAGE
volatile word var1;  //经常要访问的变量
int var2;
...
#pragma DATA_SEG DEFAULT

以上定义的变量就放到了Z_RAM段中了。

出0入0汤圆

发表于 2011-1-23 22:27:04 | 显示全部楼层
回复【5楼】helloshi

stacksize 改小

-----------------------------------------------------------------------
改小也没有用,除非移动stack的起码位置的指针。

出0入0汤圆

 楼主| 发表于 2011-1-24 10:01:57 | 显示全部楼层
回复【6楼】FuckTheParty
我说两点。
1.  不要改z_ram,ram的地址及大小。它们都与mcu的存储空间分配有关。 z_ram是直接页面存储的,用8位直接寻址就可以访问。而ram需要16位扩展寻址模式。放在z_ram段中的变量,访问速度要快。
2.  你可以把一些要经常访问的变量变到z_ram段中。方法如下:
#pragma data_seg __short_seg  my_zeropage
volatile word var1;  //经常要访问的变量
int var2;
...
#pragma data_seg default
以上定义的变量就放到了z_ram段中了。
-----------------------------------------------------------------------

谢谢,照你的方法做,编译 连接 OK了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 17:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表