硬汉嵌入式论坛

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

[ThreadX全家桶] ThreadX 一直卡在调度器里循环 __tx_ts_wait

[复制链接]

3

主题

21

回帖

30

积分

新手上路

积分
30
发表于 2022-10-11 09:21:28 | 显示全部楼层 |阅读模式
使用的是threadx-6.1.6_rel、stm32f103rct6,ThreadX的启动汇编文件用硬汉的.c文件进行代替了,任务中没有调用tx_thread_sleep(1)就没有问题,可以一直运行。但是只要调用了tx_thread_sleep(1)就会卡死在图片中的汇编代码里面,硬汉可有帮看看怎么回事吗?
image.png

image.png

tx_init_low_level.c

3.04 KB, 下载次数: 3

LED_mode .exe

725.64 KB, 下载次数: 3

代码

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106709
QQ
发表于 2022-10-11 15:59:07 | 显示全部楼层

回帖奖励 +1 个金币

把那个汇编的启动初始化文件改成我这个来做试试。

说干就干,修改ThreadX内核移植的tx_initialize_low_level.s汇编文件为C文件
https://www.armbbs.cn/forum.php? ... 0053&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

3

主题

21

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2022-10-11 16:22:11 | 显示全部楼层
本帖最后由 惟若晨星 于 2022-10-11 16:27 编辑
eric2013 发表于 2022-10-11 15:59
把那个汇编的启动初始化文件改成我这个来做试试。

说干就干,修改ThreadX内核移植的tx_initialize_low_l ...

我拿GD32f4的改成.c文件试了,也是会卡在等待任务的汇编里面
网页捕获_11-10-2022_16273_.jpeg
回复

使用道具 举报

3

主题

21

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2022-10-11 16:25:13 | 显示全部楼层
本帖最后由 惟若晨星 于 2022-10-11 16:28 编辑
eric2013 发表于 2022-10-11 15:59
把那个汇编的启动初始化文件改成我这个来做试试。

说干就干,修改ThreadX内核移植的tx_initialize_low_l ...

汇编和C文件,使用那个汇编的调用tx_thread_sleep就没事,C文件的调用tx_thread_sleep最后会跑到等待任务的汇编代码段里面。
image.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106709
QQ
发表于 2022-10-12 00:41:38 | 显示全部楼层
惟若晨星 发表于 2022-10-11 16:25
汇编和C文件,使用那个汇编的调用tx_thread_sleep就没事,C文件的调用tx_thread_sleep最后会跑到等待任务 ...

是不是二楼帖子里面的23和24楼问题。
回复

使用道具 举报

3

主题

21

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2022-10-12 08:17:24 | 显示全部楼层
本帖最后由 惟若晨星 于 2022-10-12 09:22 编辑
eric2013 发表于 2022-10-12 00:41
是不是二楼帖子里面的23和24楼问题。

这个算是吗?
image.png
回复

使用道具 举报

75

主题

684

回帖

909

积分

金牌会员

积分
909
发表于 2022-10-12 21:43:38 | 显示全部楼层
我有遇到过,当时加大任务堆栈解决
回复

使用道具 举报

3

主题

21

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2022-10-13 08:24:17 | 显示全部楼层
庄永 发表于 2022-10-12 21:43
我有遇到过,当时加大任务堆栈解决

后面没试了,我还是用汇编文件了。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2022-10-28 09:41:19 | 显示全部楼层
可能是优先级的问题,systick要高于家居pendsv
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-4-7 22:15:19 | 显示全部楼层
这个就是idle,threadx不用添加idle task就是因为有这个汇编,当所有其他线程都不ready的时候,就会在这个汇编等待其他线程变为ready,这里面有个开中断的操作,就是为了让中断(比如tick)来激活线程
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106709
QQ
发表于 2024-4-8 08:19:01 | 显示全部楼层
1997AURORA 发表于 2024-4-7 22:15
这个就是idle,threadx不用添加idle task就是因为有这个汇编,当所有其他线程都不ready的时候,就会在这个 ...

楼主这个问题还有点区别,他这个是卡在这个地方,其他任务不执行了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 11:50 , Processed in 0.341051 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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