OpenMCU(二):GD32E23xx FreeRTOS移植

概述

本文主要描述了GD32E230移植FreeRTOS的简要步骤。移植描述过程中,忽略了Keil软件的部分使用技巧。默认读者熟练使用Keil软件。本文的描述是基于OpenMCU_FreeRTOS这个工程,该工程已经下载放好了移植GD32E230 FreeRTOS的所有文件

OpenMCU_FreeRTOS工程的愿景主要有:

1.、能移植支持主流mcu的freeRTOS

2、深入分析FreeRTOS代码和第三方库代码,让嵌入式学习变得非常容易;

3、集成一些嵌入式产品中常用的第三方库文件,并且该工程会开发做一些产品原型,所有的技术方案,就像它的名字一样,全部开源。

移植步骤

1、keil创建GD32E230的工程

注意:一定要选中RTE中CMSIS中的CORE部分

2、工程创建完毕后,在keil中建立分组管理,如下所示:

创建完成后的效果:

4、下载FreeRTOS源码

本文在描述过程中,所有的源码都是基于OpenMCU_FreeRTOS工程。文章的最后部分,有该工程的链接。

5、在刚才新创建的keil GD32E230工程目录下创建Appication文件夹和Utilities文件夹

6、将如下文件拷贝到Application文件夹下面.

7、将如下文件拷贝到Utilities文件下下面

注:

拷贝的文件都来自于OpenMCU_RTOS工程;读者可以通过文章最后的连接,获得工程源码。

8、Application分组添加c文件

9、CMSIS添加system_gd32e23x.c C文件,文件存放的路径为:

OpenMCU_FreeRTOS\arch\GD32\GD32E23x\CMSIS\GD\GD32E23x\Source\

10、添加GD32E23x BSP驱动文件,文件路径为:

OpenMCU_FreeRTOS\arch\GD32\GD32E23x\GD32E23x_BSP\Source

11、添加启动文件startup_gd32e23x.s

文件路径:OpenMCU_FreeRTOS\arch\GD32\GD32E23x\CMSIS\GD\GD32E23x\Source\ARM\startup_gd32e23x.s

12、添加freeRTOS内核C文件,文件路径为:

OpenMCU_FreeRTOS\kernel

13、添加内核移植中的与GD32E230相关的代码

由于GD23E230基于Cortex-M23架构,这部分代码跟Cortex-M4和Corex-M0的架构的移植不同,有安全和非安全的区别,我们基于非安全并且不开启ARM TrustZone特性进行讲解描述;

需要关注的文件路径:

port.c文件:OpenMCU_FreeRTOS\kernel\portable\ARMv8M\non_secure

portasm.c: OpenMCU_FreeRTOS\kernel\portable\ARMv8M\non_secure\portable\GCC\ARM_CM23_NTZ

heap_4.c: OpenMCU_FreeRTOS\kernel\portable\MemMang

FreeRTOSConfig.h: GD32E230\Application

14、所有分组添加完后如下图所示:

15、添加编译时的头文件路径

1、Application

2、OpenMCU_FreeRTOS\arch\GD32\GD32E23x\CMSIS\GD\GD32E23x\Include

3、OpenMCU_FreeRTOS\arch\GD32\GD32E23x\CMSIS

4、OpenMCU_FreeRTOS\arch\GD32\GD32E23x\GD32E23x_BSP\Include

5、Utilities

6、OpenMCU_FreeRTOS\kernel\include

7、OpenMCU_FreeRTOS\kernel\portable\ARMv8M\non_secure

8、OpenMCU_FreeRTOS\kernel\portable\ARMv8M\non_secure\portable\GCC\ARM_CM23_NTZ

添加完成后,如下所示:

16、编译器选项设置

加入GD32E230定义和修改编译警告级别

17、修改gd32e23x_it.c文件中的如下函数定义

删除SVC_Handler, PendSV_Handler SysTick_Handler 等函数定义

18、修改FreeRTOSConfig.h文件,将堆内存修改为5KB

由于整个GD32E230系列的SRAM配置如下如所示:

因此,将FreeRTOS的堆内存调整为5KB(程序本身加载也占用内存,调整过大,会导致程序链接编译错误)

19、编译输出

工程连接

yanl1229/OpenMCU_FreeRTOS

相关推荐
xyx-3v4 小时前
VS CodeC51 单片机开发环境搭建
单片机·嵌入式硬件
iCxhust6 小时前
c# U盘映像生成工具
开发语言·单片机·c#
小宋同学在不断学习7 小时前
stm32--SPI原理应用W25Q64(二)
stm32·单片机·spi
lingzhilab7 小时前
零知开源——STM32F4结合BMP581气压传感器实现ST7789中文显示教程
stm32·单片机·嵌入式硬件
夜月yeyue8 小时前
设计模式分析
linux·c++·stm32·单片机·嵌入式硬件
猫猫的小茶馆9 小时前
【STM32】外部中断
stm32·单片机·嵌入式硬件·mcu·51单片机
森焱森10 小时前
垂起固定翼无人机介绍
c语言·单片机·算法·架构·无人机
brave and determined11 小时前
国产MCU学习Day11——CW32F030C8T6 低电压检测器(LVD)详解与应用
单片机·嵌入式硬件·嵌入式·国产mcu·cw32f030c8t6·cw32f030c8t6lvd·低电压检测器
金色光环15 小时前
stm32与tp-linkv2接线、解决识别不到芯片问题
stm32·单片机·嵌入式硬件