91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

并行多線程處理器MC3172

痞子衡嵌入式 ? 來源:痞子衡嵌入式 ? 作者:痞子衡嵌入式 ? 2022-08-19 14:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近,朋友送了塊小板子,板子上的MCU是個很有意思的東西——并行多線程處理器MC3172 。

通俗地說,這顆MCU的內(nèi)部實現(xiàn)了類似RTOS多線程的功能。但是MC3172 編程與RTOS編程的最大區(qū)別就是:

  • MC3172多線程絕對并行運行,沒有切換抖動及開銷。

  • MC3172無線程優(yōu)先級、優(yōu)先級反轉、死鎖等概念。

  • MC3172所有中斷都可以安排專門線程處理,沒有中斷嵌套和延遲。

  • MC3172各線程同步并行運行,互不阻塞,互不干擾。

  • MC3172線程響應的確定性相對于RTOS更為精確。

MC3172簡介

MC3172 是廈門感芯科技的一款32 位 RISC并行多線程實時處理器?;?a target="_blank">RISC-V RV32IMC 指令集, 100%單周期指令, 最高200MHz主頻, 3.37coremark/MHz。可以代替實時操作系統(tǒng), 實現(xiàn)程序的模塊化與復用性。

相關資料可在感芯官網(wǎng)下載。鏈接:

http://www.gxchip.cn/

MC3172 特性:

4c978256-1f85-11ed-ba43-dac502259ad0.png

MC3172實踐

MC3172的開發(fā)環(huán)境使用的是國產(chǎn)軟件——MounRiver Studio。

4cb789fc-1f85-11ed-ba43-dac502259ad0.png

MounRiver Studio下載鏈接:

http://www.mounriver.com/download

我們簡單看一下MC3172的demo工程:

4cc90a38-1f85-11ed-ba43-dac502259ad0.png

1、MC3172文件夾

MC3172存放MC3172編程核心文件。

線程配置工具可對各線程進行配置:

4cda25e8-1f85-11ed-ba43-dac502259ad0.png

可以配置線程時鐘源、頻率、??臻g、存儲器分配等信息。

MC3172支持64路線程同步并行運行, 其中分為4個線程組,每個線程組16線程,每個線程組里的線程編號如上圖所示。其中,不使用的線程可以設置為空閑線程,空閑線程完全不運行,不產(chǎn)生功耗。

每個線程都有自己獨立的??臻g ,在數(shù)據(jù)空間允許范圍內(nèi)可隨意分配,但需要確保所有非空閑線程所占的數(shù)據(jù)空間不超過數(shù)據(jù)空間的大小。

MC3172.h存放外設地址相關宏定義及其配置宏,如:

4cf1fac4-1f85-11ed-ba43-dac502259ad0.png

類似于ST的stm32fxxx.h。

thread_config.h為線程配置文件,由線程配置工具生成:

4d008d1e-1f85-11ed-ba43-dac502259ad0.png

MC3172.lds為鏈接腳本,由線程配置工具生成

4d0d92de-1f85-11ed-ba43-dac502259ad0.png

thread_start.c為啟動線程相關的源文件:

#ifndefTHREAD_START_C
#defineTHREAD_START_C
#include"./MC3172.h"
#include"./thread_config.h"

voidthread1_initial(void)
{
#ifdefROTHD_THREAD1_VALID
externvoidthread1_main(void);
rothd_set_sp_const(ROTHD_THREAD1_STACKCFG_VALUE|0x20000000);
thread1_main();
#endif
}
voidthread2_initial(void)
{
#ifdefROTHD_THREAD2_VALID
externvoidthread2_main(void);
rothd_set_sp_const(ROTHD_THREAD2_STACKCFG_VALUE|0x20000000);
thread2_main();
#endif
}

//省略部分代碼......
void(*thread_initial_pointer[64])(void)={
&thread0_initial,
&thread1_initial,
&thread2_initial
//省略部分代碼......
}

