关于SMP

多核在嵌入式实时系统里应用的越来越多,而VxWorks从6.6开始支持多核,到6.8就算支持的不错了。风河提供了两种多核技术:Symmetric multiprocessing (SMP) 和Asymmetricmultiprocessing (AMP)。今天简单看看SMP的使用

前提是有个多核的Target,以及支持SMP的BSP,例如我的Target是8核的

使用合适的BSP创建VIP的时候,选中’SMP support’就可以了

Bootrom是不需要修改的,因为Bootrom只使用第0个核

在VIP的Component Configuration里有个参数叫 'VX_SMP_NUM_CPUS’,根据实际情况设置它的值,一般都是2的幂。当然,我们可以故意给它个BT的值

系统的头文件里还定义了一个宏VX_MAX_SMP_CPUS。因此,VX_SMP_NUM_CPUS超过VX_MAX_SMP_CPUS之后,就不起作用了

启动Target,查看当前是否多核有个简单方法,就是i命令

OS里配置了几个核,就可以看到几个叫tIdleTaskN的任务,而且任务的优先级是(255+32),有点意思吧

来看几个SMP相关的命令

在Component Configuration里还有一个参数ENABLE_ALL_CPUS,默认值是TRUE

如果把它设置为FALSE,则系统只启动核0。后期可以使用函数kernelCpuEnable()来使能其它核

以后有空再来叨叨Affinity的使用 这正是: 硬件有多核,软件更灵活。 默认从零启,其余可操作。

本文分享自微信公众号 - 这里只有VxWorks(VxWorks567)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励