查看: 1118|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-19 21:11
  • 签到天数: 66 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2023-7-8 12:12:53 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 feifeiz 于 2023-7-8 18:54 编辑

    一、      前言

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

    RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。
    在资源足够的情况下可移植finsh组件,如下为RT-Thread软件框图:
    1.png

    RT-Thread Nano 支持可裁剪,通过rtconfig.h进行,在本次使用过程中也会用到,需要裁剪一些功能。
    同时最关心的就是RT-Thread Nano的使用资源情况了,对 RAM 与 ROM 的开销非常小,在支持 semaphore 和 mailbox 特性,并运行两个线程 (main 线程 + idle 线程) 情况下,ROM 和 RAM 依然保持着极小的尺寸,RAM 占用约 1K 左右,ROM 占用 4K 左右,但实际可能不止,接下来就开始RT-Thread的移植。

    三、   移植过程准备工作下载好RT-Thread Nano版本的源码,或者使用keil中下好RT-Thread实时操作系统的支持包(这种方式方便使用)。
    2.png

    准备好基础工程,本次使用的是SYSTEM的例程,因为在移植过程中需要使用systick时钟,同时systick的程序支持串口和LED方便验证移植是否成功,本次选用的是上一次的驱动工程。
    3.png

    添加RT-Thread源码:
    点击首界面软件包管理图标:
    4.png

    在RTOS下选择RT-Thread的内核源码,然后点击OK
    5.png

    根据以往移植经验,RT-Thread默认使用动态内存堆栈,这样会导致芯片资源不够用,所以需要RT-Thread进行裁剪,不使能动态堆栈,打开rtthreadconfig.h,找到#define RT_USING_HEAP,屏蔽掉这行代码
    6.png

    或者在RT-Thead内核源码board.c中将RT-HEAP_SIZE改为当前芯片所支持的大小
    7.png

    接下来board.c中rt_hw_board_init函数中添加时钟初始化,为rtos提供心跳,
    8.png

    同时添加systick的头文件
    9.png

    接下来在systick文件中,SysTick_Handler函数中添加心跳回调函数,同时需要在systick文件中添加rtthread的头文件。


    10.png
    接下里在main.c中加入rtthread的头文件,并将芯片的延时换成RTOS的延时
    11.png

    这里说一下,上次LED不能亮所以后面自己重换了一颗电阻和LED,将原来的4.7K电阻换成2K,红色LED换成绿色LED后就能正常工作。

    13.jpg
    四、      总结

    本次基于MM32SPIN0230芯片上移植了RT-Thread并且正常运行,由于芯片资源不能使能HEAP,同时后面新建线程的时候只能创建静态线程,后面的开发工作就基于RT-Thread进行开发了,还是挺有意思,只是添加了RTOS内存少了一些,但简单应用不影响。加上电机控制工程的代码以及RTOS的代码,共使用了10K的Flash和3K的RAM,有兴趣的小伙伴也可一起玩起来。





    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-5-3 07:56 , Processed in 0.111720 second(s), 17 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.