voidthread_start(void)
{
(*thread_initial_pointer[THREAD_ID])();
}

程序運行的入口函數(shù)為:thread_start ,從鏈接腳本里可以知道:

4d1eaa56-1f85-11ed-ba43-dac502259ad0.png

thread_start里的THREAD_ID為線程ID值,直接從0x50000000地址中讀出:

#defineTHREAD_ID(*(volatileu8*)(0x50000000))

猜測:0x50000000地址里的ID值會不斷變化,通過某種機制跳轉,遍歷執(zhí)行thread_initial_pointer函數(shù)指針數(shù)組里的各個線程函數(shù)。

threadx_initial里初始化線程棧,并執(zhí)行線程主體,如

voidthread_end(void)
{
while(1);
}

voidthread1_main(void)
{
while(1){
//usercodesection
}
thread_end();
}

這是用戶代碼,我們可以在各個線程主體函數(shù)里邊編寫我們的應用代碼。

2、Release文件夾

Release文件夾里存放的是編譯生成的固件程序,通過 開發(fā)板程序下載工具 可進行下載:

4d2c5b6a-1f85-11ed-ba43-dac502259ad0.png

3、USER_CODE文件夾

USER_CODE文件夾存放用戶代碼:

4d421626-1f85-11ed-ba43-dac502259ad0.png

MC3172 是一顆并行并行多線程實時處理器,我們下面來看看其多線程并行執(zhí)行的特性。

我們編寫兩個線程,線程進行相同的配置,兩個線程分別對兩個IO進行翻轉,測試代碼如:

voidLED0_GPIOA_PIN0_TEST(void)
{
//啟動GPIOA并設置特權組及時鐘頻率
INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));

//使能GPIOAPIN0引腳
GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,GPIO_PIN0,GPIO_SET_ENABLE);

while(1)
{
//GPIOAPIN0輸出1
GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR,GPIO_PIN0);

//延時
for(u32var=0;var5000;++var)
{
NOP();
}

//GPIOAPIN0輸出0
GPIO_SET_OUTPUT_PIN_TO_0(GPIOA_BASE_ADDR,GPIO_PIN0);

//延時
for(u32var=0;var5000;++var)
{
NOP();
}
}
}

voidLED1_GPIOA_PIN1_TEST(void)
{
//啟動GPIOA并設置特權組及時鐘頻率
INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));

//使能GPIOAPIN1引腳
GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,GPIO_PIN1,GPIO_SET_ENABLE);

while(1)
{
//GPIOAPIN1輸出1
GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR,GPIO_PIN1);

//延時
for(u32var=0;var5000;++var)
{
NOP();
}

//GPIOAPIN1輸出0
GPIO_SET_OUTPUT_PIN_TO_0(GPIOA_BASE_ADDR,GPIO_PIN1);

//延時
for(u32var=0;var5000;++var)
{
NOP();
}
}
}

////////////////////////////////////////////////////////////


voidthread_end(void)
{
while(1);
}

////////////////////////////////////////////////////////////

voidthread0_main(void)
{
while(1){
//usercodesection
}
thread_end();
}

////////////////////////////////////////////////////////////

voidthread1_main(void)
{
while(1){
//usercodesection
LED0_GPIOA_PIN0_TEST();
}
thread_end();
}

////////////////////////////////////////////////////////////

voidthread2_main(void)
{
while(1){
//usercodesection
LED1_GPIOA_PIN1_TEST();
}
thread_end();
}

燒錄程序,使用邏輯分析儀抓取GPIOA_PIN0及GPIOA_PIN1引腳電平變化如:

4d4fc456-1f85-11ed-ba43-dac502259ad0.png

可見,這兩個波形是完全同步的,CPU同時在干兩件事情,實現(xiàn)了與RTOS多線程同樣的效果。

心得與總結

