在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

STM32MP1處理器下實現RT-Thread和Linux同時運行

Rice嵌入式開發技術分享 ? 來源:Papalymo ? 作者:Papalymo ? 2022-10-31 12:27 ? 次閱讀

架構說明

本項目以 STM32MP157A-DK1 為硬件平臺。作為能夠支持輕松開發更廣泛應用的通用微處理器產品線,STM32MP157 系列基于雙核Cortex-A7 與 Cortex-M4 組成的異構架構,加強了支持多應用和靈活應用的能力,可以隨時實現最佳性能和功率數據。Cortex-A7 內核提供對開源操作系統Linux/Android)的支持,而 Cortex-M4 內核可以利用 STM32 MCU 的生態系統。本篇文章將介紹如何在 STM32MP157 上運行 RT-Thread OS。

2d43c572-580b-11ed-b468-dac502259ad0.png

啟動方式

Forced USB boot For flashing : 通過 USB 燒寫固件。在此模式下,可以使用 STM32Cube Programmer 工具燒寫 A7 核固件。

Engineer Mode: 一般用于 M4 核的調試。由于 STM32MP1 沒有 Flash,所以代碼會被燒寫到 Cortex-M4 核有訪問權限的 RAM 里面,因此掉電程序會丟失。

SD card on SDMMC1 : 從 SD card 啟動。

工作模式

STM32MP1 有兩種工作模式

工程模式(Engineer Mode),系統上電后,不會啟動 A7 核。M4 核此時可以像平常 STM32 的開發流程,借助于調試工具進行調試。

產品模式(Production Mode),系統上電后,會先啟動 A7 核,然后由 A7 核來啟動 M4 核。

OpenAMP

開源的非對稱多處理框架(OpenAMP)為開發 AMP 系統提供了必要的 API 函數。OpenAMP 是 Xilinx 和M entor Graphic 于2014年發起的一個開源項目,旨在提供一份協處理器的標準通信框架。OpenAMP 提供用于開發 AMP 系統軟件應用程序所需的軟件組件,它允許操作系統在各種復雜的同構和異構結構中交互,并允許不對稱的多處理應用程序利用多核配置提供并行性。在 STM32MP1 系列中,A7 和 M4 兩個核心的通信是通過底層的 IPCC 控制器進行,軟件層使用 RPMsg 框架與用戶進行交互。

IPCC

處理器間通信控制器 (IPCC) 用于兩個處理器之間的數據交換。它提供了一種非阻塞的信號機制,以原子方式發布和檢索信息。IPCC 外設提供了硬件支持來管理兩個處理器之間的通信,每個處理器都擁有特定的寄存器庫和中斷。IPCC 為內核間的通信提供了硬件基礎。

STM32MP1 使用 IPCC 外設進行處理器間通信,配置如下:

IPCC 處理器 1 接口被分配到 ARM Cortex-A7 不安全上下文,由 Linux 郵箱框架進行處理

IPCC 處理器 2 接口被分配到 ARM Cortex-M4 上下文,由 IPCC HAL 驅動程序進行處理

2d62a14a-580b-11ed-b468-dac502259ad0.png

REMOTEPROC

遠程處理器框架(remoteproc)的主要作用作用是對遠程從處理器進行生命周期的管理,啟動和停止遠程處理器。在 STM32MP157 中,當系統啟動時,A7 核會被先啟動,然后借助于 Linux RemoteProc 框架加載 M4 固件,啟動 M4 內核代碼。

2d7f3620-580b-11ed-b468-dac502259ad0.png

RPMsg

Remoteproc 框架實現了對遠程處理器生命周期的管理,RPMsg 框架則實現了對遠程處理器的信息傳遞。

Linux RPMsg (Remote Processor Messaging)框架是在 virtio 框架上實現的信息傳遞機制,以便與遠程處理器進行通信,它基于 virtio vrings 通過共享內存發送、接收來自遠程處理器的消息。

vrings 是單向的,一個 vring 專門用于發送消息到遠程處理器,另外一個 vring 用于接收來自遠程服務器的消息。消息服務基于共享內存,共享內存(shared memory)是在兩個處理器都具有訪問權限的內存空間中創建的;信號通知(mailbox)服務基于內部 IPCC。

2db7803e-580b-11ed-b468-dac502259ad0.png

編譯&運行

生成 ELF 文件

在 rt-thread/bsp/stm32/stm32mp157a-st-discovery 目錄下打開 env 工具;

輸入 menuconfig,打開 OpenAMP:

2e6ba636-580b-11ed-b468-dac502259ad0.png

配置串口。由于官方默認的程序中 A7 核(OpenSTLinux)需要使用串口 4 ,所以這里修改 M4 核(RT-Thread)的調試串口為 UART3:

2e82d266-580b-11ed-b468-dac502259ad0.png

2ea2157c-580b-11ed-b468-dac502259ad0.png

保存配置,輸入命令 scons --target=iar 生成 IAR 工程。

2eaa228a-580b-11ed-b468-dac502259ad0.png

打開 IAR 工程。編譯,生成 ELF 文件:

2eb9ff84-580b-11ed-b468-dac502259ad0.png

KEIL 的操作和上面 IAR 的操作是一樣的,只不過 KEIL 生成的是 axf 文件,一樣可以正常使用。

加載 ELF 文件

設置 Boot mode 為 SD card on SDMMC1 模式,復位開發板:

等待系統初始化完成,輸入命令ifconfig獲取開發板 IP 地址;

使用 ssh 工具連接開發板:

2ed85ae2-580b-11ed-b468-dac502259ad0.png

上傳 ELF 文件:

2ee6f192-580b-11ed-b468-dac502259ad0.png

連接串口3,作為 M4 核(RT-Thread OS)調試串口:

2efa9120-580b-11ed-b468-dac502259ad0.png

使用 Linux Remoteproc 框架加載 Cortex-M4 固件,啟動 Cortex-M4 內核:

mv /tmp/RT-Thread-STM32MP1_CM4.elf /lib/firmware/echo RT-Thread-STM32MP1_CM4.elf > /sys/class/remoteproc/remoteproc0/firmwareecho start > /sys/class/remoteproc/remoteproc0/state

2f2e4f24-580b-11ed-b468-dac502259ad0.png

2f57c58e-580b-11ed-b468-dac502259ad0.png

啟動 OpenAMP

在 RT-Thread 終端輸入命令 console set openamp 切換 RT-Thread console 設備為 openamp:

2f7527f0-580b-11ed-b468-dac502259ad0.png

在 Linux 終端輸入以下命令:

stty-onlcr-echo-F/dev/ttyRPMSG0cat/dev/ttyRPMSG0&

在 Linux 終輸入命令進行驗證:

2f7f3ed4-580b-11ed-b468-dac502259ad0.png

完整操作流程

2f9601c8-580b-11ed-b468-dac502259ad0.png

結語

STM32MP1 作為 ST 推出的第一顆支持 Linux 系統的 MPU,依托于 STM32 成熟的生態系統(STM32CubeMX、STM32Cube Programmer),用戶可以快速的進行開發,驗證。非對稱多處理器架構雖然目前在嵌入式領域還不是主流,但未來肯定是趨勢。通過 Linux 與 RT-Thread 操作系統的結合,可以很輕松的開發多場景應用,如工業、家居、消費品、物聯網、衛生和健康等領域。期待未來 RT-Smart 和 RT-Thread 能同時運行在非對稱多處理器上。

本文作者為RT-Thread論壇用戶「Papalymo」在此特別鳴謝

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19390

    瀏覽量

    230597
  • 嵌入式
    +關注

    關注

    5089

    文章

    19161

    瀏覽量

    306651
  • Linux
    +關注

    關注

    87

    文章

    11332

    瀏覽量

    210022
  • STM32
    +關注

    關注

    2270

    文章

    10918

    瀏覽量

    356883
  • RT-Thread
    +關注

    關注

    31

    文章

    1303

    瀏覽量

    40284
