色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

并行多線程處理器MC3172簡介與實踐

我快閉嘴 ? 來源:嵌入式大雜燴 ? 作者:雜燴君 ? 2022-08-14 14:25 ? 次閱讀

摘要:最近,朋友送了塊小板子,板子上的MCU是個很有意思的東西——并行多線程處理器MC3172 。通俗地說,這顆MCU的內部實現了類似RTOS多線程的功能。但是MC3172 編程與RTOS編程的最大區別就是:

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

  • MC3172無線程優先級、優先級反轉、死鎖等概念。

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

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

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

MC3172簡介

MC3172 是廈門感芯科技的一款32 位 RISC并行多線程實時處理器。基于RISC-V RV32IMC 指令集, 100%單周期指令,最高200MHz主頻,3.37coremark/MHz。可以代替實時操作系統, 實現程序的模塊化與復用性。

相關資料可在感芯官網下載。鏈接:

http://www.gxchip.cn/

MC3172 特性:

052e9338-1abb-11ed-ba43-dac502259ad0.png

MC3172實踐

MC3172的開發環境使用的是國產軟件——MounRiver Studio。

054bec12-1abb-11ed-ba43-dac502259ad0.png

MounRiver Studio下載鏈接:

http://www.mounriver.com/download

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

057a8ce8-1abb-11ed-ba43-dac502259ad0.png

1、MC3172文件夾

MC3172存放MC3172編程核心文件。

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

058f65e6-1abb-11ed-ba43-dac502259ad0.png

可以配置線程時鐘源、頻率、棧空間、存儲器分配等信息

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

每個線程都有自己獨立的棧空間 ,在數據空間允許范圍內可隨意分配,但需要確保所有非空閑線程所占的數據空間不超過數據空間的大小。

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

05afdc72-1abb-11ed-ba43-dac502259ad0.png

類似于ST的stm32fxxx.h。

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

05d10096-1abb-11ed-ba43-dac502259ad0.png

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

05e2418a-1abb-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])();
}

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

05ef8494-1abb-11ed-ba43-dac502259ad0.png

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

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

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

threadx_initial里初始化線程棧,并執行線程主體,如

voidthread_end(void)
{
while(1);
}

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

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

2、Release文件夾

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

06098f7e-1abb-11ed-ba43-dac502259ad0.png

3、USER_CODE文件夾

USER_CODE文件夾存放用戶代碼:

061e239e-1abb-11ed-ba43-dac502259ad0.png

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

我們編寫兩個線程,線程進行相同的配置,兩個線程分別對兩個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引腳電平變化如:

062b7a12-1abb-11ed-ba43-dac502259ad0.png

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

心得與總結

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

比如:

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

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

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

硬件實現的多線程編程確實優于RTOS編程,但實際開發中產品軟硬件架構需要考慮多個方面,比如芯片的穩定性以及軟件生態等方面。

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

審核編輯:湯梓紅

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

    關注

    68

    文章

    19397

    瀏覽量

    230723
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17307

    瀏覽量

    352186
  • RTOS
    +關注

    關注

    22

    文章

    819

    瀏覽量

    119807

原文標題:并行多線程的MCU—MC3172,你見過嗎?