嵌入式開發(fā),是軟件+硬件結合,兩者互補。如果硬件功能很強大,則軟件可能可以設計得比較簡單;如果硬件功能有限,則軟件方面可能得考慮比較多的方面。

比如:

  • 一些軟件算法,需要多傳感器數(shù)據(jù)輸入進行融合,則功能實現(xiàn)可能比較簡單,但實際可能為了降成本,減少一些傳感器,這時候需要實現(xiàn)穩(wěn)定可靠的功能,則軟件算法上得下更大的功夫。

  • 對于一些不太復雜的數(shù)字信號處理,在通用的MCU上就可以處理,但對于一些比較復雜的數(shù)字信號處理,則可能使用一些帶有DSP處理器的MCU。

特別的,對于芯片內(nèi)部IC電路來說,如果內(nèi)部有相關模塊可以實現(xiàn)某些功能的話,則對應的軟件編程會簡單很多,而且硬件實現(xiàn)的比軟件實現(xiàn)的效率要高。

硬件實現(xiàn)的多線程編程確實優(yōu)于RTOS編程,但實際開發(fā)中產(chǎn)品軟硬件架構需要考慮多個方面,比如芯片的穩(wěn)定性以及軟件生態(tài)等方面。

并行多線程實時處理器是個好東西,但目前并行多線程實時處理器還處于起步階段,還有很多東西需要完善,需要我們多支持與傳播,只有生態(tài)起來了,將來我們才有機會用得上。


審核編輯 :李倩


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

    關注

    2576

    文章

    55031

    瀏覽量

    791250
  • mcu
    mcu
    +關注

    關注

    147

    文章

    18924

    瀏覽量

    398061
  • 多線程
    +關注

    關注

    0

    文章

    279

    瀏覽量

    21027

原文標題:了解一下這款國產(chǎn)并行多線程MCU!

