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

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

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

3天內不再提示

并行多線程處理器MC3172

痞子衡嵌入式 ? 來源:痞子衡嵌入式 ? 作者:痞子衡嵌入式 ? 2022-08-19 14:57 ? 次閱讀

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

通俗地說,這顆MCU的內部實現了類似RTOS多線程的功能。但是MC3172 編程與RTOS編程的最大區別就是:

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

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

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

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

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

MC3172簡介

MC3172 是廈門感芯科技的一款32 位 RISC并行多線程實時處理器?;?a target="_blank">RISC-V RV32IMC 指令集, 100%單周期指令, 最高200MHz主頻, 3.37coremark/MHz??梢源鎸崟r操作系統, 實現程序的模塊化與復用性。

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

http://www.gxchip.cn/

MC3172 特性:

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

MC3172實踐

MC3172的開發環境使用的是國產軟件——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線程,每個線程組里的線程編號如上圖所示。其中,不使用的線程可以設置為空閑線程,空閑線程完全不運行,不產生功耗。

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

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])();
}

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

4d1eaa56-1f85-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文件夾里存放的是編譯生成的固件程序,通過 開發板程序下載工具 可進行下載:

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

3、USER_CODE文件夾

USER_CODE文件夾存放用戶代碼:

4d421626-1f85-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引腳電平變化如:

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

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

心得與總結

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

比如:

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

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

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

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

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


