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

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

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

RT-Thread SMP啟動流程

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

SMP 和 AMP 簡介

SMP(Symmetric Multi-processing) :對稱多處理,在一個計算機上匯集了一組處理器 (多 CPU), 各 CPU 之間共享內(nèi)存子系統(tǒng)以及總線結(jié)構(gòu)。SMP模式系統(tǒng)中所有CPU的地位相同,共同運行一個操作系統(tǒng)實例,所有CPU共享系統(tǒng)內(nèi)存和外設(shè)資源。

嵌入式領(lǐng)域除 SMP 外還有一種支持多核處理器芯片的操作系統(tǒng)體系結(jié)構(gòu),即 AMP。

AMP(Asymmetric Multi-processing) : 非對稱多處理,AMP模式的RTOS在各個CPU上均運行一個操作系統(tǒng)實例(這些操作實例不一定完全相同),各個操作系統(tǒng)擁有自己專用的內(nèi)存,相互之間通過訪問受限的共享內(nèi)存進行通信。

RT-Thread SMP 啟動流程

首先是主 CPU(一下簡稱 CPU0 )進入到 RT-Thread 的初始化,其他的 CPU 需要通過 CPU0 喚醒,隨后才進行各自的初始化( CPU0 只負責喚醒,次級 CPU 自身硬件部分的初始化不能由 CPU0 完成),流程圖如下

1.jpg
1.jpg

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

1.jpg

想要在源碼中看到一些具體的實現(xiàn),可以在工程中搜索 RT_USING_SMP

簡單實驗

qemu-vexpress-a9
RT-Thread 中 qemu-vexpress-a9 的 BSP 中已經(jīng)支持了 SMP ,沒有實物也可以通過 qemu 試一試。

首先在進入到 bsp/qemu-vexpress-a9 目錄,進入 menuconfig ,使能 SMP ,并且將 CPU 的個數(shù)設(shè)置為實際值(4個);
可以在次 CPU 的線程中添加一些簡單的串口打印功能,方便觀察現(xiàn)象;
env 中運行命令 scons 構(gòu)建項目;
輸入命令 ./qemu-nographic.sh 即可運行 qemu ,可以觀察到 SMP 已經(jīng)成功的跑起來了。
raspi3-32
我手上還有一塊樹莓派也是多核的,RT-Thread 官方的 BSP 中也支持了這塊板子的 SMP 功能。

進入 menuconfig 進行同樣的配置;
env 中運行命令 scons 構(gòu)建項目;
將生成的 kernel7.img 文件拷貝到樹莓派 SD 卡的 boot 目錄中即可;
樹莓派上電前先使用 USB 轉(zhuǎn) TTL 模塊連接到電腦;
啟動樹莓派后,串口成功顯示相關(guān)信息, SMP 簡單測試成功。

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

    關(guān)注

    68

    文章

    19048

    瀏覽量

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

    關(guān)注

    2

    文章

    60

    瀏覽量

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

    關(guān)注

    0

    文章

    71

    瀏覽量

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

    關(guān)注

    31

    文章

    1251

    瀏覽量

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

    關(guān)注

    116

    文章

    1684

    瀏覽量

    105405
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

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

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

    RT-Thread SMP和AMP初體驗簡介

    多處理,AMP模式的RTOS在各個CPU上均運行一個操作系統(tǒng)實例(這些操作實例不一定完全相同),各個操作系統(tǒng)擁有自己專用的內(nèi)存,相互之間通過訪問受限的共享內(nèi)存進行通信。RT-Thread SMP 啟動
    發(fā)表于 02-03 14:33

    RT-Thread框架下的SMP支持

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

    RT-Thread編程指南

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

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

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

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

    RT-Thread 簡介 作為一名 RTOS 的初學(xué)者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?4400次閱讀
    <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í)

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

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

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

    RT-Thread框架下的SMP支持

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