当前位置: 首页 > news >正文

RTThread-Nano学习一-基于MDK移植

一、简介

        关于RTThread-nano的介绍,这里不做过多解释,官方文档已经介绍的非常详细了,有兴趣的可以参考如下文档:RT-Thread 文档中心

二、移植

1.准备一个能正常运行的代码               

        手头有M0内核的板子,那就以M0内核来进行演示。

        代码可正常运行。

2.Nano Pack安装

        ①在MDK中安装

        打开MDK软件(keil),点击工具栏的Pack Installer图标。

        点击右侧的Pack,展开Generic

        展开RealThread::RT-Thread,点击Install进行安装。

        注:如果“install”按键无法点击,可能是因为网络不行,稍作等待,如果还不行,选择②中的手动烧录。

        

        点击“Next”。

        安装成功。

        ②手动安装

        从官网下载安装文件。https://www.rt-thread.org/download/mdk/RealThread.RT-Thread.3.1.5.pack

        下载完成后,双击下载文件进行安装。

        软件会自动找到keil包的路径,直接点击“Next”。

        安装完成后,MDK就会提示有新的包,直接点“是”

        在MDK中打开Pack Installer,确定RTThread-nano是否安装成功。

        可以看到,已经安装成功。

3.添加RT-Thread Nano到工程。

        打开正常运行的工程,点击Manage Run-Time Environment

        在RTOS中,勾选kernel,然后点击OK,即可完成RT-Thread内核的添加。

        注:因为我们只需要Nano,所以只添加kernel即可

        可以看到,在工程文件列表中,已经可以看到RTThread内核相关的文件了。

4.适配RT-Thread Nano

        ①中断与异常处理

        先编译一下工程,如果提示HardFault_Handler(异常处理函数)PendSV_handler(悬挂处理函数)重复定义,则表示删除原工程中的这两个函数,如果未报错,则不用修改。

        因为移植后,RT-Thread已经实现了这两个函数,有可能会与原工程冲突,所以需要处理一下。

        ②系统时钟配置。

        熟悉RTOS的同学都知道,RTOS是需要底层一个tick时钟来提供节拍,rtt-nano也是如此

        刚才编译的时候报错,就是提示开发者需要在board.c中实现系统时钟配置(为MCU、外设提供工作时钟)与os_tick配置(未操作系统提供心跳/节拍)

        在rt_hw_board_init函数中,初始化MCU的系统时钟

        在系统中断中,调用rt_os_tick_callback函数,来为RTT-NANO提供底层节拍

        ③内存堆初始化

        系统内存堆的初始化在board.c中的rt_hw_board_init函数中完成。内存堆功能是否使用取决于宏 RT_USING_HEAP 是否开启,RT-Thread Nano 默认不开启内存堆功能,这样可以保持一个较小的体积,不用为内存堆开辟空间。

        开启系统 heap 将可以使用动态内存功能,如使用 rt_malloc、rt_free 以及各种系统动态创建对象的 API。若需要使用系统内存堆功能,则打开 RT_USING_HEAP 宏定义即可,此时内存堆初始化函数 rt_system_heap_init() 将被调用。

        这里可以直接设置堆的大小,根据应用场景进行设置。

        如果不需要使用RTT-NANO的堆操作,可以直接在rtconfig.h文件中屏蔽RT_USING_HEAP。屏蔽后,会节省很多空间。

        至此,移植完成。

5.测试代码

        移植完成之后,main函数就转变成一RT-Thread操作系统的一个线程

        在main中添加RTT-nano的头文件<rtthread.h>。修改原来的代码,将delay函数修改为rtt可使用的rt_thread_mdelay函数。

        查看运行结果:

        正常运行。

        需要注意的是,加入rtt之后,已经是线程工作了,不能使用MCU自带的delay函数来死等,会占用CPU资源,导致其他线程无法运行

        6.配置RT-Thread Nano

        用户可以根据自己的需求通过修改rtconfig,h文件里面的宏定义,来配置相应功能

        如果开启RT_USING_HEAP,创建任务时,则会动态提供内存。如果未开启,则只支持静态方式创建任务、信号量等对象

         MDK提供了配置向导,可以直接勾选参数,来对rtconfig.h文件进行配置

        至此,第一阶段已经完成,后面会通过实例,来介绍RTT-Nano要怎么使用。


http://www.mrgr.cn/news/50075.html

相关文章:

  • 基于Arduino的车辆门禁管理系统
  • Python中的itertools模块详解
  • 试着了解YOLOx
  • Web3的挑战与机遇:技术发展的现状分析
  • CSS背景调整
  • 【Pycharm系列】如何使用Windows的pycharm来远程连接linux做开发?
  • 架构师之路-学渣到学霸历程-12
  • Android Studio简易项目|随机选择器(类似转盘)
  • 获取京东商品历史价格接口item_history_price介绍
  • 最大化似然估计?你知道什么叫”似然“吗?
  • Spring 实现 3 种异步流式接口,干掉接口超时烦恼
  • 预训练模型的使用方法
  • 如何在node.js中做快速傅立叶变换-(频谱)
  • SLAM中的加权最小二乘法
  • 解析:ARM 工业计算机在光伏储能中的关键作用
  • Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
  • gbase8s之建表相关问题
  • C语言:在Visual Studio中使用C语言scanf输入%s出现的栈溢出问题
  • 量子噪声与量子操作
  • 谷歌浏览器主题和皮肤设置教程