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

2022-05-09 21:05:16 浏览数 (1)

接触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-threadbspstm32librariestemplates中,复制一份stm32f10x的模板到源码路径:rt-threadbspstm32,并修改其名字(我的修改为Rice_RT_Thread_stmf103c8t6)

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

4. 双击boardCubeMX_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-threadbspstm32Rice_RT_Thread_stmf103c8t6boardCubeMX_ConfigSrc的main.c,将SystemClock_Config函数,覆盖路径:rt-threadbspstm32Rice_RT_Thread_stmf103c8t6board的board.c的SystemClock_Config函数

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

7.打开工程路径:

rt-threadbspstm32Rice_RT_Thread_stmf103c8t6board的Kconfig,根据芯片,配置红框的内容。

8.打开工程路径:rt-threadbspstm32Rice_RT_Thread_stmf103c8t6board的SConscript,修改启动芯片和目标芯片,因为目录下rt-threadbspstm32librariesSTM32F1xx_HALCMSISDeviceSTSTM32F1xxSourceTemplatesarm和rt-threadbspstm32librariesSTM32F1xx_HALCMSISDeviceSTSTM32F1xxSourceTemplatesiar和rt-threadbspstm32librariesSTM32F1xx_HALCMSISDeviceSTSTM32F1xxSourceTemplatesgcc。没有startup_stm32f103x8.s的启动文件,所以选择startup_stm32f103xb.s。所以目标芯片也选择STM32F103XB

9.打开工程路径:rt-threadbspstm32Rice_RT_Thread_stmf103c8t6board,打开目录下的三个文件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-threadbspstm32Rice_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-threadbspstm32Rice_RT_Thread_stmf103c8t6dist,将工程拷贝到任意位置。

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

0 人点赞