收藏 人收藏

    評論

    相關推薦

    基于STM32MP1處理器的PHYTEC開發板介紹

    PHYTEC開發板是PHYTEC基于 STM32MP1 處理器開發的,STM32MP1 系列處理器集成了雙核 Arm? Cortex?-A7、單核 Cortex?-M4 及GPU。它提
    發表于 03-30 11:02 ?4739次閱讀
    基于<b class='flag-5'>STM32MP1</b><b class='flag-5'>處理器</b>的PHYTEC開發板介紹

    混合部署 | 在迅為RK3568上同時部署RT-ThreadLinux系統

    RT-Thread系統已經同時運行了,其中CPU0、CPU1、CPU2運行Linux系統,CPU3運行
    發表于 09-18 10:54

    混合部署 | 在迅為RK3568上同時部署RT-ThreadLinux系統

    系統和RT-Thread系統已經同時運行了,其中CPU0、CPU1、CPU2運行Linux系統,CPU3
    發表于 11-01 10:31

    STM32MP157上運行RT-Thread OS的步驟教程

    ,驗證。非對稱多處理器架構雖然目前在嵌入式領域還不是主流,但未來肯定是趨勢。通過 LinuxRT-Thread 操作系統的結合,可以很輕松的開發多場景應用,如工業、家居、消費品、物聯網、衛生和健康等領域。期待未來
    發表于 03-16 10:14

    在NUC980處理器運行RT-Thread系統

    (1) NUC980nuc980是新塘推出的基于 ARM926EJ-S,集成 64 MB 或 128 MB DDR-II 的處理器,主頻可以達到300MHZ,有 64-pin、128-pin
    發表于 10-13 15:29

    如何在STM32MP157上運行RT-Thread OS?

    操作系統的結合,可以很輕松的開發多場景應用,如工業、家居、消費品、物聯網、衛生和健康等領域。期待未來 RT-Smart 和 RT-Thread同時運行在非對稱多處理器上。原作者:
    發表于 02-14 11:41

    米爾科技STM32MP1系列處理器介紹

    意法半導體新推出的STM32MP1多核微處理器系列具有計算和圖形處理能力,兼備高能效實時控制和高功能集成度。
    的頭像 發表于 11-26 15:34 ?3039次閱讀
    米爾科技<b class='flag-5'>STM32MP1</b>系列<b class='flag-5'>處理器</b>介紹

    STM32遇到Linux = STM32MP1

    STM32遇到Linux = STM32MP1
    的頭像 發表于 03-01 13:37 ?2159次閱讀

    STM32MP157系列教程連載-硬件設計篇2:STM32MP1處理器之電源篇

    手冊、參考手冊、設計參考文檔)與參考電路板(DK板與EV板),用于產品設計參考:官網首頁進入官方后,選擇產品->微控制->STM32 Arm Cortex MPUs(點擊) 進入STM32MP1系列
    發表于 11-06 16:51 ?13次下載
    <b class='flag-5'>STM32MP</b>157系列教程連載-硬件設計篇2:<b class='flag-5'>STM32MP1</b>微<b class='flag-5'>處理器</b>之電源篇

    STM32MP157系列教程連載-Linux系統移植篇8:STM32MP1處理器Linux內核配置及編譯

    STM32MP157系列教程連載-Linux系統移植篇8:STM32MP1處理器Linux內核配置及編譯第
    發表于 12-22 18:52 ?0次下載
    <b class='flag-5'>STM32MP</b>157系列教程連載-<b class='flag-5'>Linux</b>系統移植篇8:<b class='flag-5'>STM32MP1</b>微<b class='flag-5'>處理器</b>之<b class='flag-5'>Linux</b>內核配置及編譯

    基于RT-Thread和RA6M4實現samba服務移動網盤

    本文詳細介紹了基于RT-Thread操作系統和RA6M4處理器,如何移植和適配samba服務。同時,還提供Linux環境和QEMU仿真環境的參考移植,希望對大家有所啟發和幫助。
    的頭像 發表于 08-17 12:53 ?1519次閱讀
    基于<b class='flag-5'>RT-Thread</b>和RA6M4<b class='flag-5'>實現</b>samba服務移動網盤

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

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

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現同時運行RT-Threadlinux
    的頭像 發表于 03-27 11:36 ?859次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月25日北京站RT-Thread線下workshop,探索RT-Thread混合部署新模式

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現同時運行RT-Threadlinux
    的頭像 發表于 04-16 08:35 ?439次閱讀
    4月25日北京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    6月6日杭州站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    6月6日下午我們將在杭州舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現同時運行RT-Threadlinux
    的頭像 發表于 05-28 08:35 ?465次閱讀
    6月6日杭州站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!
    主站蜘蛛池模板: 国产一级在线观看| 亚洲一级影院| 波多野结衣在线观看一区| 日韩电影天堂网| 五月sese| 国产小视频在线免费观看| 天天碰天天干| 欧美在线1| 色狠狠色综合久久8狠狠色| 婷婷激情综合五月天| 国产综合在线视频| 操黄色| 黑人xxxx精品| 国产亚洲精品aaa大片| 国产肥女bbwbbw| 色综合天天综合网亚洲影院| 手机看片日韩永久福利盒子| 在线天堂在线| 思思久久好好热精品国产| 久久草在线免费| 视频在线精品| 国产福利在线免费| 亚洲一区在线视频| 永久精品免费影院在线观看网站| caoporn成人免费公开| 亚洲国产七七久久桃花| 91中文字幕视频| 床上激情四射| 美女扒开内裤无遮挡禁18| 一级片aaaaaa| 亚洲精品色一区色二区色三区| 欧美日本一道免费一区三区| 真实国产伦子系| 曰本福利写真片视频在线| 天堂资源在线中文| 五月婷婷伊人网| 五月婷婷丁香| 久久夜色tv网站| 午夜激情影视| 天天爽天天干天天操| 天天做天天爽|