打印

IAR堆栈溢出的问题

[复制链接]
8902|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
colaring|  楼主 | 2008-7-2 22:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
就两个调了3行的for函数都堆栈溢出。。。。具体的说是从开始走第一步就有警报了,我又没改配置怎么说堆栈指针跑了呢? 这怎么办
下面是报告。。香水帮看看 麻烦了,我的linkarm_flash,xcl没改啊

Wed Jul 02 22:14:01 2008: Target reset
Wed Jul 02 22:14:25 2008: Program exit reached.
Wed Jul 02 22:14:26 2008: 1336 bytes downloaded into FLASH (0.05 Kbytes/sec)
Wed Jul 02 22:14:26 2008: Loaded debugee: C:\Documents and Settings\new\桌面\M30\project\EWARM\Debug\Exe\M30.d79
Wed Jul 02 22:14:26 2008: Target reset
Wed Jul 02 22:14:29 2008: The stack 'CSTACK' is filled to 100% (1024 bytes used out of 1024). The warning threshold is set to 90.%
Wed Jul 02 22:14:29 2008: The stack pointer for stack 'CSTACK' (currently 0x20000484) is outside the stack range (0x20000008 to 0x20000408)
Wed Jul 02 22:14:48 2008: The stack 'CSTACK' is filled to 100% (1024 bytes used out of 1024). The warning threshold is set to 90.%
Wed Jul 02 22:14:48 2008: The stack pointer for stack 'CSTACK' (currently 0x20000484) is outside the stack range (0x20000008 to 0x20000408)

沙发
simon21ic| | 2008-7-2 22:30 | 只看该作者

LZ:发给我调调看?

以前看到有人提过,感到好奇

使用特权

评论回复
板凳
colaring|  楼主 | 2008-7-3 07:52 | 只看该作者

不是软件的问题

我发现问题了,不是软件的问题,是我CPU烧不进去程序了,不知道为什么,无论怎么烧只要拔掉电源一上电又回复原来的程序,DX知道为啥么?我四块板子+开发板都这样了,去别人那里烧也是烧不进去,我不可能一下子把板子全烧了啊

使用特权

评论回复
地板
香水城| | 2008-7-3 07:59 | 只看该作者

看看map文件,是否所有代码被分配到Flash中

使用特权

评论回复
5
colaring|  楼主 | 2008-7-3 08:33 | 只看该作者

回香水

现在感觉不单单是软件问题,因为我例程1个字没改往开发板里都下不进去了。。。现在就是怀疑STM的FLASH被锁定了,导致我无法下载。。

下面是例程的map
                ****************************************
                *                                      *
                *      SEGMENTS IN ADDRESS ORDER       *
                *                                      *
                ****************************************


SEGMENT              SPACE    START ADDRESS   END ADDRESS     SIZE  TYPE  ALIGN
=======              =====    =============   ===========     ====  ====  =====
INTVEC                             08000000 - 080000EB          EC   rel    2
ICODE                              080000EC - 0800014F          64   rel    2
DIFUNCT                                 08000150                     rel    2
CODE                               08000150 - 08001413        12C4   rel    2
INITTAB                            08001414 - 0800142B          18   rel    2
DATA_ID                                 0800142C                     dse    0
DATA_C                             0800142C - 080014A2          77   rel    2
DATA_I                                  20000000                     dse    0
DATA_Z                             20000000 - 2000005A          5B   rel    2
CSTACK                             2000005C - 2000085B         800   rel    2

                ****************************************
                *                                      *
                *        END OF CROSS REFERENCE        *
                *                                      *
                ****************************************

 5 140 bytes of CODE  memory
 2 139 bytes of DATA  memory
   143 bytes of CONST memory

Errors: none
Warnings: none

使用特权

评论回复
6
静默| | 2008-7-3 10:39 | 只看该作者

先用ISP程序把片擦了再下载程序

有些应用程序下载到STM32时会造成不能重新下载程序。调试程序时可以用RAM调试。若用user FLASH方式调试时最好在main的开头语句写一段10秒左右的例i=i之类的语句(不要访问端口等)。这个时候您就有10秒左右给STM32上电并下载程序的时间了,祝好运。

使用特权

评论回复
7
lomeisi_99| | 2008-7-7 17:13 | 只看该作者

楼上的说法不好理解啊

main开始语句前的10秒左右给STM32上电并下载程序?用IAR调试,只要DEBUG了,程序就已经下到片子里面了,上电时间就更不好理解了,楼上的还能解释解释啊。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

156

帖子

1

粉丝