SMP 和 AMP 簡介
SMP(Symmetric Multi-processing) :對稱多處理,在一個計算機上匯集了一組處理器 (多 CPU), 各 CPU 之間共享內存子系統以及總線結構。SMP模式系統中所有CPU的地位相同,共同運行一個操作系統實例,所有CPU共享系統內存和外設資源。
嵌入式領域除 SMP 外還有一種支持多核處理器芯片的操作系統體系結構,即 AMP。
AMP(Asymmetric Multi-processing) : 非對稱多處理,AMP模式的RTOS在各個CPU上均運行一個操作系統實例(這些操作實例不一定完全相同),各個操作系統擁有自己專用的內存,相互之間通過訪問受限的共享內存進行通信。
RT-Thread SMP 啟動流程
首先是主 CPU(一下簡稱 CPU0 )進入到 RT-Thread 的初始化,其他的 CPU 需要通過 CPU0 喚醒,隨后才進行各自的初始化( CPU0 只負責喚醒,次級 CPU 自身硬件部分的初始化不能由 CPU0 完成),流程圖如下
CPU0 和其余 CPU 的啟動流程都如下圖所示,( CPU0 完成初始后,執行 main 線程之前喚醒其余 CPU )
想要在源碼中看到一些具體的實現,可以在工程中搜索 RT_USING_SMP
簡單實驗
qemu-vexpress-a9
RT-Thread 中 qemu-vexpress-a9 的 BSP 中已經支持了 SMP ,沒有實物也可以通過 qemu 試一試。
首先在進入到 bsp/qemu-vexpress-a9 目錄,進入 menuconfig ,使能 SMP ,并且將 CPU 的個數設置為實際值(4個);
可以在次 CPU 的線程中添加一些簡單的串口打印功能,方便觀察現象;
env 中運行命令 scons 構建項目;
輸入命令 ./qemu-nographic.sh 即可運行 qemu ,可以觀察到 SMP 已經成功的跑起來了。
raspi3-32
我手上還有一塊樹莓派也是多核的,RT-Thread 官方的 BSP 中也支持了這塊板子的 SMP 功能。
進入 menuconfig 進行同樣的配置;
env 中運行命令 scons 構建項目;
將生成的 kernel7.img 文件拷貝到樹莓派 SD 卡的 boot 目錄中即可;
樹莓派上電前先使用 USB 轉 TTL 模塊連接到電腦;
啟動樹莓派后,串口成功顯示相關信息, SMP 簡單測試成功。
-
處理器
+關注
關注
68文章
19178瀏覽量
229201 -
TTL電路
+關注
關注
2文章
65瀏覽量
15064 -
SMP
+關注
關注
0文章
72瀏覽量
19635 -
RT-Thread
+關注
關注
31文章
1274瀏覽量
39942 -
樹莓派
+關注
關注
116文章
1699瀏覽量
105537
發布評論請先 登錄
相關推薦
評論