OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10084|回复: 9

freeRTOS下载到板子上报Error:..\..\FreeRTOS\queue.c,927 Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,785错误

[复制链接]

48

主题

135

帖子

0

精华

高级会员

Rank: 4

积分
561
金钱
561
注册时间
2017-8-29
在线时间
89 小时
发表于 2018-6-8 08:48:09 | 显示全部楼层 |阅读模式
现在以freeRTOS实时系统编写程序,设备上电,使用Jlink下载(接设备Vcc、GND、SWCLK、SWDIO)下载后程序自动重启运行此时操作正常。然后古怪的事情出现了:手动断电,然后上电。emWIN界面刷不出来,串口打印 "Error:..\..\FreeRTOS\queue.c,927  、 Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,785" 错误。


中断处理函数中没有使用freeRTOS系统函数,通知信息都是以全局变量来代替的,还是出现上诉问题。队列消息发送也检查了,没有明显错误。(对自己不自信了)


有没有遇到类似问题的,劳烦指导一下!!!!

打印的信息

打印的信息
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

48

主题

135

帖子

0

精华

高级会员

Rank: 4

积分
561
金钱
561
注册时间
2017-8-29
在线时间
89 小时
 楼主| 发表于 2018-6-8 10:24:54 | 显示全部楼层
今天上午将源程序拿过来,一点一点将增添的程序一段一段注释查找问题。问题是解决了,但是原因不是很清楚还需要消化。其中原因如下:我使用的max31856驱动程序中,一个读取温度代码中使用了 return (float)(rData/4096.0f).然后将其改成return (float)(rData/4096)之后就没有出现上述现象。是否是因为4096.0已经超出float正的最大值?????
回复 支持 反对

使用道具 举报

48

主题

135

帖子

0

精华

高级会员

Rank: 4

积分
561
金钱
561
注册时间
2017-8-29
在线时间
89 小时
 楼主| 发表于 2018-6-8 08:49:21 | 显示全部楼层
补充一下,设备控制板是自己仿原子探索者修改的,控制芯片换STM32F4ZET6
回复 支持 反对

使用道具 举报

48

主题

135

帖子

0

精华

高级会员

Rank: 4

积分
561
金钱
561
注册时间
2017-8-29
在线时间
89 小时
 楼主| 发表于 2018-6-8 11:07:49 | 显示全部楼层
hu25886 发表于 2018-6-8 10:24
今天上午将源程序拿过来,一点一点将增添的程序一段一段注释查找问题。问题是解决了,但是原因不是很清楚还 ...

给自己和可能出现同样错误的伙伴一个提醒。 刚才看了一下,float类型数据,有效位是13位,包含整数7位(最大值127),小数位6位
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2017-12-25
在线时间
62 小时
发表于 2019-12-11 09:50:08 | 显示全部楼层
可能是因为有浮点数操作,对堆栈的需求多一点,把堆栈设的大一点试试?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-5-20
在线时间
1 小时
发表于 2020-6-10 23:47:36 | 显示全部楼层
在做freeRTOS队列操作实验时,参考了原子官方的程序,在任务一中创建Message_Queue,在定时器9中断中读取Message_Queue队列中的信息,定时器9中断时间设为500ms,程序会先进入中断,而此时读取的队列还未创建,导致问题出现,希望能够帮助到大家
回复 支持 反对

使用道具 举报

8

主题

168

帖子

0

精华

高级会员

Rank: 4

积分
557
金钱
557
注册时间
2015-7-4
在线时间
104 小时
发表于 2020-6-17 08:26:31 | 显示全部楼层
hu25886 发表于 2018-6-8 10:24
今天上午将源程序拿过来,一点一点将增添的程序一段一段注释查找问题。问题是解决了,但是原因不是很清楚还 ...

验证一下是不是F407的硬件FPU没有移植成功
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-6-27
在线时间
6 小时
发表于 2020-7-13 18:29:18 | 显示全部楼层
C:\Users\Administrator\Desktop
不知道为什么,难受
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-6-27
在线时间
6 小时
发表于 2020-7-13 18:30:33 | 显示全部楼层
这是为什么啊
MQQCLM{(}CIF`1}2W54@)IL.png
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-10-25
在线时间
6 小时
发表于 2020-8-2 10:46:23 | 显示全部楼层
在原子哥407开发板的例程的基础上,改造移植到427上。创建队列,接收串口数据,另创建一个task处理串口数据队列中的数据;下载运行后,程序功能实现正常,不过串口老是打印Error:..\OS\portable\RVDS\ARM_CM4F\port.c,784,网上排查发现大多数人也遇到,因此把解决过程记录下来。
(1),排查中断向量组设置,是否在初始化串口的时候,设置成NVIC_PriorityGroup_2了,FreeRTOS要用NVIC_PriorityGroup_4;(注释到原子哥串口初始化代码中中断向量配置部分代码)。
(2),修改为NVIC_PriorityGroup_4后,再运行发现又报Error:..\OS\portable\RVDS\ARM_CM4F\port.c,768,此时是由于优先级出问题了。由于在FReeRTOSConfig.h中#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY        5  
这里说明了:说当这个宏定义配置为 5 的时候,中断优先级数值在 0、 1、 2、 3、4 的这些中断是不受 FreeRTOS 管理的,不可被屏蔽,也不能调用 FreeRTOS 中的 API 函数接口,而中断优先级在 5 到 15 的这些中断是受到系统管理,可以被屏蔽的。因此需要将串口的优先级调到大于5,小于15,具体可参见下面链接中网友的解释。
https://blog.csdn.net/qq_3835182 ... earnPai2-3.nonecase
再次编译运行,发现OK!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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