惟若晨星 发表于 2022-10-11 09:21:28

ThreadX 一直卡在调度器里循环 __tx_ts_wait

使用的是threadx-6.1.6_rel、stm32f103rct6,ThreadX的启动汇编文件用硬汉的.c文件进行代替了,任务中没有调用tx_thread_sleep(1)就没有问题,可以一直运行。但是只要调用了tx_thread_sleep(1)就会卡死在图片中的汇编代码里面,硬汉可有帮看看怎么回事吗?:hug:


eric2013 发表于 2022-10-11 15:59:07

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

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

惟若晨星 发表于 2022-10-11 16:22:11

本帖最后由 惟若晨星 于 2022-10-11 16:27 编辑

eric2013 发表于 2022-10-11 15:59
把那个汇编的启动初始化文件改成我这个来做试试。

说干就干,修改ThreadX内核移植的tx_initialize_low_l ...
我拿GD32f4的改成.c文件试了,也是会卡在等待任务的汇编里面

惟若晨星 发表于 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最后会跑到等待任务的汇编代码段里面。

eric2013 发表于 2022-10-12 00:41:38

惟若晨星 发表于 2022-10-11 16:25
汇编和C文件,使用那个汇编的调用tx_thread_sleep就没事,C文件的调用tx_thread_sleep最后会跑到等待任务 ...

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

惟若晨星 发表于 2022-10-12 08:17:24

本帖最后由 惟若晨星 于 2022-10-12 09:22 编辑

eric2013 发表于 2022-10-12 00:41
是不是二楼帖子里面的23和24楼问题。
这个算是吗?

庄永 发表于 2022-10-12 21:43:38

我有遇到过,当时加大任务堆栈解决

惟若晨星 发表于 2022-10-13 08:24:17

庄永 发表于 2022-10-12 21:43
我有遇到过,当时加大任务堆栈解决

后面没试了,我还是用汇编文件了。:handshake

ssdlw 发表于 2022-10-28 09:41:19

可能是优先级的问题,systick要高于家居pendsv

1997AURORA 发表于 2024-4-7 22:15:19

这个就是idle,threadx不用添加idle task就是因为有这个汇编,当所有其他线程都不ready的时候,就会在这个汇编等待其他线程变为ready,这里面有个开中断的操作,就是为了让中断(比如tick)来激活线程

eric2013 发表于 2024-4-8 08:19:01

1997AURORA 发表于 2024-4-7 22:15
这个就是idle,threadx不用添加idle task就是因为有这个汇编,当所有其他线程都不ready的时候,就会在这个 ...

楼主这个问题还有点区别,他这个是卡在这个地方,其他任务不执行了。
页: [1]
查看完整版本: ThreadX 一直卡在调度器里循环 __tx_ts_wait