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