查看: 1950|回复: 0

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

[复制链接]
  • TA的每日心情
    无聊
    2024-10-11 22:04
  • 签到天数: 67 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2023-7-8 18:47:51 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 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接口和可配置选项,以适应不同的硬件平台和应用需求。
    1.png


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

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

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

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

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

    四、      总结

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

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

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-12-28 14:39 , Processed in 0.122313 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.