移植RT-Thread到GD32星空派开发板

原创
10/14 00:01
阅读数 1

1 RT-Thread介绍

RT-Thread全称是 Real time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统。它是一款完全由国内团队开发维护的嵌入式实时操作系统(RTOS),具有完全的自主知识产权。经过近12个年头的沉淀,伴随着物联网的兴起,它正演变成一个功能强大、组件丰富的物联网操作系统。

RT-Thread的官网:https://www.rt-thread.org/。读者可以在官网上看到许多RT-Thread的相关介绍。

RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。它把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。

本次移植所使用开发板gd32星空派:

2 代码下载

目前RT-Thread提供很多下载方式,有百度网盘、GitHub、Gitee。本书推荐使用Gitee方式,下载连接:https://gitee.com/rtthread/rt-thread。

(1)打开网址:https://gitee.com/rtthread/rt-thread ,单击“统计”——“发行版”,建议下载 4.0.3版本。

3 cortex-m4通用代码

GD32F303是基于ARM® Cortex®-M4处理器的32位通用微控制器。而rt-thread已经针对Cortex®-M4核提供了通用的移植代码,位于文件夹“libcpu\arm\cortex-m4”,如图:

可以看到事实上 rt-thread已经几乎支持了arm大部分系列的芯片。这里的代码基本都是汇编代码,主要是任务切换相关的。

由于rt-thread已经把移植工作中最难的部分标准化了,那我们接下来移植BSP可以说事半功倍。

4 BSP工程文件夹创建

进入“bsp”文件夹,可以看到,目前已经支持了很多GD芯片系列了,其中就由GD32F303。但是我们也可以自己尝试一下移植工作,熟悉了一下流程。

1创建bsp基础工程文件夹

这里我们可以直接复制同样是Cortex®-M4核的芯片的bsp文件夹作为基础文件夹,例如这里我直接复制gd32450z-eval,这个bsp是gd32f450芯片的,也是Cortex®-M4核。新的文件夹名为gd32303e-qidian,进入该文件夹。

打开rtconfig.py文件,可以看到该文件指定了我们使用的芯片架构为arm cortex-m4

2修改template.UVprojx工程文件

打开“template.uvprojx”文件,我们需要修改芯片为“GD32F303ZE”

但是我在操作这一步的时候总是失败。

于是我找到官方例程“01_GPIO_Runing_LED”的GD32303E_EVAL.uvprojx文件,把它复制过来修改成 “template.uvprojx”。

打开,可以看到该工程有很多代码。

这些我们都不需要,直接删除所有代码文件,删除后如下:

修改为c99模式:

保存退出。

3修改库文件

打开“Libraries”文件夹,可以看到有很多GD32F4XX的库文件。

我们芯片是GD32F303,需要换成GD32F30X官方库文件。

先删除3个文件夹,保留SConscript文件

GD32F30X官方库文件可以去官网下载:

http://www.gd32mcu.com/cn/download/0?kw=GD32F3

下载后,把GD32F30X官方库文件都复制过来,如图:

打开SConscript文件,需要将原先库文件的路径都改成GD32F30X库文件路径,修改后如下:

4修改驱动文件

进入“drivers”文件夹,可以看到有很多驱动文件,都是之前GD32F450的,我们需要删除,保留board 和 drv_usart 即可,然后将我们下载的GD32F30X官方例程中的“gd32f30x_libopt.h”文件也复制过来,如图:

打开“SConscript”文件,删除红色框代码,只保留drv_usart.c相关的即可

5修改 board.h ,设置正确的内存大小

打开“board.h”文件,这里我们需要修改内存大小为我们芯片对应的大小,GD32F303ZE是64K,改成64即可:

6修改Kconfig文件

打开“gd32303e-qidian”文件夹下的 Kconfig文件,需要将SOC_GD32450Z修改成 SOC_GD32303Z,同时删除红色框部分代码,因为我们GD32F303不支持SDRAM。

7menuconfig生成工程

修改到这里,我们差不多可以运行menuconfig生成我们keil工程文件了。进入menuconfig,我们不需要网络功能,把lwip的配置去掉,如图:

8串口驱动

修改到这里,事实上,我们还差串口驱动修改,由于串口驱动的修改比较多,这里暂时不展开,可以先直接拿已经修改好的串口驱动文件覆盖即可。或者直接对编译报错的代码直接注释掉,后续我们再移植串口驱动

9修改编译错误

修改到这里,我们

输入 scons --target=mdk5 ,生成新工程文件后,我们打开“project.uvprojx”,然后开始编译,可以看到会有一些错误提示,

这个是头文件不对,我们需要把gd32f4xx.h 修改成 gd32f30x.h

修改编译报错后,可以看到编译成功,结果如下:

烧录到开发板也可以成功运行到main函数。

本文同步分享在 博客“连志安的博客”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部