文章出處:【微信號:pzh_mcu,微信公眾號:痞子衡嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    國產(chǎn)海光3350/8核處理器M-ATX工控主板GM9-5602 DDR4臺式內(nèi)存最大128G 集顯/獨顯

    集特智能GM9-5602工控主板產(chǎn)品介紹 核心配置:國產(chǎn)芯動力,高效能計算 · ? 處理器 ?:搭載國產(chǎn)海光3350八核處理器,基礎頻率3.0GHz,支持多線程任務并行
    的頭像 發(fā)表于 01-22 08:44 ?237次閱讀
    國產(chǎn)海光3350/8核<b class='flag-5'>處理器</b>M-ATX工控主板GM9-5602 DDR4臺式內(nèi)存最大128G 集顯/獨顯

    【瑞薩RA × Zephyr評測】多線程和看門狗

    本文章旨在評估使用 Zephyr RTOS 在 Renesas FPB-RA6E2 開發(fā)板上實現(xiàn)多線程調度與硬件看門狗功能的應用。評估內(nèi)容包括任務調度、看門狗初始化流程、主程序邏輯的詳細解析,以及實驗現(xiàn)象與數(shù)據(jù)分析。
    的頭像 發(fā)表于 01-10 10:23 ?2464次閱讀
    【瑞薩RA × Zephyr評測】<b class='flag-5'>多線程</b>和看門狗

    解析Linux的進程、線程和協(xié)程

    和系統(tǒng)資源。線程的引入使得多核處理器得以充分利用,因為多線程程序可以更有效地分配和管理多核心的計算資源。 線程的特點包括: (1)共享性:線程
    發(fā)表于 12-22 11:00

    多線程的系統(tǒng)

    多線程系統(tǒng)的事件響應也是在中斷中完成的,但事件的處理是在線程中完成的。在多線程系統(tǒng)中,線程跟中斷一樣,也具有優(yōu)先級,優(yōu)先級高的
    發(fā)表于 12-08 07:55

    Linux多線程對比單線程的優(yōu)勢

    :「資源利用率」:通過多線程,可以更有效地利用CPU資源,特別是多核CPU?!?b class='flag-5'>并行處理」:線程允許同時執(zhí)行多個任務,提高程序的執(zhí)行效率?!负喕O計」:使用
    發(fā)表于 12-01 06:11

    rt-thread studio 如何進行多線程編譯?

    ,使用的是5800h+32g內(nèi)存+sn550 ssd,開啟16線程編譯時cpu的占用率也只能到30%,編譯完整個工程需要3分鐘 感覺多線程編譯設置沒有生效,有辦法提高編譯速度嗎 rtthread studio版本是 2.2.9
    發(fā)表于 10-11 09:16

    多線程與多處理有何區(qū)別

    處理也稱為進程,進程是一個在自己的內(nèi)存空間中運行的獨立程序。
    的頭像 發(fā)表于 09-16 14:21 ?552次閱讀

    【HZ-T536開發(fā)板免費體驗】—— linux創(chuàng)建線程

    的執(zhí)行任務成為單線程。多線程是程序中包含多個執(zhí)行流,在一個程序中可以同時運行多個不同的線程來執(zhí)行不同的任務。 多線程提高了CPU的使用鹵率。多線程
    發(fā)表于 09-01 21:31

    多線程的安全注意事項

    多線程安全是指多個線程同時訪問或修改共享資源時,能夠保證程序的正確性和可靠性。 開發(fā)者選擇TaskPool或Worker進行多線程開發(fā)時,在TaskPool和Worker的工作線程中導
    發(fā)表于 06-20 07:49

    聚徽——手持工業(yè)平板電腦處理器性能對工業(yè)場景復雜運算的影響

    起著決定性作用,進而影響整個工業(yè)生產(chǎn)流程的效率與質量。 處理器核心參數(shù)決定運算基礎能力 核心數(shù)量與線程數(shù) 多核心處理器已成為工業(yè)平板電腦應對復雜運算的標配。以英特爾酷睿 i7-12700H 為例,它擁有 14 核心 20
    的頭像 發(fā)表于 06-04 14:38 ?660次閱讀

    工控一體機多線程任務調度優(yōu)化:聚徽分享破解工業(yè)復雜流程高效協(xié)同密碼

    在當今工業(yè) 4.0 的浪潮下,工業(yè)生產(chǎn)正朝著高度自動化、智能化的方向大步邁進。生產(chǎn)流程日益復雜,眾多任務需要同時、高效地協(xié)同執(zhí)行,這對工業(yè)控制系統(tǒng)的核心 —— 工控一體機提出了前所未有的挑戰(zhàn)。多線程
    的頭像 發(fā)表于 05-28 14:06 ?633次閱讀

    一種實時多線程VSLAM框架vS-Graphs介紹

    針對現(xiàn)有VSLAM系統(tǒng)語義表達不足、地圖可解釋性差的問題,本文提出vS-Graphs,一種實時多線程VSLAM框架。該方案顯著提升了重建地圖的語義豐富度、可解釋性及定位精度。實驗表明
    的頭像 發(fā)表于 04-19 14:07 ?1001次閱讀
    一種實時<b class='flag-5'>多線程</b>VSLAM框架vS-Graphs介紹

    海光雙路服務主板,支持 5000/7000系列 2/3號處理器

    處理器
    jf_10805031
    發(fā)布于 :2025年04月02日 14:17:42

    集特 國產(chǎn)飛騰處理器工控主板GM9-2602

    處理器
    集特國產(chǎn)工控產(chǎn)品
    發(fā)布于 :2025年03月12日 14:07:04

    請問如何在Python中實現(xiàn)多線程與多進程的協(xié)作?

    大家好!我最近在開發(fā)一個Python項目時,需要同時處理多個任務,且每個任務需要不同的計算資源。我想通過多線程和多進程的組合來實現(xiàn)并發(fā),但遇到了一些問題。 具體來說,我有兩個任務,一個是I/O密集型
    發(fā)表于 03-11 06:57