找回密码
 注册
关于网站域名变更的通知
查看: 182|回复: 3
打印 上一主题 下一主题

rt-thread是否有类似ucosii的OSRunning标志或措施来保护rt_tick_increase()函数的...

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-9-19 13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
现在遇到一种应用场景:在系统初始化调度之前,需要用到SysTick_Handler;但如果这样肯定会调用rt_tick_increase()函数,必然hardfault+ A, E+ O3 z: O+ f
请问,rt-thread是否有类似ucosii的OSRunning标志或措施,来保护rt_tick_increase()函数的调用呢?" ?- t4 G' ]$ @, C% {
: X9 q% v* Q" U: F
ucos:8 D2 ]* S) y6 |! ]

+ D7 s8 @) l  `* Yvoid SysTick_Handler(void)
3 c1 t4 C9 I3 i3 H) a& |{
0 r8 f1 {5 a' B  s# tOSIntEnter();& |* B9 R& T4 l7 ?
if(OSRunning == OS_TRUE)1 M- \$ r2 _' _2 z9 a2 {2 A* I
{) O/ m+ H9 _1 G/ _& A
OSTimeTick();
9 ^2 h( _3 m: R0 }/ c/ A) {( W0 d}* l$ N8 d7 \9 J8 @8 F. K
OSIntExit();* s6 D/ r$ q- j
}
0 |% U: F+ N9 N' @RT-Thread:
( i, i/ w8 l. N( o- N4 r3 ^4 O/ F4 n! g5 }
void SysTick_Handler(void)! w$ x/ `2 V- ~" b/ R# D5 g
{
* A, W5 o5 D; i+ Vrt_interrupt_enter();  j2 W, I: v2 D' e; b# @
rt_tick_increase();
6 R" F: [. p) h! r0 C) prt_interrupt_leave();3 m3 r  a3 G6 w. h$ f7 ?, I
}
; {/ v9 I3 t3 V6 Q6 k

该用户从未签到

2#
发表于 2022-9-19 14:29 | 只看该作者
OSRunning 不靠谱
+ y  b1 i( c3 x0 n

该用户从未签到

3#
发表于 2022-9-19 15:08 | 只看该作者
这个问题目前看来是暂时无最优解的,等一波官方操作吧。现在我只能尝试将系统初始化调度前用到的SysTick_Handler内容干掉,别无他法。
4 g0 W6 ~% `/ x8 N: k- L

该用户从未签到

4#
发表于 2022-9-19 15:51 | 只看该作者
系统调度启动前的延时有解决方案,为啥要像 ucos 那样引入一个判断,把判断带入到系统运行期?# C/ C! d% q- i8 `0 R' r9 i7 I
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-29 17:22 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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