打印
[应用相关]

RT-Thread移植到STM32F1步骤

[复制链接]
2982|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stm32jy|  楼主 | 2018-10-29 20:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
因为学习RT-Thread的原因,需要把RT-Thread移植到STMF103ZET6上,在RT-Thread官网下载的原文件中实际上已经STM32F10x的工程了,只需简单的几步就可以完成在STM32F103ZET6上的运行,为了看到RTT的强大,我们还是得亲自动手。


沙发
stm32jy|  楼主 | 2018-10-29 20:42 | 只看该作者
利用Keil5,新建一个工程,然后在工程中添加RT-Thread中的文件。

使用特权

评论回复
板凳
stm32jy|  楼主 | 2018-10-29 20:44 | 只看该作者
在RT-Thread官方网上下载操作系统源码(https://www.rt-thread.org/page/download.html)
这里我下载的是2.0.1版本,结构如下:



使用特权

评论回复
地板
stm32jy|  楼主 | 2018-10-29 20:44 | 只看该作者
Bsp ---- 板级支持包,针对不同的板子规划出的不同的驱动文件

使用特权

评论回复
5
stm32jy|  楼主 | 2018-10-29 20:44 | 只看该作者
components ---- 包含RT-Thread的各个组件:finsh、文件系统等*;

使用特权

评论回复
6
stm32jy|  楼主 | 2018-10-29 20:45 | 只看该作者
documentation ---- 一些介绍性文档,包括代码的风格要求;

examples ---- 各种示例代码,是很好的学习素材;

使用特权

评论回复
7
stm32jy|  楼主 | 2018-10-29 20:45 | 只看该作者
include ---- 一些头文件;

libcpu---- 各种CPU体系结构下的相关移植;

src ---- RT-Thread内核核心代码;

使用特权

评论回复
8
stm32jy|  楼主 | 2018-10-29 20:45 | 只看该作者
tools ---- 使用Scon自动化创建工具时需要的一些文件;

AUTHORS ---- RT-Thread开发者列表;

COPYING ---- 权限说明;

使用特权

评论回复
9
stm32jy|  楼主 | 2018-10-29 20:46 | 只看该作者
在桌面上建立一个 RT-Thread2.0.1_STM32F103ZE 文件夹,打开 RT-Thread2.0.1_STM32F103ZE 文件夹,建立以下文件夹:
application :存放应用程序

bsp :存放板级支持包和底层驱动

components :存放操作系统组件

DeviceDrivers :设备框架

libcup :各种不同CPU的内核代码

MDK-OBJ :存放kile5在编译过程中生成的中间文件

RT_Thread-2.0.1 :存放操作系统的相关文件



使用特权

评论回复
10
stm32jy|  楼主 | 2018-10-29 20:47 | 只看该作者
完成后如下图所示:

使用特权

评论回复
11
stm32jy|  楼主 | 2018-10-29 20:52 | 只看该作者
目录定位到桌面上的 RT-Thread2.0.1_STM32F103ZE  过程名称为 RTT_F103ZE 选择芯片 ST32F103ZE

Options for Target >>> Target >>> 设置外部晶振8.0MHz

使用特权

评论回复
12
stm32jy|  楼主 | 2018-10-29 20:52 | 只看该作者
Options for Target >>> Output >>> Select Folder for Objects >>> 定位到  桌面:RT-Thread2.0.1_STM32F103ZE\MDK-OBJ目录下

使用特权

评论回复
13
stm32jy|  楼主 | 2018-10-29 20:53 | 只看该作者
Options for Target >>> Listing >>> Select Folder for Objects >>> 定位到  桌面:RT-Thread2.0.1_STM32F103ZE\MDK-OBJ目录下

Options for Target >>> c/c++ >>> 添加宏定义 STM32F10X_HD, USE_STDPERIPH_DRIVER(逗号隔开)

使用特权

评论回复
14
stm32jy|  楼主 | 2018-10-29 20:53 | 只看该作者
Options for Target >>> Linker >>> Misc controls >>> 添加 --keep __fsym_* --keep __vsym_*   --keep __rt_init*(保证编译时不会滤除掉工程没有调用的代码)

暂时就这样,其余项保持默认就好,等在工程目录下添加完文件后再建立工程结构,和添加头文件搜索路径就好了

使用特权

评论回复
15
stm32jy|  楼主 | 2018-10-29 20:54 | 只看该作者
开始添加各个文件(根据之前建立的工程文件夹中的目录含义添加文件,这样比较有条理)2.0.1\bsp\stm32f10x\applications >>> Desktop\RT-Thread2.0.1_STM32F103ZE\application

application.c 、startup.c

2.0.1\bsp\stm32f10x >>> Desktop\RT-Thread2.0.1_STM32F103ZE\bsp

drivers 、Libaries

2.0.1\bsp\stm32f10x >>> Desktop\RT-Thread2.0.1_STM32F103ZE\RT_Thread-2.0.1

rtconfig.h

2.0.1\components >>> Desktop\RT-Thread2.0.1_STM32F103ZE\components

除drivers外的全部文件

2.0.1\components >>> Desktop\RT-Thread2.0.1_STM32F103ZE\DeviceDrivers

drivers

2.0.1\libcpu\arm >>> Desktop\RT-Thread2.0.1_STM32F103ZE\libcup

common 、cortex-m3

2.0.1 >>> Desktop\RT-Thread2.0.1_STM32F103ZE\RT_Thread-2.0.1

src 、include


使用特权

评论回复
16
stm32jy|  楼主 | 2018-10-29 20:54 | 只看该作者
这里在 2.0.1\components目录下有一个叫drivers 的文件夹,按照他的意思应该是设备驱动框架相关文件,但是有一点不理解为什么放在组件文件夹下;所以在复制过程中我把它单独拿了出来,放在了Desktop\RT-Thread2.0.1_STM32F103ZE\DeviceDrivers文件夹下,比较适合我来理解,该目录下还有一个叫CMSIS的文件夹,暂时也不知道是干什么的,就一起放在Desktop\RT-Thread2.0.1_STM32F103ZE\components下了;在2.0.1\bsp\stm32f10x 目录下也有一个叫 drivers 的文件夹,这个文件夹实际上就是存放了符合设备框架的板级驱动,这样应用程序就可以控制各种设备了。我们以后也可以写自己的板级驱动,然后这样在应用中就可以调用不同的设备。这里工程的架构差不多就出来了,打开之前建立的工程,打开Manage Project Items开始添加文件


使用特权

评论回复
17
stm32jy|  楼主 | 2018-10-29 20:55 | 只看该作者
添加工程文件以及设置头文件搜索路径
application :application.c  starup.c

文件就在原文件夹application下
bsp :stm32库函数所有*.c源文件(stm32f10x_adc.c stm32f10x_rcc.c.....)  core_cm3.c  system_stm32f10x.c  startup_stm32f10x_hd.s   stm32f10x_conf.h(这里是为了比较好修改)   stm32f10x_it.c

这些文件在bsp目录下都可以找到
components :  components.c

在components/init目录下
DeviceDrivers : DeviceDrivers >>> driver >>> src 下的全部文件    DeviceDrivers >>> driver 下用到哪个设备框架就加哪个设备原文件(这里加了serial,因为要用到串口)  

DeviceDrivers >>> driver 目录下都可以找到
contex-m3 :  backtrace.c  div0.c  showmem.c  context_rvds.S  cpuport.c

libcpu目录下都可以找到
RT-Thread-2.0.1 :RT_Thread-2.0.1 >>> src 目录下所有文件

RT_Thread-2.0.1 >>> src 目录下可以找到
finsh : components >>> finsh目录下所有*.c文件

components >>> finsh目录下都能找到


Drivers : board.c  led.c  usart.c



bsp >>> drivers目录下都可以找到



使用特权

评论回复
18
stm32jy|  楼主 | 2018-10-29 20:56 | 只看该作者
编译烧写,验证 大功告成。

使用特权

评论回复
19
一路向北lm| | 2018-10-29 21:01 | 只看该作者
写的不错,不过现在都有3.03版本了

使用特权

评论回复
20
stm32jy|  楼主 | 2018-10-30 19:48 | 只看该作者
一路向北lm 发表于 2018-10-29 21:01
写的不错,不过现在都有3.03版本了

用的比较旧的版本了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

1118

帖子

4

粉丝