打印
[STM32F1]

IAR堆栈溢出The stack pointer for stack 'CSTACK' is outside the stack range

[复制链接]
楼主: zwll
手机看帖
扫描二维码
随时随地手机跟帖
21
zwll|  楼主 | 2021-7-7 21:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
RE: IAR编译 The stack pointer for stack 'CSTACK' is outside the stack range

使用特权

评论回复
22
zwll|  楼主 | 2021-7-7 21:39 | 只看该作者
我的问题应该和BOOT0,B00T1的设置没关系,现在我发现问题是这个
The stack pointer for stack 'CSTACK' (currently 0x20000E20) is outside the stack range (0x20001C18 to 0x20002018)

一步一步跟踪调试,发现问题就出在任务切换的时候,在空闲任务void  OS_IdleTask (void *p_arg)   ,在这个函数里死循环

使用特权

评论回复
23
zwll|  楼主 | 2021-7-7 21:41 | 只看该作者
The stack pointer for stack 'CSTACK' (currently 0x20000E20) is outside the stack range (0x20001C18 to 0x20002018)
没人知道这是为什么?

使用特权

评论回复
24
heweibig| | 2021-7-7 21:43 | 只看该作者
应用程序启动时要有一个堆栈,不管是裸机,还是基于uCOS,,那就是CSTACK堆栈uCOS-III运行起来后,每个任务有自己的堆栈

使用特权

评论回复
25
zhenykun| | 2021-7-7 21:45 | 只看该作者
所以,当任务运行的时候,IAR编译器会识别到堆栈指针不在CSTACK之内

使用特权

评论回复
26
heweibig| | 2021-7-7 21:47 | 只看该作者
嗯,所以会报The stack pointer for stack 'CSTACK' (currently 0x20007A1C) is outside the stack range (0x20008B88 to 0x20009B88) 这个不是问题,是正常的

使用特权

评论回复
27
stly| | 2021-7-7 21:49 | 只看该作者
当然,uCOS-III官方移植中,中断堆栈也是独立的,专门用于处理中断

使用特权

评论回复
28
dingy| | 2021-7-7 21:51 | 只看该作者
这个好处就是:每个任务堆栈不必考虑中断嵌套层数,从而不用为中断嵌套增加堆栈大小。

使用特权

评论回复
29
dengdc| | 2021-7-7 21:54 | 只看该作者
所以执行中断程序时,也会报The stack pointer for stack 'CSTACK' (currently 0x20007A1C) is outside the stack range (0x20008B88 to 0x20009B88) CSTACK只是在系统启动时使用,之后就没用了

使用特权

评论回复
30
huwr| | 2021-7-7 21:55 | 只看该作者
所以可以配置的小一点,一面造成太大的浪费

使用特权

评论回复
31
zwll|  楼主 | 2021-7-7 21:56 | 只看该作者
先说下程序现象,用IAR编译的程序,第一次把程序下进STM32里后,不运行,但是复位后就能运行,或者掉电再上电也能运行。为什么把程序第一次下进STM32不运行?

使用特权

评论回复
32
zwll|  楼主 | 2021-7-7 21:57 | 只看该作者
一步一步跟踪调试,发现问题就出在任务切换的时候,在空闲任务void  OS_IdleTask (void *p_arg)   ,移植在这个函数里死循环

使用特权

评论回复
33
wyjie| | 2021-7-7 21:58 | 只看该作者
我刚刚也遇到了同样的问题,现在解决了,楼主试试project/options/runtime checking/debugger/download里面的use flash loader打勾试试

使用特权

评论回复
34
午夜粪车| | 2021-7-7 21:59 | 只看该作者
我现在也遇到了这种问题,下载下来直接运行没事,就是在进行仿真调试的时候会出现栈溢出。楼主解决了吗?麻烦给我说一下吧

使用特权

评论回复
35
xxmmi| | 2021-7-7 22:00 | 只看该作者

使用特权

评论回复
36
xxmmi| | 2021-7-7 22:00 | 只看该作者
遇到同样问题+1;
  
不过我是所有栈都说溢出,恳请高手指导

使用特权

评论回复
37
renyaq| | 2021-7-7 22:01 | 只看该作者
我换了一个烧录器就可以了   估计是接线错误  还没查清楚

使用特权

评论回复
38
ousj| | 2021-7-7 22:02 | 只看该作者
程序下进去就需要复位动作的啊

使用特权

评论回复
39
xxrs| | 2021-7-7 22:02 | 只看该作者
OS有自己的栈管理,那个信息可以无视。

使用特权

评论回复
40
zwll|  楼主 | 2021-7-7 22:04 | 只看该作者

明白了,多谢大家讨论这么多哈

使用特权

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

本版积分规则