審核編輯 :李倩


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

    關注

    2564

    文章

    52668

    瀏覽量

    764252
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17870

    瀏覽量

    361129
  • 多線程
    +關注

    關注

    0

    文章

    279

    瀏覽量

    20322

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    請問如何在Python中實現多線程與多進程的協作?

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

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

    ,使用的是5800h+32g內存+sn550 ssd,開啟16線程編譯時cpu的占用率也只能到30%,編譯完整個工程需要3分鐘 感覺多線程編譯設置沒有生效,有辦法提高編譯速度嗎
    發表于 02-19 08:30

    迅為3A6000開發板/龍芯3A6000與龍芯3A5000等龍架構處理器軟件兼容

    個最新研發的高性能 LA664 處理器核,支持同時多線程技術(SMT2),全芯片共 8 個邏輯核。集成安全可信模塊,可提供安全啟動方案和國密(SM2、SM3、SM4 等)應用支持。 根據中國電
    發表于 02-12 15:06

    EE-259:AD7865并行ADC與ADSP-21161 SHARC處理器接口

    電子發燒友網站提供《EE-259:AD7865并行ADC與ADSP-21161 SHARC處理器接口.pdf》資料免費下載
    發表于 01-08 14:45 ?0次下載
    EE-259:AD7865<b class='flag-5'>并行</b>ADC與ADSP-21161 SHARC<b class='flag-5'>處理器</b>接口

    EE-260:AD7865并行ADC與ADSP-2136x SHARC處理器接口

    電子發燒友網站提供《EE-260:AD7865并行ADC與ADSP-2136x SHARC處理器接口.pdf》資料免費下載
    發表于 01-06 14:24 ?0次下載
    EE-260:AD7865<b class='flag-5'>并行</b>ADC與ADSP-2136x SHARC<b class='flag-5'>處理器</b>接口

    迅為3A6000_7A2000開發板龍芯全國產處理器與龍芯 3A5000完全兼容

    個最新研發的高性能 LA664 處理器核,支持同時多線程技術(SMT2),全芯片共 8 個邏輯核。集成安全可信模塊,可提供安全啟動方案和國密(SM2、SM3、SM4 等)應用支持。 根據中國電
    發表于 11-19 11:15

    NPU與傳統處理器的區別是什么

    和GPU相比,NPU在處理深度學習任務時展現出了顯著的優勢。 1. 設計目的 傳統處理器: CPU(中央處理單元): CPU是通用處理器,設計用于執行各種計算任務,包括邏輯運算、數據
    的頭像 發表于 11-15 09:29 ?1071次閱讀

    socket 多線程編程實現方法

    在現代網絡編程中,多線程技術被廣泛應用于提高服務的并發處理能力。Socket編程是網絡通信的基礎,而將多線程技術應用于Socket編程,可以顯著提升服務
    的頭像 發表于 11-12 14:16 ?919次閱讀

    TMS320C6000擴展總線到MC68360微處理器接口

    電子發燒友網站提供《TMS320C6000擴展總線到MC68360微處理器接口.pdf》資料免費下載
    發表于 10-26 10:01 ?0次下載
    TMS320C6000擴展總線到<b class='flag-5'>MC</b>68360微<b class='flag-5'>處理器</b>接口

    Python中多線程和多進程的區別

    Python作為一種高級編程語言,提供了多種并發編程的方式,其中多線程與多進程是最常見的兩種方式之一。在本文中,我們將探討Python中多線程與多進程的概念、區別以及如何使用線程池與進程池來提高并發執行效率。
    的頭像 發表于 10-23 11:48 ?938次閱讀
    Python中<b class='flag-5'>多線程</b>和多進程的區別

    迅為3A6000_7A2000核心主板龍芯全國產處理器LoongArch架構

    個最新研發的高性能 LA664 處理器核,支持同時多線程技術(SMT2),全芯片共 8 個邏輯核。集成安全可信模塊,可提供安全啟動方案和國密(SM2、SM3、SM4 等)應用支持。 根據中國電
    發表于 10-12 11:25

    AMD銳龍9000系列處理器價格公布

    AMD公司近期在其X平臺宣布了備受期待的銳龍9000系列“Zen 5”CPU的正式售價,標志著高性能計算領域的新一輪競爭序幕拉開。此次發布的處理器系列,以卓越的性價比和多線程性能為亮點,吸引了全球科技愛好者的目光。
    的頭像 發表于 08-08 10:53 ?1133次閱讀

    一文掌握Python多線程

    使用線程可以把占據長時間的程序中的任務放到后臺去處理
    的頭像 發表于 08-05 15:46 ?1199次閱讀

    ESP32會不會有多線程問題,需要加鎖嗎?

    ESP32會不會有多線程問題,需要加鎖嗎
    發表于 07-19 08:05

    多線程設計模式到對 CompletableFuture 的應用

    最近在開發 延保服務 頻道頁時,為了提高查詢效率,使用到了多線程技術。為了對多線程方案設計有更加充分的了解,在業余時間讀完了《圖解 Java 多線程設計模式》這本書,覺得收獲良多。本篇文章將介紹其中
    的頭像 發表于 06-26 14:18 ?632次閱讀
    從<b class='flag-5'>多線程</b>設計模式到對 CompletableFuture 的應用
    主站蜘蛛池模板: 羞羞视频靠逼视频大全 | 最新黄色在线 | 色婷婷影视 | 狠狠狠狼鲁欧美综合网免费 | 久久riav二区三区 | 久久久久久久久久久9精品视频 | 久久国产午夜精品理论篇小说 | 天天碰免费视频 | 日本aaaaa级毛片片 | 日本系列 1页 亚洲系列 | 高清影院在线欧美人色 | 日本黄色高清视频网站 | 四虎影酷| 小泽玛利亚在线观看123 | 成人三级网址 | 222.www免费观看 | 夜夜操夜夜摸 | 午夜影院免费在线观看 | 精品亚洲午夜久久久久 | 日日做夜夜爽夜夜爽 | 国产又色又爽又黄的网站在线一级 | 清朝荒淫牲艳史在线播放 | 亚洲精品91大神在线观看 | 分分操免费视频在线观看 | 亚洲毛片网 | 久久久噜噜噜久久中文字幕色伊伊 | 欧美一级视频高清片 | 香蕉视频在线观看国产 | 国产一区二区三区四卡 | 色香视频一sxmv首页 | 美女黄页网站免费进入 | 男人都懂的网址在线看片 | 午夜久久精品 | 免费黄色三级网站 | 免费看h视频 | 国产网站免费观看 | 黄色日本视频网站 | 中国一级特黄特色真人毛片 | 日本三级理论 | 韩国电影天堂 | 在线观看永久免费视频网站 |