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函数。

移植RT-Thread到GD32星空派开发板相关推荐

  1. 移植ubuntu14.04根文件系统至beaglebone开发板探索

    移植ubuntu14.04根文件系统至BeagleBone开发板探索 移植背景 我是一个linux小白,然而由于项目需要,一个师兄为机器人的控制定制了一个开发板,基于beaglebone.由于此开发板 ...

  2. 移植中文TTS(ekho)到ARM linux开发板

    移植ekho到arm linux,实现将中文转换为.wav格式的语音文件. 移植开源库libsndfile到arm linux开发板 1. 下载压缩源码包libsndfile-1.0.28.tar.g ...

  3. 香橙派可以运行linux,如何使用SSH远程命令登录香橙派开发板

    香橙派Orange Pi 系列开发板是开源的单板电脑,新一代的arm开发板,可以运行Android.Ubuntu.Debian等操作系统.CPU使用全志H2.H3.H6.RK3399等芯片,拥有多种内 ...

  4. mt7601u linux驱动编译,移植MT7601U AP Linux 驱动至Orangepi-PC2开发板

    简单一下记录移植MT7601U AP Linux 驱动至Orangepi-PC2开发板的过程. 二  环境描述 1.Orangpi-PC2开发板(Linux Orangepi 3.10.65 #12 ...

  5. 开发板移植RTOS操作系统,RTOS操作系统适配开发板整理大全

    文章目录 一.单片机/嵌入式有无操作系统的区别 二.操作系统时的分层架构图 三.移植FreeRTOS到小熊派开发板(STM32L431RC) 1. 硬件准备 2. 下载FreeRTOS源码 2.1. ...

  6. uboot的移植——移植uboot官方的uboot到x210开发板

    以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除. 参考内容 uboot--官网下载直接移植(一) - biaohc - 博客园 uboot--官网下载直接移植(二) - biaohc - ...

  7. 【tinyriscv verilator】分支移植到正点原子达芬奇开发板

    我是 雪天鱼,一名FPGA爱好者,研究方向是FPGA架构探索和数字IC设计. 关注公众号[集成电路设计教程],获取更多学习资料,并拉你进"IC设计交流群". QQIC设计& ...

  8. 在旭日X3派开发板上使用Intel Realsense深度相机

    在前文<多方位玩转"地平线新发布AIoT开发板--旭日X3派(Sunrise x3 Pi)" 插电!开机!轻松秒杀!>中,我们已经成功了使用了这个开发板. 深度相机目前 ...

  9. opencv 全志_移植opencv人脸识别到全志A10开发板上 +linux3.0内核

    移植opencv人脸识别 libz:    zlib-1.2.3 libjpeg:   jpegsrc.v6b libpng:   libpng-1.2.18 libyasm:   yasm-0.7. ...

最新文章

  1. 【SAP-PM模块】预防性维护业务流程
  2. 11个强大的Visual Studio调试小技巧
  3. markdown中添加锚点
  4. 循环次数几次_圆柱模板循环使用次数是多少呢
  5. Java集合---Arrays类源码解析
  6. 精雕道路怎么遍弧形_【养护技术】道路“创可贴”——沥青冷补料 六大优势助力道路养护...
  7. PHP中对hmac_sha1签名算法的实现方法
  8. Problem B: C语言习题 学生成绩输入和输出
  9. Python中添加中文注释报错SyntaxError: Non-UTF-8 code starting with '\xc1'
  10. mathematic语法基础
  11. IOS - 苹果微信不打开收不到新消息提醒怎么办?
  12. 《财富自由》平民出身的富豪积累财富的原则和方法
  13. (二)流(Stream)
  14. DDU(Display Driver Uninstaller) 18.0.3.5 显卡驱动彻底卸载清理工具,支持卸载NVIDIA, AMD, Intel
  15. 335游戏C/S登录器,补丁更新、自动登录、信息手册
  16. 目标拎不清,谈什么选择呢?
  17. python 成语接龙
  18. 【MSP430】MSP430F5529关于ADC12模数转换介绍
  19. Python 爬虫 中国行政区划信息爬取 (初学者)
  20. 科成计算机系学习部,学习部

热门文章

  1. Linux构建高效FTP服务器
  2. 【随记】Flink 时间窗口的起始时间
  3. Jenkins- Jenkins的代理
  4. 百度地图怎么添加公司地址标注
  5. 独立成分分析(Independent Component Analysis,ICA)模型介绍
  6. 旋转动画出现停顿解决方法
  7. 容山堂简介及企业文化
  8. 未登录词(Out Of Vocabulary)识别
  9. 这家医院用这种方式致敬100余位逆行者,感谢他们对湖北的付出
  10. GitHub 报错 10054 Timeout