使用Embedded Studio开发与调试FCM32单片机

描述

0 引言

FCM32C0xx是深圳闪芯微电子(简称闪芯微)高性价比的32位微控制器产品,基于Cortex-M0内核,运行频率最高达100MHz,提供丰富的连接功能(USART、SPI、I2C、I2S、USB、CAN、SPI)及模拟外设(ADC、DAC、COMP),同时提供CRC、AES、PLib、读保护等多种安全措施。

FCM32R0xx系列是闪芯微设计的基于NUCLEI(芯来)N305内核的控制器,R0xx系列MCU将内核从Cortex-M更换为RISC-V。和C0xx相比,模拟外设、数字外设、电气参数、MCU引脚分配等全部一致,用户不需要重新学习MCU各个外设的使用,可以简单方便的将应用从Cortex-M切换到RISC-V内核上。

闪芯微设计的理念是R0xx与C0xx系列只有内核不同,其它全部一样,因此采用统一的SDK开发包(驱动与例程),可方便切换不同系列MCU,用户不需要关心内核的区别,只需专注于应用层的开发。

一般情况不同架构的MCU开发,需要对应的开发工具,比如ARM Keil能支持ARM Cortex-M系列MCU开发。SEGGER Embedded Studio(简称SES)作为单一IDE同时支持Cortex-M和RISC-V内核应用开发,这具备特别的优势。使用SES可以同时支持闪芯微FCM32C0xx和FCM32R0xx系列MCU开发调试,原生支持J-Link,提供高效的调试特性,SES针对非商业用户免费,这让初学者可以方便上手学习。

FCM32C0/R0系列处理器,作为高度集成的32位MCU,适用于多种应用。闪芯微提供了FCM32 Nucleo-64开发板,供用户试用/评估FCM32系列LQFP64封装的微控制器。开发板将所有IO引出,提供按键、LED,板载DAPLINK在线调试器。我们基于FCM32 Nucleo-64学习板,了解如何使用SES开发、调试FCM32应用。

1. 环境搭建

 

安装开发环境和SDK

访问SEGGER官网,https://www.segger.com/downloads/embedded-studio/?utm_medium=top_menu&utm_source=www,下载SES并安装。

访问http://www.flashchip.com.cn/support.html,联系闪芯微获得软件包。

Pack文件夹中包含SES支持包文件FCM32.emPackage,启动SEGGER Embedded Studio,通过Tools->Manually Install Packages…安装支持包。

将fcm32c0xx_r0xxJ-LinkJLinkDevices目录拷贝至C:UsersXXXXXAppDataRoamingSEGGER(XXXXX为电脑的用户名), 在SES中添加FCM处理器支持。

2. 构建示例工程

 

安装FCM32支持包后,SES中将包含FCM32C0xx Samples Solution和FCM32R0xx Samples Solution。

在安装的支持包中,选择FCM32C0xx Samples Solution,

在Project‘Blinky’上双击,将Blinky设置为当前工程,点击工具栏按钮Build或按F7,构建工程。

通过Output窗口,可以看到工程的构建时间,生成的可执行文件的资源占用情况。

3. 使用J-Link调试应用

 

FCM32 Demo Board开发板没有提供外扩SWD调试接口,需通过引出的IO口,连接J-Link调试接口,注意使用外部调试器时,需将SB3/SB4/SB5移除。

通过Debug->go,进入调试界面,

即可开始源代码的跟踪调试。

4. 创建用户例程

 

安装FCM32的支持包后,用户可以基于支持包新建工程。新建工程的步骤如下:

1. 选择File->New Project…新建工程,在弹出的窗口中选择FCM32R0xx工程模板,指定工程位置和名字后,点击Next。

2. 指定MCU型号,以及烧写文件的格式。

3. 选择需要加载的文件。

4. 工程创建完成后,编译。

5. 使用J-Link连接开发板,点击工具栏的Start Debugging,进入调试模式,程序运行至main。

用户可以基于该例程,开发自己的应用。

5. 迁移STM32F0项目

 

FCM32C0xx/R0xx两个系列控制器,与STM32F0xx系列使用相同的内存映射,时序兼容。开发者已经熟悉的基于STM32F0系列的程序,通过简单的几个步骤,即可迁移到FCM32C0xx/R0xx MCU上运行,这一点对于RISC-V MCU开发初学者很有帮助。以GPIO_IOToggle工程为例,了解如何将例程迁移到RISC-V内核的FCM32R0处理器上。

1. 参考第4节创建用户例程,创建GPIO_IOToggle工程,MCU设置为FCM32R072RB。

2. 将F0示例工程目录下的Src和Inc文件夹,拷贝至GPIO_Toggle工程目录。

3. 在SES工程中,添加相应的源文件,

新建BSP Files文件夹,添加FCM32DriversBSPFCM-Nucleofcm32x0xx_nucleo.c。

新建Driver Files文件夹,添加FCM32DriversFCM32x0xx_HAL_DriverSrc下相应的时钟、中断及IO驱动。

移除Source Files目录下的main.c文件,添加Srcmain.c和stm32f0xx_it.c。

操作完成后,工程视图如下。

4. 修改头文件调用。

在main.h中,将

 

#include "stm32f0xx_hal.h" #include "stm32f0xx_nucleo.h"

 

替换为

 

#include "fcm32x0xx_hal.h" #include "fcm32x0xx_nucleo.h"

 

将Incstm32f0xx_hal_conf.h重命名为fcm32x0xx_hal_conf.h。

将fcm32x0xx_hal.h文件中的

 

#include "stm32f0xx_hal_***.h"

 

替换为

 

#include "fcm32x0xx_hal_***.h"

 

5. 构建工程,使用J-Link连接开发板,进入调试模式,运行程序,翻转LED状态。

6. 小结

 

ARM Cortex-M MCU已经有广泛的教育和应用的基础,开发者熟悉这种处理器架构和开发方法,许多基于ARM Cortex-M MCU芯片是物联网和嵌入式系统开发的首选平台。RISC-V指令集架构是计算技术中冉冉上升的新星,RISC-V单片机也频频亮相,单片机芯片的应用越来越多。本文介绍基于FCM32C0/R0系列单片机开发板、SDK软件包和SEGGER Embedded Studio,学习从ARM MCU迁移到RISC-V MCU的一种路径,希望本文对RISC-V嵌入式开发的初学者有帮助。

参考资料

1. 闪芯微 FCM32 Nucleo-64使用说明

2. 闪芯微 Sxx32f0至FCM32x0快速替换指南

3. 林金龙 移植Cortex-M程序到RV32中的问题 https://www.hanspub.org/journal/paperinformation?paperid=93109

4.林金龙 何小庆 深入理解RISC-V程序开发 北京航空航天大学出版社 2021年9月

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • m

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分