【RT-Thread读书笔记】8. RT-Thread 学习13章读后感
[复制链接]
【RT-Thread读书笔记】8. RT-Thread 学习13章读后感 第13章 移植RT-Thread到STM32
野火专门为此书配套了对应的程序,大家可以下载学习,配套书籍,可以理解的更深。
我们可以参照基于野火STM32全系列(包含M3/4/7)开发板的的RT-Thread的工程模板,让RT-Thread先跑起来。后续就是修修补补,所以初创性劳动非常费力,后续就是维护和升级了。
1.下载RT-Thread Nano 源码
Nano是Master的精简版,去掉了一些组件和各种开发板的BSP,保留了OS的核心功能,但足够我们使用。本书使用的是3.0.3版本。
RT-Thread Master的源码可从RT-Thread GitHub仓库地址: 下载到,Nano就是从里面扣出来的。
另外也可以直接去keil官网上下载rt-thread nano的package. 建议是从github上下,或者用野火提供的代码。学习本书,尽量还是用野火给的rt-thread nano3.0.3来学习, 等熟练后可以自行搞master.
具体的添加过程,书中给了非常详尽的说明,这里不再赘述。
野火推荐我们直接将rt-thread代码拷贝到我们自己的工程中,方便release和维护。
一级文件夹 二级文件夹 描述
rtthread/3.0.3 bsp 板级支持包
components/finsh RT-Thread组件
include 头文件
include/libc
libcpu/arm/cortex-m0 与处理器相关的接口文件
libcpu/arm/cortex-m3
libcpu/arm/cortex-m4
libcpu/arm/cortex-m7
src RT-Thread内核源码
工程下我们可以按照下图建立:
然后,将RT-Thread/3.0.3/bsp文件夹下面的rtconfig.h配套文件拷贝到工程根目录下面的user文件夹,等下我们需要对这个文件进行修改。
用户可以通过修改这个RT-Thread内核的配置头文件来裁剪RT-Thread的功能,所以我们把它拷贝一份放在user这个文件夹下面。
拷贝board.c文件到user文件夹,需要修改。
bsp文件夹
里面存放的是板级支持包,即board support package的英文缩写。
如果为了减小工程的大小,bsp文件夹下面除了board.c和rtconfig.h这两个文件要保留外,其它的统统可以删除。
components文件夹
在RT-Thread看来,除了内核,其它第三方加进来的软件都是组件,比如gui、fatfs、lwip和finsh等。那么这些组件就放在components这个文件夹内,目前nano版本只放了finsh,其它的都被删除了,master版本则放了非常多的组件。finsh是RT-Thread组件里面最具特色的,它通过串口打印的方式来输出各种信息,方便我们调试程序。
include文件夹
目录下面存放的是RT-Thread内核的头文件,是内核不可分割的一部分。
libcpu文件夹简
存放的是硬件和软件之间的接口文件,涉及汇编和C,RT-Thread nano目前在libcpu目录下只放了cortex-m0、m3、m4和m7内核的单片机的接口文件,只要是使用了这些内核的mcu都可以使用里面的接口文件。
src文件夹
目录下面存放的是RT-Thread内核的源文件,是内核的核心。
-----------------------------------------------
添加RT-Thread源码到工程组文件夹
rtt/source用于存放src文件夹的内容,rtt/ports用于存放libcpu/arm/cortex-m?文件夹的内容,“?”表示3、4或者7,具体选择哪个得看你使用的是野火哪个型号的STM32开发板
我用的是F429-挑战者STM32F429IGT6 因此RT-Thread不同内核的接口文件选libcpu/arm/cortex-m4。
指定RT-Thread头文件的路径
这个按需添加,在keil魔术棒中添加。
修改rtconfig.h
rtconfig.h是直接从RT-Thread/3.0.3/bsp文件夹下面拷贝过来的,该头文件对裁剪整个RT-Thread所需的功能的宏均做了定义,有些宏定义被使能,有些宏定义被失能,一开始我们只需要配置最简单的功能即可。
其实就是一些注释,注释掉或者留下,书中写的很明确,也可以参照官网。
野火修改了:注释掉了
6 // #include "RTE_Components.h"
修改了:
12 #define RT_THREAD_PRIORITY_MAX 32
15 #define RT_TICK_PER_SECOND 1000
32 #define RT_MAIN_THREAD_STACK_SIZE 512
修改board.c
里面存放的是与硬件相关的初始化函数,按需修改。
添加core_delay.c和core_delay.h文件
只有在使用HAL库时才需要添加core_delay.c和core_delay.h文件。野火只在其M7系列的开发板使用了HAL,M4和M3使用的是标准库,不需要添加。我的不需要添加这些文件。
最后就是修改修改main.c
也没啥修改的,目前都是空的,创建线程是在第14章。这里就不在多说了,等明天分享第14章,感悟。
PS:大家还是看书,我这里也就是感悟笔记,把重点拎出来,Thanks
此内容由EEWORLD论坛网友传媒学子原创,如需转载或用于商业用途需征得作者同意并注明出处
|