關於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的使用 這正是: 硬體有多核,軟體更靈活。 默認從零啟,其餘可操作。