文章出處:【微信號:果果小師弟,微信公眾號:果果小師弟】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么是并行多線程實時處理器MC3172開發環境開發實踐

    板子上的MCU是個很有意思的東西——并行多線程處理器MC3172
    發表于 09-19 11:28 ?768次閱讀
    什么是<b class='flag-5'>并行</b><b class='flag-5'>多線程</b>實時<b class='flag-5'>處理器</b>?<b class='flag-5'>MC3172</b>開發環境開發<b class='flag-5'>實踐</b>

    [每日一芯]感芯科技 MC3172 系列 64線程并行 32位risc-v MUC 附完整資料

    MC3172 是一款多線程實時處理器,其特點為64線程同步并行運行,互不阻塞,各個線程共享數據段
    發表于 08-05 13:53

    【感芯科技64線程MC3172開發板免費試用體驗】1.開箱搭環境

    感謝 發燒友學院以及感芯科技 為我和孩子提供此產品感芯科技64線程MC3172開發板。感謝ROTHD研發人員和?大佬們的支持指導。處理器簡介這是一款32位RISC
    發表于 09-13 14:35

    【感芯科技64線程MC3172開發板免費試用體驗】Fedora Linux 搭環境

    處理器 MC3172開發板,64線程同步并行運行,各個線程速度可按需配置,硬件級實時響應,無需中斷服務程序,無需實時操作系統。RISC-V
    發表于 10-06 19:44

    【RISC-V開發板】并行多線程處理器MC3172開發資料集合

    廈門感芯科技多線程處理器MC3172開發板 ,64線程同步并行運行,各個線程速度可按需配置,硬件
    發表于 05-23 11:44

    【感芯科技MC3172開發板體驗】感芯科技MC3172開發板上手體驗

    感芯科技第一款32 位 RISC 處理器** MC3172** ,業內首個64線程同步并行運行,線程資源可按需配置,共享代碼段空間與數據
    發表于 05-24 16:24

    【感芯科技MC3172開發板體驗】初次使用多線程開發板

    _Template\\\\MC3172\\\\目錄下,可找到\"線程配置\",見圖8所示。 在MC3172_Template\\\\Release\\\\目錄下,則可找到\"下載軟件
    發表于 05-25 00:54

    【感芯科技MC3172開發板體驗】測評感芯科技MC3172開發板

    的主角感芯科技MC3172開發板。 開發板背面主芯片 隨感芯科技MC3172開發板發的說明書。 廈門感芯科技的MC3172芯片,具有硬件[多線程]實現的功能,可以擺脫單片機那種
    發表于 05-25 11:34

    【感芯科技MC3172開發板體驗】MC3172開發板一種便捷的多線程開發新途徑

    經過一天的搗鼓,總算把MC3172并行多線程實時處理器的開發整明白了。 首先需要準備的開發環境如下: 線程配置工具_V1 開發板程序下
    發表于 05-28 15:22

    【感芯科技MC3172開發板體驗】開機測試

    通過《并行多線程處理器MC3172開發極簡指南(2).pdf》中的函數介紹,來配置GPIO驅動 GPIO驅動函數 查看原理圖修改驅動代碼 以下是開發板實際IO引腳和分布以及原理圖,
    發表于 06-05 00:08

    【感芯科技MC3172開發板體驗】多線程串口功能測試

    。 可以看出對應的是GPIOC口。軟件初始化端口時按照文檔 《并行多線程處理器MC3172開發極簡指南(2).pdf》中uart函數進行初始化 代碼介紹 初始化完畢后,硬件鏈接,
    發表于 06-10 14:28

    并行多線程處理器MC3172

    MC3172 是廈門感芯科技的一款32 位 RISC并行多線程實時處理器。基于RISC-V RV32IMC 指令集, 100%單周期指令, 最高200MHz主頻, 3.37corema
    的頭像 發表于 08-19 14:57 ?1033次閱讀

    感芯科技MC3172多線程實時性測試

    本文主要對感芯科技的MC3172處理器的64位多線程功能進行測試,測試線程切換響應速度等性能。
    的頭像 發表于 09-13 09:15 ?1287次閱讀
    感芯科技<b class='flag-5'>MC3172</b><b class='flag-5'>多線程</b>實時性測試

    【感芯科技64線程MC3172開發板免費試用體驗】Fedora Linux 搭環境

    開發板免費試用體驗】Fedora Linux 搭環境 這里我所用的環境是 Fedora Linux 36,KDE Plasma 桌面 MC3172介紹 廈門感芯科技多線程處理器 MC3172
    的頭像 發表于 10-13 11:08 ?1000次閱讀
    【感芯科技64<b class='flag-5'>線程</b><b class='flag-5'>MC3172</b>開發板免費試用體驗】Fedora Linux 搭環境

    【感芯科技64線程MC3172開發板免費試用體驗】MC3172開發板了解學習

    的MCU,它是廈門感芯科技新出的一款32 位 RISC 處理器 MC3172 。它最奇特的地方是具有硬件64線程,能夠同步并行運行,而線程
    的頭像 發表于 10-13 11:16 ?934次閱讀
    【感芯科技64<b class='flag-5'>線程</b><b class='flag-5'>MC3172</b>開發板免費試用體驗】<b class='flag-5'>MC3172</b>開發板了解學習
    主站蜘蛛池模板: 云南14学生真实初次破初视频| 亚洲欧美偷拍视频一区| 亚洲 制服 欧美 中文字幕| 成年私人影院网站在线看| 嗯啊好爽视频| 999久久久国产精品蜜臀AV| 亚欧成人毛片一区二区三区四区| 菠萝菠萝蜜视频在线看1| 秋霞网韩国理伦片免费看| voyeurhit农村夫妻偷拍| 欧美日韩北条麻妃一区二区| 99久热这里精品免费| 女教师苍井空体肉女教师S242| 有人在线观看的视频吗免费| 久久婷婷久久一区二区三区| 中国少妇内射XXXHD免费| 蜜臀AV熟女人妻中文字幕| a级毛片黄免费a级毛片| 国产私拍福利精品视频| 亚洲AV无码乱码国产麻豆穿越| 国产主播福利一区二区| 清冷受被CAO的合不拢| 成人天堂婷婷青青视频在线观看| 日日摸夜添夜夜夜添高潮| 国产国产乱老熟视频网站| 性夜夜春夜夜爽AA片A| 精品国产九九| 中文字幕伊人香蕉在线| 国产又色又爽又刺激在线播放| 亚洲精品蜜夜内射| 久久久久久久久人体| 99re久久热在线视频| 日日摸夜夜添无码AVA片| 国产亚洲日韩在线播放不卡| 有人有片的观看免费视频| 强开少妇嫩苞又嫩又紧九色| 国产精品免费观看视频播放| 伊人yinren6综合网色狠狠| 欧美ZC0O人与善交的最新章节| 国产AV视频二区在线观看| 亞洲人妻AV無碼在線視頻|