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