前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RT-Thread 如何移植RTT到stm32《Rice RT-Thread 学习开发》

RT-Thread 如何移植RTT到stm32《Rice RT-Thread 学习开发》

作者头像
Rice加饭
发布2022-05-09 21:05:16
1.2K0
发布2022-05-09 21:05:16
举报
文章被收录于专栏:Rice嵌入式Rice嵌入式

接触RT-Thread也是一次偶然的机会,之前认识了一群网友,他们都是深圳的,然后我们这群网友本来打算去参加RTT的一个比赛,所以就约出来交流,我对RTT一脸懵逼,虽然后面我没有加入去参加比赛,但是那天听他们说完,我很兴奋,打算自己也来搞一下,移植一下这个系统,这个系统是开源的,所以你想怎么搞就怎么搞。

搞他之前,你要先做好准备,作案工具必备不可缺。

一、硬件材料。

① stm32f103c8t6开发板一快(这个板子把我带入电子行业的坑)

② J-Link仿真器一个

二、软件工具

1.安装MDK5(下载链接:https://pan.baidu.com/s/11K-sYFalKa77eKMBLir7HQ,提取码:h2om)

2.env工具(https://www.rt-thread.org/page/download.html):Env工具包括配置器和包管理器,用来对内核和组件的功能进行配置,对组件进行自由裁剪,对线上软件包进行管理,使得系统以搭积木的方式进行构建,简单方便。

3.CubeMX工具(ST官网下载,提示:安装CubeMX需要安装java环境):ST公司推出的一种自动创建单片机工程及初始化代码的工具

CubeMX、java、Env我已经打包好:(下载路径:https://pan.baidu.com/s/1ItD19Q8fKHf1lzAspN-exQ,提取码:pusf)

三、制作stm32f103c8t6的 BSP

1. 从RT-Thread的github上clone下源码(git@github.com:RT-Thread/rt-thread.git)

2. 从源码路径:rt-thread\bsp\stm32\libraries\templates中,复制一份stm32f10x的模板到源码路径:rt-thread\bsp\stm32,并修改其名字(我的修改为Rice_RT_Thread_stmf103c8t6)

3.打开Rice_RT_Thread_stmf103c8t6,将里面的内容删减剩下红框的内容

4. 双击\board\CubeMX_Config下CubeMX_Config.ioc。

修改芯片类型,点击箭头指向的地方。

输入stm32f103c8,然后双击选择芯片

配置RCC,如图红框所致

配置SYS,如图红框所致

配置UART,如图红框所致

点击Clock Configuration,配置时钟,如图红框所示。

配置完后,点击Project Manager,配置如图红框所示,记得这篇文章的教程是基于KEIL 5,所以选择MDK-ARM V5。然后点击GENERATE COODE。等待完成。

将CubeMX_Config目录下删减剩下红框的内容,将Drivers和MDK-ARM删除

5.打开工程路径:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\board\CubeMX_Config\Src的main.c,将SystemClock_Config函数,覆盖路径:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\board的board.c的SystemClock_Config函数

6.打开工程路径:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\board的board.h,其中stmf103c8t6的FLASH是64k,RAM是20k,然后将其配置到红框中。

7.打开工程路径:

\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\board的Kconfig,根据芯片,配置红框的内容。

8.打开工程路径:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\board的SConscript,修改启动芯片和目标芯片,因为目录下\rt-thread\bsp\stm32\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm和\rt-thread\bsp\stm32\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\iar和\rt-thread\bsp\stm32\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\gcc。没有startup_stm32f103x8.s的启动文件,所以选择startup_stm32f103xb.s。所以目标芯片也选择STM32F103XB

9.打开工程路径:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\board,打开目录下的三个文件link.icf、link.lds、link.sct。根据芯片的flash个ram大小进行修改,stm32f103c8t6的flash是64k(0x00010000),ram是20k(0x00005000).

其中link.icf修改__ICFEDIT_region_ROM_end__和__ICFEDIT_region_RAM_end__

link.lds修改flash和sram的LENGTH.

link.sct 修改flash和sram的大小。

10.打开工程路径:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6的template.uvprojx,修改对应的芯片。

选择烧录方式:

插入J-Link出现如图所示,说明成功。

因为没有64k,所以选择128k。(苦逼)

11.打开env工具,首先进入工程所在的盘符,然后cd到自己的工程中。如图所示。

12.输入menuconfig,确认GPIO、UART是否打开。

13.输入scons –target=mdk5,重新生成工程

14.双击工程文件没打开工程。

15.打开main.c,因为我所用的板子上PC13接了一颗LED,所以修改一下代码。

点击编译

下载程序

烧录玩,板子的灯就一闪一闪亮晶晶。

16.以上的移植过程都是RT-Thread的源码上做的,太多文件夹了,如果你先将工程分离出来,输入scons –dist。等待。。。。。。

生成完之后,可以在工程路径下:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\dist,将工程拷贝到任意位置。

这个系统强不强大,后续体验了再分享,唯一让我震撼的是,大学一直玩的这款stm32居然也能上系统。哈哈哈。以前知道的太少了。现在可以试下在stm32上跑多线程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rice 嵌入式开发技术分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档