硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1771|回复: 11
收起左侧

[CMSIS-RTOS] stack overflow

[复制链接]

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
发表于 2019-9-19 15:13:26 | 显示全部楼层 |阅读模式
今天试了下移植RTOS2版本的FREERTOS, 就开了一个启动任务,在里面只跑了对2盏灯的控制, 下载后从灯的闪烁来看是正常的, 但是调用KEIL的组件发现 stack overflow 报错,显示红色, 修改任务或者启动文件堆栈或者头文件配置都无法消除,你们有碰到过吗?(FREERTOS10.2, KEIL5.26)
ee.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2019-9-19 15:17:18 | 显示全部楼层
试试我这个,我这个没问题

基于V6开发板的FreeRTOS带CMSIS-RTOS V2封装层的模板例程下载,AC6和AC5两个版本
http://www.armbbs.cn/forum.php?m ... 3713&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
 楼主| 发表于 2019-9-19 15:25:44 | 显示全部楼层
单步跑都没发现出错,全速运行就有问题
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
 楼主| 发表于 2019-9-19 15:30:27 | 显示全部楼层
eric2013 发表于 2019-9-19 15:17
试试我这个,我这个没问题

基于V6开发板的FreeRTOS带CMSIS-RTOS V2封装层的模板例程下载,AC6和AC5两个 ...

有V5版本的吗?我看了下系统配置,也就一个configTOTAL_HEAP_SIZE配置不一样,改大也没用
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2019-9-19 15:37:43 | 显示全部楼层
jcx0324 发表于 2019-9-19 15:30
有V5版本的吗?我看了下系统配置,也就一个configTOTAL_HEAP_SIZE配置不一样,改大也没用

换个MDK版本,使用最新的5.28A
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
 楼主| 发表于 2019-9-19 15:53:19 | 显示全部楼层
我把工程上传了,可以直接在V5上使用,麻烦看下是不是正常的,第一次自己移植rtos2没经验

hal_f4.7z

2.73 MB, 下载次数: 2

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2019-9-19 17:20:26 | 显示全部楼层
jcx0324 发表于 2019-9-19 15:53
我把工程上传了,可以直接在V5上使用,麻烦看下是不是正常的,第一次自己移植rtos2没经验

例子有问题,你的HAL时间基准重定向没有实现,得整上。
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
 楼主| 发表于 2019-9-23 09:01:30 | 显示全部楼层
本帖最后由 jcx0324 于 2019-9-23 09:21 编辑

这个该怎么理解? 操作系统时钟不是全部由systick提供吗? 而且任务也已经能正常调度, 参考您的例程将HAL延时加进去后,问题依旧出现, 看现象应该是IDLE任务出现问题, 但是只要停下来单步运行就不会出现错误,stack available 显示 500 bytes, 不会显示overflow, 全速运行就会出现了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2019-9-23 09:35:23 | 显示全部楼层
jcx0324 发表于 2019-9-23 09:01
这个该怎么理解? 操作系统时钟不是全部由systick提供吗? 而且任务也已经能正常调度, 参考您的例程将HAL延时 ...

想起一个简单办法了,我以前做的一批FreeRTOS例子里面不是有个串口打印FreeRTOS的任务栈使用情况的API吗,你试试。这样就清楚了。
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
 楼主| 发表于 2019-9-23 10:23:53 | 显示全部楼层
把系统直接切换到RTX,  发现IDLE的堆栈使用是 unknown, 但是没有报错
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
 楼主| 发表于 2019-9-23 10:28:11 | 显示全部楼层
或者硬汉你们其他例程中能不能看下IDLE是不是正常显示stcak信息的? 我手头只有V5的,暂时没有例程, 今天换了5.27版本的mdk 结果还是一样
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2019-9-23 18:41:29 | 显示全部楼层
jcx0324 发表于 2019-9-23 10:28
或者硬汉你们其他例程中能不能看下IDLE是不是正常显示stcak信息的? 我手头只有V5的,暂时没有例程, 今天换了 ...

全速运行时,有时候的确是unknown。

手动暂停调试后再看就没问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 19:07 , Processed in 0.285845 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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