[评测分享]
【灵动Motor-DK电机控制板】+3.FreeRTOS移植
#板卡评测
2739 人阅读
|
0 人回复
|
2023-07-08
TA的每日心情 | 无聊 2024-10-11 22:04 |
|---|
签到天数: 67 天 连续签到: 1 天 [LV.6]常住居民II
进士
- 积分
- 1326
|
本帖最后由 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使用的是动态内存堆栈,如果有喜欢研究的小伙伴可以继续研究,我也继续查一下原因。
|
|
|
|
|
|
|
|
|