0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RT-Thread SMP啟動(dòng)流程

冬至子 ? 來源:螺絲松掉的人 ? 作者:螺絲松掉的人 ? 2023-08-03 15:10 ? 次閱讀

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 完成),流程圖如下

1.jpg
1.jpg

CPU0 和其余 CPU 的啟動(dòng)流程都如下圖所示,( CPU0 完成初始后,執(zhí)行 main 線程之前喚醒其余 CPU )

1.jpg

想要在源碼中看到一些具體的實(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è)試成功。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19286

    瀏覽量

    229853
  • TTL電路
    +關(guān)注

    關(guān)注

    2

    文章

    65

    瀏覽量

    15074
  • SMP
    SMP
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    19667
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1289

    瀏覽量

    40135
  • 樹莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1707

    瀏覽量

    105648
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RT-Thread記錄(三、RT-Thread線程操作函數(shù))

    講完了RT-Thread開發(fā)環(huán)境,啟動(dòng)流程,啟動(dòng)以后當(dāng)然是開始跑線程了,那么自然我們得學(xué)會(huì)如何創(chuàng)建線程以及線程的有關(guān)操作。
    的頭像 發(fā)表于 06-20 00:31 ?6851次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(三、<b class='flag-5'>RT-Thread</b>線程操作函數(shù))

    RT-Thread記錄(二、RT-Thread內(nèi)核啟動(dòng)流程

    在前面我們RT-Thread Studio工程基礎(chǔ)之上講一講RT-Thread內(nèi)核啟動(dòng)流程.
    的頭像 發(fā)表于 06-20 00:30 ?5039次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(二、<b class='flag-5'>RT-Thread</b>內(nèi)核<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>流程</b>)

    RT-Thread SMP介紹與移植資料分享

    1、如何移植 RT-Thread SMP系統(tǒng)上電后,每個(gè) CPU 都會(huì)在 ROM 中的代碼控制下獨(dú)自運(yùn)行,但是只有主處理器(以下簡稱 CPU0 )跳轉(zhuǎn)到 RT-Thread 的初始化入口處,而其
    發(fā)表于 04-27 14:38

    RT-Thread快速入門之了解內(nèi)核啟動(dòng)流程

    1、了解RT-Thread內(nèi)核的啟動(dòng)流程  內(nèi)核是操作系統(tǒng)最基礎(chǔ)也是最重要的部分。從本文開始進(jìn)入 RT-Thread 內(nèi)核相關(guān)知識(shí)的學(xué)習(xí)。  首先了解內(nèi)核的基礎(chǔ)知識(shí),對(duì)
    發(fā)表于 09-05 17:01

    RT-Thread SMP和AMP初體驗(yàn)簡介

    多處理,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)
    發(fā)表于 02-03 14:33

    RT-Thread框架下的SMP支持

    對(duì) RT-Thread 的調(diào)度流程和中斷機(jī)制有一定的學(xué)習(xí)和理解,這部分可以參考 RT-Thread 文檔中心,最好能配合著理解源碼的實(shí)現(xiàn)。我對(duì) RT-Thread 框架下的
    發(fā)表于 02-13 15:02

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國內(nèi)有較大影響力的開源實(shí)時(shí)操作系統(tǒng),本文是RT-Thread實(shí)時(shí)操作系統(tǒng)的編程指南
    發(fā)表于 11-26 16:06 ?0次下載

    rt-thread 優(yōu)化系列(六)啟動(dòng)流程重構(gòu)

    去年此時(shí),筆者剛接觸 rt-thread 的時(shí)候,被它的初始化過程深深折服了。第一次打開一個(gè) rt-thread 的項(xiàng)目,竟然沒找到多線程在哪兒初始化的,"main" 函數(shù)里沒有!
    的頭像 發(fā)表于 07-04 15:30 ?1758次閱讀
    <b class='flag-5'>rt-thread</b> 優(yōu)化系列(六)<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>流程</b>重構(gòu)

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡介 作為一名 RTOS 的初學(xué)者,也許你對(duì) RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會(huì)逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?4557次閱讀
    <b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記 <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發(fā)表于 02-22 18:23 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> <b class='flag-5'>SMP</b> 介紹與移植

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個(gè)賬號(hào)登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?3967次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學(xué)習(xí)

    RT-Thread啟動(dòng)流程?RT-Thread如何支持不同開發(fā)板?

    一個(gè)開發(fā)板上的RT-Thread啟動(dòng)流程可能是首先從bsp?當(dāng)中鏈接腳本指定的startup_xxx.S?中的入口函數(shù)(ENTRY)或者復(fù)位異常處理函數(shù)(ResetHandler)開始運(yùn)行,這部分我們?cè)谥v?bsp?支持時(shí)會(huì)詳細(xì)
    的頭像 發(fā)表于 08-10 15:29 ?1602次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>啟動(dòng)</b><b class='flag-5'>流程</b>?<b class='flag-5'>RT-Thread</b>如何支持不同開發(fā)板?

    RT-Thread框架下的SMP支持

    使其支持 RT-Thread 框架下的 SMP,最近就一直在研究 SMP,并在 Raspberry-Pico 上做了一些實(shí)驗(yàn)。
    的頭像 發(fā)表于 10-11 10:34 ?1135次閱讀
    <b class='flag-5'>RT-Thread</b>框架下的<b class='flag-5'>SMP</b>支持