Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SMP
SYSTICK_心跳时钟节拍
rtthread 跑双核smp时tick怎么处理
发布于 2021-12-02 17:28:59 浏览:1670
订阅该版
rtthread 跑双核 smp 需要两个timer提供tick吗 ![image.png](https://oss-club.rt-thread.org/uploads/20211202/69b22bdfa50a1c7119f6994e05725f15.png) ![image.png](https://oss-club.rt-thread.org/uploads/20211202/a0ca90fec508cb749cb2afb4cae25373.png) 参照`rt-thread-4.0.3\bsp\qemu-vexpress-a9`
查看更多
2
个回答
默认排序
按发布时间排序
whj467467222
认证专家
2021-12-02
开源,分享,交流,共同进步
尝试解释一下这个原因: 1. 在双核的情况下,每个 Core 都需要维护一个自己的 systick ,在 systick 的中断来了之后都会调用下面这个函数。 ``` void rt_tick_increase(void) { struct rt_thread *thread; /* increase the global tick */ #ifdef RT_USING_SMP rt_cpu_self()->tick ++; #else ++ rt_tick; #endif ``` 可以看到这个 `rt_cpu_self()->tick ++;` 这个函数展开之后就是对当前 Core 的 tick 做加 1 的操作。也就是说每个 Core 都维护了自己的一套系统时钟 2. 获取当前系统的 Tick 值 ``` rt_tick_t rt_tick_get(void) { /* return the global tick */ return rt_tick; } RTM_EXPORT(rt_tick_get); ``` 展开这个可以发现 `#define rt_tick rt_cpu_index(0)->tick` 这里是获取的 Core 0 的 Tick. 我猜想楼主的疑问来自此处,可以从这几个方面来解释这个问题: **情形一**: Core 0 上的释放了一个信号量,Core 1 去接收这个信号量,IPC 中实现超时的机制是先获取当前系统的时间,然后通过这个时间基准去加上等待的时间,来作为判断的依据,所以这里必须有一个统一的时间,Core0 一般默认是主核,他最新启动,所以以他的时间作为Tick 做为系统的时间基准。这就有点像我国幅员辽阔,北京和新疆在早上8点的是太阳肯定不一样,但是统一把背景时间作为基准时间是一样的。 **情形二**:在每一个线程中最常见的方式 `rt_thread_delay(100);` 这种方式的延时,这种方式的延时是通过软件定时器来实现的,而软件定时器的计数又是依赖 systick,每个 Core 自己 systick, 如果不是每个核有一个 systick, 那么 Core0 的中断关了,是不是核的线程也将无法进行延时切换任务。 希望我的回答能解答楼主的问题,如果满意请点一下采纳。
aozima
2021-12-02
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
参考 [rt_tick_increase()在SMP时只增加当前核的TICK?](https://club.rt-thread.org/ask/question/10764.html)
撰写答案
登录
注册新账号
关注者
0
被浏览
1.7k
关于作者
syc776
这家伙很懒,什么也没写!
提问
26
回答
21
被采纳
0
关注TA
发私信
相关问题
1
aarch64有计划支持SMP吗
2
SMP重新定义中断处理函数的问题
3
rt_tick_increase()在SMP时只增加当前核的TICK?
4
RISCV smp系统调度异常问题请教
5
qemu-vexpress-a9 在SMP情况下GDB无法调试
6
为什么在k210上使用多核smp总是会卡死
7
RT-Thread SMP核弹碰撞树莓派
8
请教多核SMP功能验证
9
明年开始玩SMP多核处理器
10
建议RT-Thread支持SMP
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
rt-thread 小内存算法源码分析
2
env中添加lvgl软件包后,keil编译包--c99错误
3
【NXP-MCXA153】 定时器驱动移植
4
GD32F450 看门狗驱动适配
5
【NXP-MCXA153】看门狗驱动移植
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
11
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部