查看: 4784|回复: 6

用MC9RS08LA8,报fixup overflow in main

[复制链接]

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
发表于 2012-1-5 21:14:34 | 显示全部楼层 |阅读模式
大家好,本人正在用MC9RS08LA8,文档说是256字节的RAM,map里面
READ_WRITE (R/W):       79 (dec:      121)
NO_INIT (N/I):          82 (dec:      130)
这个NO_INIT是个什么意思呢?不管我定义多大的数组他都是130。还有就是我定义112字节以后报错说是fixup overflow in main,to test1 type 1,at offset 0x17,一定的数组小点就不会报错,但是我定义的数组压根就离256字节还很遥远的啊,一半都没用到。
看prm文件他分了好几块RAM
TINY_RAM = READ_WRITE 0X0005 TO 0X000D;
RAM = READ_WRITE 0X0050 TO 0X00BF;
RAM1 = READ_WRITE 0X0100 TO 0X017F;
是不是跟这个有关
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-1-6 09:31:41 | 显示全部楼层

    RE:用MC9RS08LA8,报fixup overflow in main

    NO_INIT,这个应该是用来存放寄存器等信息的。溢出是因为你占有了太多的RAM空间,而实际可以使用的RAM空间小于你定义的数组空间,所以会报错误。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    0
    最后登录
    1970-1-1
     楼主| 发表于 2012-1-9 10:14:16 | 显示全部楼层

    回复:用MC9RS08LA8,报fixup overflow in main

    那就奇怪了啊 我明明只开了112字节的数组,开110个字节就不会报错,芯片明明有256字节的RAM的,搞不懂
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    0
    最后登录
    1970-1-1
     楼主| 发表于 2012-1-9 10:18:17 | 显示全部楼层

    回复:用MC9RS08LA8,报fixup overflow in main

    这块芯片RAM分成了两段,0x0050-0x00BF是一段112字节的RAM,据说叫零页内存,因为放在0x00FF地址以下的,所以读写这块内存消耗的CPU clock比较少,还有一块是0x0100-0x017F的128字节的RAM,不知道是不是因为内存分开的缘故所以才报上面那个错
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    23

    帖子

    0

    新手上路

    Rank: 1

    积分
    43
    最后登录
    1970-1-1
    发表于 2012-1-11 20:32:54 | 显示全部楼层

    RE:用MC9RS08LA8,报fixup overflow in main

    RS08使用软件栈。在缺省情况下数组会首先分配在0x0050-0x00FF之间,前面的其他变量开销了之后,后面的空间就不够了。解决方法是指定数组在0x0100-0x017F的空间。汇编的话使用ORG。C的话使用unsigned char tab[130]@0x0100;
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    0
    最后登录
    1970-1-1
     楼主| 发表于 2012-6-29 22:41:45 | 显示全部楼层

    回复:用MC9RS08LA8,报fixup overflow in main

    回复第 5 楼 于2012-01-11 20:32:54发表:
    RS08使用软件栈。在缺省情况下数组会首先分配在0x0050-0x00FF之间,前面的其他变量开销了之后,后面的空间就不够了。解决方法是指定数组在0x0100-0x017F的空间。汇编的话使用ORG。C的话使用unsigned char tab[130]@0x0100;
    谢谢兄弟,这个项目我已经完成,不过RAM是硬省下来的,今天看到回复,试了一下,OK没问题,只要定义后面加@0x0100就可以了
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    23

    帖子

    0

    新手上路

    Rank: 1

    积分
    43
    最后登录
    1970-1-1
    发表于 2012-7-4 13:47:05 | 显示全部楼层

    RE:用MC9RS08LA8,报fixup overflow in main

    OK,没问题,多交流。呵呵,真当兄弟了...
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-19 11:19 , Processed in 0.095450 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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