回答

收藏

[评测分享] 【灵动Motor-DK电机控制板】+3.FreeRTOS移植

#板卡评测 #板卡评测 2740 人阅读 | 0 人回复 | 2023-07-08

本帖最后由 feifeiz 于 2023-7-8 18:55 编辑

一、      前言
根据MM32SPIN0230芯片资源,最高60MHZ的主频,4K SRAM以及32K的Flash,于是乎就产生了一个想法,移植一个RTOS玩一玩,正好芯片资源也能支持,移植完应该也能做一些应用开发,建一些线程等,同时上一篇文章中移植了RT-Thread,同时也想着能不能跑一下FreeRTOS,所以本篇文章就讲解如何在MM32SPIN0230上移植Freertos。
二、      FreeRTOS简介

FreeRTOS是一个用于嵌入式系统的开源实时操作系统(RTOS)。它提供了一套轻量级、易于使用和可移植的内核,用于管理多任务并发执行、任务通信和同步。
实时调度:FreeRTOS为多任务应用程序提供可靠的实时调度,允许任务以优先级的方式并行执行,并根据任务优先级动态进行调度。
任务管理:FreeRTOS支持创建、删除和切换任务,可以根据应用程序的需求动态地创建和销毁任务。每个任务都具有自己的堆栈和上下文,独立于其他任务运行。
同步和通信:FreeRTOS提供了丰富的同步和通信机制,如信号量、互斥锁、消息队列和事件标志组,以便任务之间进行安全的数据共享和通信。
定时器:FreeRTOS具有高精度的软件定时器,可以按照设定的时间间隔触发回调函数,并执行特定的任务逻辑。
可移植性:FreeRTOS被设计为高度可移植的,可以在各种处理器架构和开发板上运行。它提供了通用的API接口和可配置选项,以适应不同的硬件平台和应用需求。



三、      移植过程准备工作
本次同样使用Keil添加源码包的形式添加FreeRTOS,这样可以省去很多麻烦,移植前需要准备一个基础工程,带LED闪烁的就可以,也可以加上串口。同时需要确保keil中已已经下载好了FreeRTOS的源码。


添加FreeRTOS源码:
点击首界面软件包管理图标:


添加内核源码,根据需求添加即可


由于操作系统接管了中断等,所以需要将mm32_it.c中的SysTick_Handler屏蔽


创建了线程,但是进入vTaskDelay会进入HardFault,找了好久没找到,查了一下使用的动态的内存堆栈,估计是内存不够,有喜欢研究的小伙伴可以继续研究,我把工程放出来。


四、      总结

本次基于MM32SPIN0230芯片上移植FreeRTOS,不过并不能正常的运行,会在VTaskDelay中触发HardFault,目测是由于内存太小导致,因为FreeRTOS使用的是动态内存堆栈,如果有喜欢研究的小伙伴可以继续研究,我也继续查一下原因。

MM32SPIN0230_FreeRTOS.zip (4.46 MB, 下载次数: 3)





分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条