Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread移植
【12月】初探RT-Thread系统在GD32E103x芯片上的使用
发布于 2020-12-07 10:10:35 浏览:2167
订阅该版
[tocm] ### 前言 随着中美贸易战的加剧,很多公司越来越重视使用国产技术的重要性。使用国产技术,一方面可规避国外对技术的封锁造成产品核心技术的断供,另一方面还可以支持国内技术的迭代和进步。 兆易创新国内一家致力于开发先进存储器技术和IC解决方案的公司,具有丰富的产品线,基于ARM内核开发了多款MCU,而在该篇文章中我们只介绍一款MCU的使用,其是GD32E103C8T6。官网地址:https://www.gigadevice.com/zh-hans/ RT-Thread 是国内完全自主开发的开源的实时操作系统,被广泛应用于能源、车载、医疗、消费电子等多个行业,成为国人自主开发、国内最成熟稳定和装机量最大的开源 RTOS。官网地址: https://www.rt-thread.org/index.html ### GD32E103C8T6简介 该芯片是一款基于Cortex-M4开发的32bit处理器,最高主频可达到120M,大大提高了程序的运行的速度,同时芯片集成了许多通信接口和外设:GPIO、ADC、PWM、USART、I2C等。硬件引脚兼容STM32F103C8T6,可方便从硬件上直接替换,无须修改硬件电路。GD32E103C8T6具有可观的内部存储空间,Flash:64KB,RAM:20KB。 ### 准备工作 - **硬件准备** 市面上基于GD32系列芯片的开发板很少,此处,由于硬件接口兼容STM32F103C8T6,所以我买了一块基于ST的开发板,直接将原来的ST芯片替换成GD32芯片。 烧写工具使用ST-Link。 - **软件准备** 1、Keil集成开发环境 2、GD32E10x标准固件库和keil支持包,下载地址:http://www.gd32mcu.com/cn/download/7?kw=GD32E1,文件分别对应GD32E10x Firmware Library和GD32E10x_AddOn_V1.1.0.rar。 - **Keil开发准备工作** 1、Keil导入GD32E10x软件支持包,操作按照如下图序号操作,在弹出文件选择框中选择GigaDevice.GD32E10x_DFP.1.1.0.pack包进行安装,该包存在下载GD32E10x_AddOn_V1.1.0.rar压缩包中。 ![](https://oss-club.rt-thread.org/uploads/20220714/2a851bb6b85f886c6aa338d1b9c3f35b170b75d5.png) 2、Keil下载RT-Thread内核,安装选择如下图所示。此处选择安装最新版本3.1.1。 ![940230-20201024155608951-1304581964.png](https://oss-club.rt-thread.org/uploads/20210711/ec55bf35d89fedb7057aae16974225a3.png) 完成上述准备工作,则可进行接下来的开发了。 ### 开发工作 - **创建工程** 依次选择,菜单栏`->Project->New uVersion Project->GigaDevice->GD32E103->GD32E103C8;` 接着在`Manage Run-Time Environment`窗口中选择系统内核`RTOS->kernel`。 在创建的工程目录下新建以下文件夹: `User、Drivers、Out`。 - **加载GD标准固件库** 将之前下载的标准固件库GD32E10x Firmware Library的解压文件放到Drivers目录下,该库中包含外部设备库,启动汇编代码、第三方库以及示例工程代码。将**GD32E10x_Firmware_Library\Template**目录下的全部c文件和h文件复制到User文件夹下(main,systick相关文件除外)。 - **完善工程** 右击Keil工程显示栏中的工程选择**Manage Project Items**,可在管理中修改工程名称,新加组,以及添加组文件。修改完成之后,显示如下图所示。 ![](https://oss-club.rt-thread.org/uploads/20220714/78a6565e046fe8b6f3a76183c67c2304eec9fc4b.png) 在Drivers中添加**Drivers\GD32E10x_Firmware_Library\Firmware\GD32E10x_standard_peripheral\Source**下的所有C文件和**Drivers\GD32E10x_Firmware_Library\Firmware\CMSIS\GD\GD32E10x\Source\system_gd32e10x.c**文件。 在User中添加User目录下的所有C文件。 在Startup中添加**Drivers\GD32E10x_Firmware_Library\Firmware\CMSIS\GD\GD32E10x\Source\ARM\startup_gd32e10x.s** 右击Keil工程显示栏中的工程选择**Optins for Target**,在**Output选项卡**中点击**Select Folder for Objects...**按钮选择将编译目标保存到Out文件夹中,并选择**Create HEX File**。在**Listing选项卡**中点击**Select Folder for Listings...**按钮选择将编译中间生成的文件保存到Out文件夹中。 在**C/C++选项卡**中**Define栏**定义以下宏**USE_STDPERIPH_DRIVER,GD32E10X,GD32E103V_EVAL,Include Paths**中包含所有工程用到的H文件所属目录或者文件夹。 ![](https://oss-club.rt-thread.org/uploads/20220714/22862167bca76fe4117c84b6909bdb2f152be99b.png) 在**Debug选项卡**中选择**ST-Link Debugger**。 ![](https://oss-club.rt-thread.org/uploads/20220714/2190f4d094800212380eb66336270fa5a2a0c260.png) - **定制RT-Thread** 因RT-Thread系统内核已经实现了针对Cortex-M3和Cortex-M4 处理器的移植,只需要简单修改代码即可使用。删除**gd32e10x_it.c**文件中**PendSV_Handler**和**SysTick_Handler**函数,因为RT-Thread重新定义了这两个中断函数。在此点亮LED灯的应用中,选择在空闲进程中的钩子函数中更新看门狗重装载计数器(喂狗操作),所以在**rtconfig.h**将 **#define RT_USING_IDLE_HOOK**字符串前面的注释符号去掉,使得空闲钩子使能。该应用中选择开启动态分配内存,所以在**rtconfig.h**将**#define RT_USING_HEAP**去掉,开启该功能。 - **编写应用** 该项目的应用代码全部放在了User文件夹中,详细代码工程下载地址: https://gitee.com/awesomeoy/gd32-e103-c8-t6_-demo - **烧写固件运行** 编译完成即可通过ST-link工具将代码烧写至芯片运行。 ### 总结 GD系列芯片很多硬件上是完全兼容STM系列的,从硬件上更换完全不需要重新调整电路板布线。如果将产品完整的从STM芯片移植到GD只需要调整软件底层代码,而GD也提供标准库,该库在一定程度上可以加快移植。 该测试项目使用的是国产MCU和国产实时嵌入式操作系统,在很大程度上实现了完全国产化(MCU内核使用的ARM的IP)。衷心希望国内很多核心方面的技术早日突破国外的封锁,甚至优于国外! 注意:关于GD芯片固件库和软件支持下载地址:http://www.gd32mcu.com/cn/download/6?kw=GD32E1
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
好小子
这家伙很懒,什么也没写!
文章
1
回答
12
被采纳
2
关注TA
发私信
相关文章
1
NXP MKL16Z128 使用GCC交叉编译移植问题
2
都有cubemx了 为什么不能写一些cubeide的移植呢?
3
rt-thread移植后要更改startup_stm32f10x_md.s吗
4
请问将rt-thread移植到stm32f103ret6中选用哪个版本?
5
MSP430不能跑rtthread吗?
6
请问rt-thread可以移植到STM32F767单片机上么?
7
RT-Thread 有移植到 ALTERA SOC_FPGA 上面吗?
8
移植RT-Thread系统至risc-v架构处理器
9
请问RT-Thread移植到CH32V307该怎么做呀?
10
在移植RTT3.1.3打开rtconfig.h时出现下面这个错误,应该怎么修改?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部