【感芯科技MC3172开发板体验】感芯科技MC3172开发板上手体验 - RISC-V MCU技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛
分享 收藏 返回

【感芯科技MC3172开发板体验】感芯科技MC3172开发板上手体验

前言

逛发烧友社区时,在试用中心看到由厦门感芯科技推出的搭载MC3172芯片的开发板试用资格,然后就心动了,马上申请,通过后不久发烧友就安排了快递寄送(爱了),到手后直接找资料学习起来。


查阅信息


感芯科技第一款32 位 RISC 处理器** MC3172** ,业内首个64线程同步并行运行,线程资源可按需配置,共享代码段空间与数据段空间,硬件级响应,无需中断服务程序,无需实时操作系统。

基于RISC-V RV32IMC 指令集,100%单周期指令,最高200MHz主频,3.37coremark/MHz。

数据段与代码段共享128K字节SRAM,可按需配置为96K代码空间加32K数据空间,或64K代码空间加64K数据空间,或32K代码空间加96K数据空间,灵活应对各种应用场景。

拥有丰富片内外设:12个可配置通信接口,可按需配置为UASRT或SPI或USB或CAN总线形式,满足多通信端口需求;6个双缓冲24位计数器,可提供高精度PWM与输入捕捉;64个GPIO,可提供丰富的自定义控制接口。

image.png

实物图:

cbb6a8543aa1e742d068d4d1985eed4.jpg

975a4ea267d62a6c9ed3c69a03f9e1c.jpg



一、环境搭建及资料下载


1、IDE的下载和安装

因为芯片基于RISC-V RV32IMC 指令集,官方推荐用MounRiver StudioIDE进行开发(支持国货!)

这里直接选择Setup版本,因为有网友说社区版本可能会有些问题(玄学哈!)。

image.png

安装没什么说的,换路径,一路next。

IDE界面如图(感觉还不错):

image.png

PS:在help可以选择language。
image.png

2、MC3172资料

到手新的,未接触过的芯片,收集资料是很重要的,不然就有点无头苍蝇了。

感芯科技官方:MC3172芯片资料合集稳定版
image.png


二、线程资源分配及测试代码编写


1、工程模板介绍

解压官方的MC3172工程模板:
image.png

打开工程,如图:

image.png

文件介绍

MC3172.h:
一个头文件,主要是类似寄存器地址及一些操作、参数的宏定义;

image.png

thread_config.h:
线程配置文件,由线程配置工具生成;

image.png

thread_start.c:
启动线程相关文件,根据thread_config.h配置启动线程;

image.png

MC3712.lds:
链接脚本,用于指定 ELF 格式目标文件的各个段的起始地址和大小,实现SRAM分配。链接脚本是用于控制可执行文件或共享库生成过程的文本文件。它指定了输入文件的排列顺序、如何将输出文件的各个部分放置到内存中,并定义符号、段的起始和结束地址等信息。

image.png

例程:GPIO_GPCOM_TIMER_Example.c
image.png

2、进行简单测试

首先进行线程资源的分配(按需):

配置线程资源.png

进行线程资源分配后,会更新./MC3712文件夹下的thread_config.h和thread_start.c文件内容,实现线程分配。

设置了SRAM后,将会更新MC3712.lds这个链接脚本。

image.png

之后进行测试代码编写:

PS:本来以为板子上一个LED都没有的,所以就直接用逻辑分析仪去抓数据,后来发现是有LED的!

测试程序烧录.png
逻辑分析仪.jpg

测试双线程:

双线程闪烁.png

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

void thread0_main(void)
{
    INTDEV_SET_CLK_RST(GPIOD_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));//使能GPIOD的时钟
    GPIO_SET_OUTPUT_EN_VALUE(GPIOD_BASE_ADDR,(GPIO_PIN8|GPIO_PIN10),GPIO_SET_ENABLE);//D8、10口输出使能
    while(1){
        //user code section
        //GPIO_EXAMPLE(GPIOA_BASE_ADDR);
        GPIO_SET_OUTPUT_PIN_INV(GPIOD_BASE_ADDR,GPIO_PIN8);//翻转D8电平
        Delay();//延时
    }
    thread_end();
}

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

void thread1_main(void)
{
    while(1){
        //user code section
        //GPCOM_UART_EXAMPLE(GPCOM8_BASE_ADDR);
        GPIO_SET_OUTPUT_PIN_INV(GPIOD_BASE_ADDR,GPIO_PIN10);//翻转D10电平
        Delay();//延时

    }
    thread_end();
}

image.png

3、问题解决

遇到个小问题:
报错:

Error:riscv-none-embed-gcc: not found

解决:添加路径

${eclipse_home}\toolchain\RISC-V Embedded GCC\bin

编译链配置.png


三、总结


首先感谢发烧友平台跟感芯科技两方提供的开发板评测体验机会,让我接触到了,新的芯片,有了不一样的体验。

对于MC3172芯片,给了我最大的感触,就是简单几步即可实现多线程,相比起RTOS的复杂配置(如:优先级、调度、资源分配等等),简易很多,开发门槛降低了,而且该有的外设都有,是一款很不错的产品。

当然,目前只是简单的测试项目,因为是第一次接触这一类的芯片,新的指令集、IDE,而且芯片手册不像是以往接触的哪些产品那般,按芯片寄存器进行说明的,所以有点不太习惯(吐槽一下注释有点少,得自己慢慢看)。但是有着开发经验,是很容易上手的。后续还有USART、CAN、PWM等等可以玩的,还是可以期待一下,再然后可以基于MC3172开展更多项目,可玩性还是很高的。

双线程闪烁

回帖(1)

jinyi7016

2023-5-25 10:34:34
楼主,你是什么系统,我的这个烧写软件,时不时的会无响应,要等头天,还卡在校验部分不动了
1
  • cuokai错开: 我PC是Win11的系统,没遇到什么问题,但是好像有些网友Win10烧写程序会有问题。

更多回帖

×
发帖