【GD32L233C-START 评测】-移植Freertos实时系统
[复制链接]
GD32L233C系统资源配置了256KB的flash和32KB的SRAM,可以使用Freertos,在实时系统中操作模块比较方便。我们先移植这个实时系统。
- 源文件准备,可以到freertos官网上下载。下载使用FreeRTOSv202112.00.zip版本。打包名称已改变,内部版本号为FreeRTOS Kernel V10.4.6。
https://www.freertos.org/
- 与FreeRTOS内核有关的文件数量仅为6个,分别是list.c queue.c tasks.c croutine.c timers.c,event_groups.c该文件位于FreeRTOS\Source
- 与内存分配有关的文件,GD32L233C选择heap_4.c。该文件位于Source\portable\MemMang。
- 与移植相关的代码包括port.c,portmacro.h。这些代码不但和编译器有关还和平台(MCU)有关。FreeRTOS先以编译器为大类,然后再以平台(MCU)为小类。在这里选择Keil编译器,平台为内核Cortex-M23。FreeRTOS内核提供了ARMv8-M和GCC下的 ARM_CM23移植代码,可以在安全或非安全端运行,运行在非安全端,用户任务可以调用安全端软件导出的函数。我使用非安全模式,所以选择文件位于FreeRTOS\Source\portable\GCC\ARM_CM23_NTZ\non_secure。
- 除了上述内容之外,还包括FreeRTOS内核相关的头文件。该文件FreeRTOS\Source\include。
- 在工程中加入Freertos文件。
- 在工程中加入Freertos文件的头文件路径
- 编译,提示错误,没有FreeRTOSConfig.h文件。编写该文件对内核的配置,需要FreeRTOSConfig.h中的相关宏定义。从demo中拷贝一个FreeRTOSConfig.h到工程目录下进行修改即可。
- 再编译
在gd32123x.it.c中定义了这几个函数,在gd32123x.it.c去掉再编译。
- 出现下列错误
1),vApplicationGetIdleTaskMemory此函数在我们使用静态方法去创建任务的时候会用到.使用静态方法去创建任务后即configSUPPORT_STATIC_ALLOCATION宏定义为1后.
2),FreeRTOS中有个宏configCHECK_FOR_STACK_OVERFLOW用来检测堆栈溢出,配置为0就不用管它了,配置其他需要在检测堆栈溢出后调用钩子函数。这个对调试作用非常大,应该开启。
在main.c文件中添加钩子函数。
在编译就没有问题了
- 添加任务
实现led控制任务
4个led等来回点亮,形成来回跑步。
编译下载,达到预期。
|