jcx0324 发表于 2019-9-19 15:13:26

stack overflow

今天试了下移植RTOS2版本的FREERTOS, 就开了一个启动任务,在里面只跑了对2盏灯的控制, 下载后从灯的闪烁来看是正常的, 但是调用KEIL的组件发现 stack overflow 报错,显示红色, 修改任务或者启动文件堆栈或者头文件配置都无法消除,你们有碰到过吗?(FREERTOS10.2, KEIL5.26)

eric2013 发表于 2019-9-19 15:17:18

试试我这个,我这个没问题

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

jcx0324 发表于 2019-9-19 15:25:44

单步跑都没发现出错,全速运行就有问题

jcx0324 发表于 2019-9-19 15:30:27

eric2013 发表于 2019-9-19 15:17
试试我这个,我这个没问题

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

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

eric2013 发表于 2019-9-19 15:37:43

jcx0324 发表于 2019-9-19 15:30
有V5版本的吗?我看了下系统配置,也就一个configTOTAL_HEAP_SIZE配置不一样,改大也没用

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

jcx0324 发表于 2019-9-19 15:53:19

我把工程上传了,可以直接在V5上使用,麻烦看下是不是正常的,第一次自己移植rtos2没经验

eric2013 发表于 2019-9-19 17:20:26

jcx0324 发表于 2019-9-19 15:53
我把工程上传了,可以直接在V5上使用,麻烦看下是不是正常的,第一次自己移植rtos2没经验

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

jcx0324 发表于 2019-9-23 09:01:30

本帖最后由 jcx0324 于 2019-9-23 09:21 编辑

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

eric2013 发表于 2019-9-23 09:35:23

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

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

jcx0324 发表于 2019-9-23 10:23:53

把系统直接切换到RTX,发现IDLE的堆栈使用是 unknown, 但是没有报错

jcx0324 发表于 2019-9-23 10:28:11

或者硬汉你们其他例程中能不能看下IDLE是不是正常显示stcak信息的? 我手头只有V5的,暂时没有例程, 今天换了5.27版本的mdk 结果还是一样

eric2013 发表于 2019-9-23 18:41:29

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

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

手动暂停调试后再看就没问题
页: [1]
查看完整版本: stack overflow