亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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

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

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

并行多線程處理器MC3172

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

掃碼添加小助手

加入工程師交流群

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

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

  • MC3172多線程絕對(duì)并行運(yùn)行,沒有切換抖動(dòng)及開銷。

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

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

  • MC3172各線程同步并行運(yùn)行,互不阻塞,互不干擾。

  • MC3172線程響應(yīng)的確定性相對(duì)于RTOS更為精確。

MC3172簡(jiǎn)介

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

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

http://www.gxchip.cn/

MC3172 特性:

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

MC3172實(shí)踐

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

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

MounRiver Studio下載鏈接:

http://www.mounriver.com/download

我們簡(jiǎn)單看一下MC3172的demo工程:

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

1、MC3172文件夾

MC3172存放MC3172編程核心文件。

線程配置工具可對(duì)各線程進(jìn)行配置:

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

可以配置線程時(shí)鐘源、頻率、棧空間、存儲(chǔ)器分配等信息。

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

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

MC3172.h存放外設(shè)地址相關(guān)宏定義及其配置宏,如:

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為啟動(dòng)線程相關(guān)的源文件:

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

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

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

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

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

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

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

voidthread_end(void)
{
while(1);
}

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

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

2、Release文件夾

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

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

3、USER_CODE文件夾

USER_CODE文件夾存放用戶代碼:

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

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

我們編寫兩個(gè)線程,線程進(jìn)行相同的配置,兩個(gè)線程分別對(duì)兩個(gè)IO進(jìn)行翻轉(zhuǎn),測(cè)試代碼如:

voidLED0_GPIOA_PIN0_TEST(void)
{
//啟動(dòng)GPIOA并設(shè)置特權(quán)組及時(shí)鐘頻率
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);

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

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

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

voidLED1_GPIOA_PIN1_TEST(void)
{
//啟動(dòng)GPIOA并設(shè)置特權(quán)組及時(shí)鐘頻率
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);

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

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

//延時(shí)
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

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

心得與總結(jié)

嵌入式開發(fā),是軟件+硬件結(jié)合,兩者互補(bǔ)。如果硬件功能很強(qiáng)大,則軟件可能可以設(shè)計(jì)得比較簡(jiǎn)單;如果硬件功能有限,則軟件方面可能得考慮比較多的方面。

比如:

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

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

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

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

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


審核編輯 :李倩


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

    關(guān)注

    2573

    文章

    54041

    瀏覽量

    782885
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    18470

    瀏覽量

    381904
  • 多線程
    +關(guān)注

    關(guān)注

    0

    文章

    279

    瀏覽量

    20856

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

文章出處:【微信號(hào):pzh_mcu,微信公眾號(hào):痞子衡嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    rt-thread studio 如何進(jìn)行多線程編譯?

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

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

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

    多線程的安全注意事項(xiàng)

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

    請(qǐng)問如何在Python中實(shí)現(xiàn)多線程與多進(jìn)程的協(xié)作?

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

    請(qǐng)問rt-thread studio如何進(jìn)行多線程編譯?

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

    迅為3A6000開發(fā)板/龍芯3A6000與龍芯3A5000等龍架構(gòu)處理器軟件兼容

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

    EE-115:ADSP-2189 IDMA接口,連接Motorola MC68300微處理器系列

    電子發(fā)燒友網(wǎng)站提供《EE-115:ADSP-2189 IDMA接口,連接Motorola MC68300微處理器系列.pdf》資料免費(fèi)下載
    發(fā)表于 01-15 16:05 ?0次下載
    EE-115:ADSP-2189 IDMA接口,連接Motorola <b class='flag-5'>MC</b>68300微<b class='flag-5'>處理器</b>系列

    AN-415:ADSP-2181 IDMA接口,連接摩托羅拉MC68300微處理器系列

    電子發(fā)燒友網(wǎng)站提供《AN-415:ADSP-2181 IDMA接口,連接摩托羅拉MC68300微處理器系列.pdf》資料免費(fèi)下載
    發(fā)表于 01-14 15:09 ?0次下載
    AN-415:ADSP-2181 IDMA接口,連接摩托羅拉<b class='flag-5'>MC</b>68300微<b class='flag-5'>處理器</b>系列

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

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

    EE-220:將外部存儲(chǔ)與第三代SHARC處理器并行端口配合使用

    電子發(fā)燒友網(wǎng)站提供《EE-220:將外部存儲(chǔ)與第三代SHARC處理器并行端口配合使用.pdf》資料免費(fèi)下載
    發(fā)表于 01-06 16:12 ?0次下載
    EE-220:將外部存儲(chǔ)<b class='flag-5'>器</b>與第三代SHARC<b class='flag-5'>處理器</b>和<b class='flag-5'>并行</b>端口配合使用

    AN-813: ADSP-BF533/ADSP-BF561 Blackfin處理器與高速并行ADC接口

    電子發(fā)燒友網(wǎng)站提供《AN-813: ADSP-BF533/ADSP-BF561 Blackfin處理器與高速并行ADC接口.pdf》資料免費(fèi)下載
    發(fā)表于 01-06 14:36 ?0次下載
    AN-813: ADSP-BF533/ADSP-BF561 Blackfin<b class='flag-5'>處理器</b>與高速<b class='flag-5'>并行</b>ADC接口

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

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

    迅為3A6000_7A2000開發(fā)板龍芯全國(guó)產(chǎn)處理器與龍芯 3A5000完全兼容

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

    NPU與傳統(tǒng)處理器的區(qū)別是什么

    和GPU相比,NPU在處理深度學(xué)習(xí)任務(wù)時(shí)展現(xiàn)出了顯著的優(yōu)勢(shì)。 1. 設(shè)計(jì)目的 傳統(tǒng)處理器: CPU(中央處理單元): CPU是通用處理器,設(shè)計(jì)用于執(zhí)行各種計(jì)算任務(wù),包括邏輯運(yùn)算、數(shù)據(jù)
    的頭像 發(fā)表于 11-15 09:29 ?2113次閱讀

    socket 多線程編程實(shí)現(xiàn)方法

    在現(xiàn)代網(wǎng)絡(luò)編程中,多線程技術(shù)被廣泛應(yīng)用于提高服務(wù)的并發(fā)處理能力。Socket編程是網(wǎng)絡(luò)通信的基礎(chǔ),而將多線程技術(shù)應(yīng)用于Socket編程,可以顯著提升服務(wù)
    的頭像 發(fā)表于 11-12 14:16 ?1388次閱讀