范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

并行多线程的MCUMC3172,你见过吗?

  文章下方附学习资源,自助领取
  摘要 :最近,朋友送了块小板子,板子上的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 特性:
  MC3172实践
  MC3172的开发环境使用的是国产软件——MounRiver Studio。
  MounRiver Studio下载链接: http://www.mounriver.com/download
  我们简单看一下MC3172的demo工程:
  1、MC3172文件夹
  MC3172存放MC3172编程核心文件。
  线程配置工具可对各线程进行配置:
  可以配置线程时钟源、频率、栈空间、存储器分配等信息。
  MC3172支持64路线程同步并行运行, 其中分为4个线程组,每个线程组16线程,每个线程组里的线程编号如上图所示。其中,不使用的线程可以设置为空闲线程,空闲线程完全不运行,不产生功耗。
  嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
  无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
  点击这里找小助理0元领取:嵌入式物联网学习资料(头条)
  每个线程都有自己独立的栈空间 ,在数据空间允许范围内可随意分配,但需要确保所有非空闲线程所占的数据空间不超过数据空间的大小。
  MC3172.h存放外设地址相关宏定义及其配置宏,如:
  类似于ST的stm32fxxx.h。
  thread_config.h为线程配置文件,由线程配置工具生成:
  MC3172.lds为链接脚本,由线程配置工具生成
  thread_start.c为启动线程相关的源文件: #ifndef THREAD_START_C#define THREAD_START_C#include "./MC3172.h"#include "./thread_config.h"void thread1_initial(void){#ifdef ROTHD_THREAD1_VALIDextern void thread1_main(void);    rothd_set_sp_const(ROTHD_THREAD1_STACKCFG_VALUE|0x20000000);    thread1_main();#endif}void thread2_initial(void){#ifdef ROTHD_THREAD2_VALIDextern void thread2_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// 省略部分代码......}void thread_start(void){    (*thread_initial_pointer[THREAD_ID])();}
  程序运行的入口函数为:thread_start ,从链接脚本里可以知道:
  thread_start里的THREAD_ID为线程ID值,直接从0x50000000地址中读出: #define THREAD_ID (*(volatile u8*)(0x50000000))
  猜测:0x50000000地址里的ID值会不断变化,通过某种机制跳转,遍历执行thread_initial_pointer函数指针数组里的各个线程函数。
  threadx_initial里初始化线程栈,并执行线程主体,如 void thread_end(void){    while(1);}void thread1_main(void){    while(1){        //user code section    }    thread_end();}
  这是用户代码,我们可以在各个线程主体函数里边编写我们的应用代码。 2、Release文件夹
  Release文件夹里存放的是编译生成的固件程序,通过 开发板程序下载工具 可进行下载:
  3、USER_CODE文件夹
  USER_CODE文件夹存放用户代码:
  MC3172是一颗并行并行多线程实时处理器,我们下面来看看其多线程并行执行的特性。
  我们编写两个线程,线程进行相同的配置,两个线程分别对两个IO进行翻转,测试代码如: void LED0_GPIOA_PIN0_TEST(void){ // 启动GPIOA并设置特权组及时钟频率    INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));    // 使能GPIOA PIN0引脚    GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR, GPIO_PIN0, GPIO_SET_ENABLE);    while(1)    {     // GPIOA PIN0输出1     GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR, GPIO_PIN0);     // 延时        for (u32 var = 0; var < 5000; ++var)        {            NOP();        }        // GPIOA PIN0输出0     GPIO_SET_OUTPUT_PIN_TO_0(GPIOA_BASE_ADDR, GPIO_PIN0);     // 延时        for (u32 var = 0; var < 5000; ++var)        {            NOP();        }    }}void LED1_GPIOA_PIN1_TEST(void){ // 启动GPIOA并设置特权组及时钟频率    INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));    // 使能GPIOA PIN1引脚    GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR, GPIO_PIN1, GPIO_SET_ENABLE);    while(1)    {     // GPIOA PIN1输出1     GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR, GPIO_PIN1);     // 延时        for (u32 var = 0; var < 5000; ++var)        {            NOP();        }        // GPIOA PIN1输出0     GPIO_SET_OUTPUT_PIN_TO_0(GPIOA_BASE_ADDR, GPIO_PIN1);     // 延时        for (u32 var = 0; var < 5000; ++var)        {            NOP();        }    }}////////////////////////////////////////////////////////////void thread_end(void){    while(1);}////////////////////////////////////////////////////////////void thread0_main(void){    while(1){        //user code section    }    thread_end();}////////////////////////////////////////////////////////////void thread1_main(void){    while(1){        //user code section     LED0_GPIOA_PIN0_TEST();    }    thread_end();}////////////////////////////////////////////////////////////void thread2_main(void){    while(1){        //user code section     LED1_GPIOA_PIN1_TEST();    }    thread_end();}
  烧录程序,使用逻辑分析仪抓取GPIOA_PIN0及GPIOA_PIN1引脚电平变化如:
  可见,这两个波形是完全同步的,CPU同时在干两件事情,实现了与RTOS多线程同样的效果。 心得与总结
  嵌入式开发,是软件+硬件结合,两者互补。如果硬件功能很强大,则软件可能可以设计得比较简单;如果硬件功能有限,则软件方面可能得考虑比较多的方面。
  比如: 一些软件算法,需要多传感器数据输入进行融合,则功能实现可能比较简单,但实际可能为了降成本,减少一些传感器,这时候需要实现稳定可靠的功能,则软件算法上得下更大的功夫。 对于一些不太复杂的数字信号处理,在通用的MCU上就可以处理,但对于一些比较复杂的数字信号处理,则可能使用一些带有DSP处理器的MCU。
  特别的,对于芯片内部IC电路来说,如果内部有相关模块可以实现某些功能的话,则对应的软件编程会简单很多,而且硬件实现的比软件实现的效率要高。
  硬件实现的多线程编程确实优于RTOS编程,但实际开发中产品软硬件架构需要考虑多个方面,比如芯片的稳定性以及软件生态等方面。
  并行多线程实时处理器是个好东西,但目前并行多线程实时处理器还处于起步阶段,还有很多东西需要完善,需要我们多支持与传播,只有生态起来了,将来我们才有机会用得上。 文章来源于嵌入式大杂烩 ,作者杂烩君
  本文转载自"果果小师弟",如有侵权,请联系删除
  原文链接:并行多线程的MCU—MC3172,你见过吗?
  版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

那些超绿茶电视剧,你是后知后觉还是当时就被气到了?有着电视剧当时看的时候觉得女主好可怜,好无辜,一副人畜无害的样子。多年之后觉得自己当初的三观呢?情深深雨蒙蒙情深深雨蒙蒙里的如萍,就是个超级大绿茶,从电视的一开场就有一股浓浓的茶味人世间那些又爱又恨的人设,有的让人醍醐灌顶,有的真不讨喜因为一部年代剧,久违的全家老小同追剧的奇观,最近又发生了。人世间上线至今,连续19天热度第一,豆瓣开画8。1分,网友形容追剧感觉就像嗑瓜子,心里明知道够了,就是停不下来。话虽如此,宋小宝和前妻霍晓红离婚,再婚娶了粉丝王雪,如今成人生赢家文1号唠嗑员2007年,还是二人转演员的宋小宝,被赵本山看中,成了他的第32位徒弟。至此之后,宋小宝的人生迎来了巨大的转变,渐渐逆袭成了有名的喜剧演员。要知道,宋小宝在成名前,日子又一个NBA球员豪宅被盗,损失高达百万,事发时正在观看超级碗近日,美国媒体爆料勇士悍将追梦格林位于洛杉矶的一栋豪宅遭到入室盗窃,丢失了价值昂贵的手表和一些珠宝,价格大约在100万美金左右,目前警方还没有抓到任何嫌疑人以及通报相关信息。追梦格正式确定!李根加盟中国篮坛冠军球队与名帅再携手随着CBA窗口期球员交易正式关闭,多位名将都重返赛场失败,其中就包括了李根这位大牌球员!由于身体状态没有恢复到最佳,李根试训了多支球队都以失败告终。不过他并没有退役的想法,接下来他小米手环广告表达不准确被罚8万Tech星球2月21日消息,天眼查App显示,近期,小米科技有限责任公司因产品功能表述不准确,违反广告法,被北京市海淀区市场监督管理局罚款8万元。具体事由为,当事人销售的小米手环558同城卷入血奴案!快狗上市前夕姚劲波遭当头一棒?江苏一90后男子,自述因轻信58同城招工广告,遭胁迫偷渡至柬埔寨后,被圈养充当血奴。近日,濒临死亡的该男子才被送到医院抢救,至今还在医院进行康复。这个案件目前中柬正在调查中。58同新车实拍华为AITO问界M5,热度很高,但褒贬不一!问界M5新车实拍这是台春节后刚到店的华为新车,问界M5,也是华为和小康旗下赛力斯合作的第二款车型。该车的背景是在华为带货赛力斯SF5车型效果不佳后,华为亲自下场,新设AITO品牌,本赛季后生可畏的八大球星,加兰少年老成,莫兰特大杀四方长江后浪推前浪,这句至理名言在NBA同样适用。在小球盛行的时代,更是加速了年轻球员的成长,为他们营造了一片碧海蓝天,给了年轻人施展才华与抱负的舞台。今天,盘点本赛季后生可畏的八大球盘点NBA新赛季十大得分后卫,汤普森垫底,哈登进不去前三四大分卫美媒盘点新赛季十大得分后卫,汤普森垫底,哈登进不去前三,202122赛季已经进行了一半的比赛,新赛季由于规则的变更,许多球员都出现了下滑,而在得分后卫这个位置上,许多新星都赛季接近尾声,库里砍下1393分,哈登990分,老詹和德罗赞呢?随着全明星赛的到来,NBA新赛季已经进入了最后的冲刺阶段。排名靠前的球队,都在努力巩固自己的名次,争取主场优势。排名中段的队伍,则是在拼一个季后赛的席位。至于那些联盟垫底的鱼腩球队
花神齐聚十八罗汉山,争芳斗艳逛非遗集市岭南春早,南沙区大岗镇十八罗汉山森林公园里,已是满园春色。在这里,樱花如期而至,一株株樱花灿若云霞,粉色花海和满山碧绿交相辉映,是当之无愧的春季流量密码为进一步擦亮十八罗汉山国家3口袋里的琴声原创散文口袋里的琴声退休后,朋友圈大大缩水,偶尔跟老友一聚,事后又害怕上了年岁,推杯把盏,激情难抑易出事,还是闷在家好。在家闷久了,就出去走走,随处看看,颇有心得。古老的小城跟新时霍格沃茨之遗全系N卡测试,DLSS3翻倍收益助你畅游魔法世界前言要说最近比较火热的游戏是哪款,那当然是霍格沃茨之遗,这款以哈利波特魔法世界为背景打造的ARPG游戏,发售近一个月热度依然能保持在STEAM前列名单,个人觉得成功的原因自然离不开大势给红利,收益不错今年大家的收益应该是都不错了,这不是个人能力有多强,吃了大势走好的红利罢了。连续两个月收益超预期,今年已经知足,2月中旬开始撤了大部分仓位,只保留两三成资金在里面体验盘感了。精力回很膈应人,像恐怖片场景!明星带货又翻车?据辽沈晚报消息这几年各大明星都涌入短视频直播带货,但翻车的也不在少数。近日,有网友爆料,在黄圣依老公杨子直播间买的被子,打开里面后发现却是陌生人的头发,不光身体上被刺挠得够呛,心理金庸群侠传那些废弃的场景,原来就是灵鹫宫独孤剑冢当年我们在玩金庸群侠传时就已经注意到了,游戏中有不少被删减的地方,甚至部分主线都给砍了。这也导致了游戏严重失衡有的小说分分钟就能拿到,流程很短,不费吹灰之力而有的小说则需要付出沉重浓眉38分戈贝尔2214爱德华兹19分湖人不敌森林狼直播吧3月4日讯NBA常规赛继续进行,湖人主场迎战森林狼,湖人目前30胜33负排在西部第11位,森林狼则是32胜32负排在西部第8,本场比赛对于两队卡位很重要,浓眉和施罗德都坚持带恐怖组合!哈登场均助攻恩比德4。1次,为本赛季双人组中最多根据NBA官网数据显示,哈登场均助攻恩比德4。1次,为本赛季联盟双人组中最多。具体排名如下哈登恩比德4。1次保罗艾顿2。5次哈利伯顿希尔德2。5次贾马尔默里约基奇2。4次哈利伯顿特国王4人20仍不敌森林狼5连胜被终结!爱德华兹278NBA常规赛3月5日继续进行,最终,森林狼以138134战胜国王,森林狼获得3连胜的同时终结了国王的5连胜。首节开始,双方上来你一球我一球,打得难分难解,比分也持续交替领先。国王以刘志轩最近疯狂助攻,三分命中率超级恐怖,辽宁球迷想念他突破上篮不中帮助辽宁队夺冠后刘志轩不得不卷起铺盖远走他乡,这都是在辽宁队不投篮惹的祸,想打组织后卫,辽宁队却拥有国家队球员助攻大神赵继伟,没办法刘志轩选择离开效力10个赛季的辽宁男丘陵森林环境下的围猎新形势,中世纪英国民众狩猎的乐趣作为中世纪英国普遍存在的一种景观风貌,猎苑的建立需要有良好的自然条件做支撑。对猎苑建立影响最大的两个因素是地形和植被覆盖情况,这二者紧密结合,缺一不可。在高山地带地形相对平缓的地区