关于SMP
- 2019 年 10 月 31 日
- 笔记
多核在嵌入式实时系统里应用的越来越多,而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的使用 这正是: 硬件有多核,软件更灵活。 默认从零启,其余可操作。