【N32G430C8L7_STB开发板】FreeRTOS移植
本帖最后由 dirty123 于 2024-4-23 23:19 编辑本篇讲述N32G430C8L7_STB开发板 移植FreeRTOS。有用N32G43X官方移植发现与此开发板MCU库及函数等存在不兼容,这里单独移植。
一.了解与准备
1.芯片资源
MCU N32G430C8L7内部资源RAM:16KB,Flash:64KB,ARM Cortex™-M4F核,此是移植硬件基础。基于芯片资源在移植是注意裁剪。
2.FreeRTOS源码包
获取(1)官 网 : http://www.freertos.org/ (2)代 码 托 管 网 站 :https://sourceforge.net/projects/freertos/files/FreeRTOS/
二.移植,代码修改,创建demo任务
这里在前面串口打印逻辑工程上做移植,先把工程文件独立出来,调整路径后编译通过。
1.工程添加FreeRTOS源码
将FreeRTOS源码放到工程文件夹下,Keil添加源文件及路径,这里露出系统配置源文件FreeRTOSConfig.h。
图1:FreeRTOS源码添加
2.中断文件n32g430_it.c屏蔽SVC_Handler,PendSV_Handler ,它们在系统port.c定义了。修改SysTick_Handler在函数里添加如下
void SysTick_Handler(void)
{
if(xTaskGetSchedulerState()!=taskSCHEDULER_NOT_STARTED)//系统已经运行
{
xPortSysTickHandler();
}
}3.在FreeRTOSConfig.h裁剪配置
前面讲了MCU RAM 16KB,这里configTOTAL_HEAP_SIZE定义为8KB,其他地方可按需调整,这里注意下SystemClockFrequency为系统时钟频率
图2:裁剪配置
4.创建定时器初始化及延时函数,非必须项。实现在sys_tick.c,这里不细讲。
5.创建任务。在任务里间隔1s打印串口信息
xReturn=xTaskCreate((TaskFunction_t )demo_task, //任务函数
(const char* )"demo_task", //任务名称
(uint16_t )Demo_STK_SIZE, //任务堆栈大小
(void* )NULL, //传递给任务函数的参数
(UBaseType_t )Demo_TASK_PRIO, //任务优先级
(TaskHandle_t*)&DemoTask_Handler); //任务句柄
if(xReturn==pdPASS)
{
printf("\n\rCreate demo_task OK\n\r");
vTaskStartScheduler(); //开启任务调度
}
else
{
printf("\n\rCreate demo_task Fail\n\r");
}void demo_task(void *pvParameters)
{
while(1)
{
printf("\n Run demo_task\n\r");
vTaskDelay(1000);
}
}
三.编译烧录运行
烧录后串口日志如下,可以看到系统正常运行,移植成功。
图3:任务日志
至此,完成N32G430C8L7_STB开发板FreeRTOS移植。这里分享代码见附件,供大家参考学习。
FreeRTOS是一个开源的实时操作系统(RTOS),它可以在嵌入式系统中提供多任务调度、任务间通信、时间管理等功能。 对于N32G430C8L7_STB开发板,你可能需要使用特定的IDE或编辑器,如IAR Embedded Workbench、Keil MDK等。 在开发环境中创建一个新项目,选择N32G430C8L7作为目标芯片。 根据测试结果对系统进行优化,以提高系统的性能和响应速度。 获取N32G430C8L7的硬件规格书和软件开发包(SDK),以便在移植过程中参考。 在main函数中,调用FreeRTOS的初始化函数,如xTaskCreate来创建任务,vTaskStartScheduler来启动调度器。 可能需要根据实际情况调整FreeRTOS的配置,以及优化任务的实现。你可以使用开发板提供的调试工具来跟踪程序运行情况,找出潜在的问题并进行修复。 使用xTaskCreate()函数来创建任务。您需要指定任务函数、任务堆栈大小、任务优先级、以及任何需要传递给任务的数据。 现在已经转战RTTread了,支持国产。 根据N32G430C8L7_STB开发板的特性,配置FreeRTOS的配置文件(通常是FreeRTOSConfig.h)。这包括定义任务的数量、堆栈大小、优先级等。 将FreeRTOS的源代码文件夹添加到您的项目中。
配置工程使其包含FreeRTOS的头文件和库文件。 在FreeRTOS源代码中,有一些配置文件需要根据你的硬件和应用程序需求进行修改。这些文件通常包括FreeRTOSConfig.h等。在这个文件中,你可以配置任务的数量、堆栈大小、中断优先级等。 在完成移植后,进行充分的测试以确保系统的稳定性和可靠性。这可能包括单任务测试、多任务调度测试以及中断处理的测试。 flash有点小,跑RTOS如果代码长点空间不够了。 编译项目,确保没有错误或警告,并将程序下载到N32G430C8L7_STB开发板。 FreeRTOS依赖于中断来管理任务切换和一些内部机制(如Tick中断)。确保您的中断处理程序正确无误,并且没有被其他代码干扰。 安装了适用于N32G430C8L7的IAR或Keil MDK等开发环境,并配置好相应的交叉编译工具链。 根据测试结果,优化FreeRTOS配置,调整任务堆栈大小、中断优先级等,提高系统性能。 从官方网站下载FreeRTOS的最新源代码包。
页:
[1]
2