Douby_Sama 发表于 2023-11-1 13:28:28

萌新提问,有没有大佬来帮助一下,关于mutex之类的

萌新提问。
M0内核,想用一下keil自带的RTOS,就用了CMSIS RTOS2的RTX5。
问题是,我多线程,测试用的print,他会报RTX Mutex的错误,id=0x00000000,status=osErrorParameter。
看了一些文档吧,是printf应该加锁?但是我比如按照M0权威指南那样的(那边可能是RTOS1的写法),wait(acquire)→do→release,之后还是如上错误。RTX ROTS界面可以看到有生成mutex,id不是0000。然后以上两种情况,串口调试的print输出内容时间均正确,阿这。
顺便问问,M0用这个,Event Recorder时钟源,没有DWT,我选了CMSIS RTOS2 System Timer,可以用,但是tick count到了5万左右,就进入osKernel inactive了。是需要自己写一个计时器,去写那个三个函数?然后就能解决这个问题吗

eric2013 发表于 2023-11-1 14:42:02

1、RTX5使用的C库已经全部做好互斥处理了,不需要用户自己再额外加了。
2、M0使用EVR,我没有测试过。

Douby_Sama 发表于 2023-11-1 15:19:39

eric2013 发表于 2023-11-1 14:42
1、RTX5使用的C库已经全部做好互斥处理了,不需要用户自己再额外加了。
2、M0使用EVR,我没有测试过。

大佬,那是我的printf的原因吗?就以前那样的用micro lib的重定向printf,记的是micro lib有冲突,就又写了__asm (".global __use_no_semihosting\n\t"),那一段,不用微库。

串口输出正常。看analyzer的波,应该也没啥问题吧,mutex error的地方无关紧要(线程切换之前一段),所以不要管这个报的错误吗

eric2013 发表于 2023-11-1 21:00:56

Douby_Sama 发表于 2023-11-1 15:19
大佬,那是我的printf的原因吗?就以前那样的用micro lib的重定向printf,记的是micro lib有冲突,就又写 ...
你使用这个做串口重定向输出看看正常不。

使用MDK RTE可以方便的随意切换微库和C标准库
https://www.armbbs.cn/forum.php?mod=viewthread&tid=100641

Douby_Sama 发表于 2023-11-2 09:54:20

eric2013 发表于 2023-11-1 21:00
你使用这个做串口重定向输出看看正常不。

使用MDK RTE可以方便的随意切换微库和C标准库


谢谢大佬,我试试
页: [1]
查看完整版本: 萌新提问,有没有大佬来帮助一下,关于mutex之类的