硬汉嵌入式论坛

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

[ThreadX全家桶] threadX,队列的tx_queue_id的值有概率被改变的问题。

[复制链接]

7

主题

4

回帖

25

积分

新手上路

积分
25
发表于 2023-4-14 15:04:35 | 显示全部楼层 |阅读模式
STM32U575芯片。
一个队列,在uart中断中接收uart数据,然后一个任务用于处理uart数据。期间还使用了usbx不断接收windows发来的usb信息。怀疑是usb发信息的时候发生了什么错误。当usb快速发送消息时,有大概50%的概率队列的tx_queue_id的值有被改变为0x180(正常应该是0x51554555,刚刚开机时都是正常的值)。
下面是详细情况:
队列是
TX_QUEUE Mcu_Uart_QueueHandle;
uint32_t Mcu_Uart_QueueBuf[10*64];
队列创建
        tx_queue_create(&Mcu_Uart_QueueHandle,
                                        "Mcu_Uart_QueueHandle",
                                        TX_16_ULONG,
                                        (VOID *)Mcu_Uart_QueueBuf,
                                        sizeof(Mcu_Uart_QueueBuf));
在串口中断HAL_UART_RxCpltCallback里如果接收到uart消息,就将消息加入队列status = tx_queue_send(&Mcu_Uart_QueueHandle,&message,TX_NO_WAIT);       

第1个任务,串口队列处理任务McuUartCmdHldTask里会处理uart消息,任务优先级为3,TX_NO_TIME_SLICE。
                status = tx_queue_receive(&Mcu_Uart_QueueHandle, &message, TX_WAIT_FOREVER);
这个队列平常只会每3秒接收到一个心跳包,除此之外没有其他的信息接收。

第2个任务,usbX的usb消息接收任务,任务优先级为1,TX_NO_TIME_SLICE。接收到usb命令之后,放入usb接收队列中,第3个任务负责处理usb队列中的数据,处理任务的任务优先级为2,TX_NO_TIME_SLICE。大概接收了3000多个usb命令的时候,就会出错,队列的tx_queue_id的值有被改变为0x180,此时其他队列和任务都正常运行。仅这处不正常。
回复

使用道具 举报

7

主题

4

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2023-4-14 15:06:32 | 显示全部楼层
刚刚开机时,id是正确的,但出问题后,将Mcu_Uart_QueueHandle里的内容打印出来,发现是
[k-Mcu_Uart_QueueHandle = 0x20025618]
[k-tx_queue_id = 0x180]
[k-tx_queue_name = Mcu_Uart_QueueHandle]
[k-tx_queue_message_size = 16]
[k-tx_queue_capacity = 40]
[k-tx_queue_enqueued = 0]
[k-tx_queue_available_storage = 40]
[k-tx_queue_start = 537053064]
[k-tx_queue_end = 537055624]
可见其他内容都正常,仅id不正常,不知道为什么被修改了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107578
QQ
发表于 2023-4-14 16:07:39 | 显示全部楼层
这个应该是栈溢出,内存溢出之类的问题。IDE调试有一个变量修改后触发检测的机制,锁定下位置试试
回复

使用道具 举报

7

主题

4

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2023-4-21 18:11:32 | 显示全部楼层
发现是因为另一个队列创建的时候,tx_queue_create,倒数第1个参数和倒数第2个参数不匹配的问题,字节数对不上,倒数第1个参数设置得太大了。倒数第二个参数数组大小是10个ULONG,倒数第1个设置为100个ULONG,所以导致这个问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-6 11:33 , Processed in 0.267155 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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