1本文的目的和结构
1.1本文的目的和背景
rt-thread 完全开源开放,支持几十款 bsp,支持多种编译器,支持众多基础组件以及数量持续增长的软件包,然而对于工程项目开发来说,只需要支持一款或者有限几款 mcu,使用一种熟悉的 ide 开发环境,使用有限的外设和组件,本文档旨在指导用户在全功能 rt-thread 版本基础上,根据项目需求搭建 rt-thread 工程框架。
1.2本文的结构
本文首先介绍了一下必须的准备工作,然后介绍了如何使用 rt-thread 提供的 env 工具配置工程,最后介绍了如何添加自己的应用代码和管理自己的模块。
2准备工作
下载 rt-thread 源代码。
准备 env 开发环境
安装好 mdk 软件或者 iar 软件。
3标准工程管理
3.1选择 bsp
用户获取 rt-thread 源代码后就可以根据自己手上的开发板型号找到对应的 bsp,就可以运行 bsp 提供的默认工程了。大部分 bsp 都支持 mdk﹑iar 开发环境和 gcc 编译器,并且已经提供了默认的 mdk 和 iar 工程。
本文后续章节将使用正点原子 stm32f4 探索者开发板演示相关操作。此开发板 mcu 型号是 stm32f407zgt6,对应使用的 bsp 为 stm32f4xx-hal,在 rt-thread 源代码的 bsp 目录下。
这个 bsp 支持 mcu 型号为 stm32f4xx 的 开发板, 默认使用串口 2 作为 shell 控制台输出使用串口,用户可以查看 readme.md 文件查看自己开发板使用的串口。本文使用 segger jlink 连接 jtag 调试,使用 usb slave(usart1)供电。
3.2搭建项目框架
打开 env 工具进入 stm32f4xx-hal 目录,运行scons --dist命令。使用此命令会在 stm32f4xx-hal bsp 目录下生成名为 dist 目录,这便是开发项目的目录结构,rt-thread 源码位于项目文件夹内,仅包含stm32f4xx-hal 的 bsp,可以随意拷贝到任何目录下运行。
3.3修改工程模板
对工程的一些基本配置,用户需要针对自己的需求做一些工程配置,比如配置 mcu 型号,设置调试选项等。建议大家直接修改工程模板,这样下面阶段生成的新工程,也都会包含对模板的修改,mdk 的模板工程为 template.uvprojx。iar 的模板工程为 template.eww,注意 iar 工程模板这样修改可能会导致生成的新工程低版本 iar 软件用不了。
下图为修改 mdk 工程模板文件的芯片型号示例。
然后根据自己使用的调试工具选择对应的调试选项,相关配置修改完成后就可以关闭模板工程。
注意:有其他需要对工程配置进行修改的地方都建议修改模板文件,但是自己应用代码的添加不建议在工程模板里添加。
3.4配置和裁剪 rt-thread
每个 bsp 下的工程都有默认的配置,比如系统内核支持的最大线程优先级、系统时钟频率、使用的设备驱动、控制台使用的串口等。rt-thread 操作系统具有高度的可裁剪性,用户可以根据自己的需求使用 env 工具进行配置和裁剪。
双击 env.exe 打开配置界面,然后使用cd d:
epository
t-threadspstm32f4xx-hal命令进入 bsp 工程目录,cd 后面跟用户自己的工程目录。然后在使用menuconfig命令打开配置界面。
menuconfig 常用快捷键如图所示:
3.5使能在线软件包
下图使能了 mqtt 相关的软件包。
3.6生成工程
配置工程后都使用scons --target=mdk5命令或者scons --target=iar命令生成 mdk 或者 iar 工程。如果大家直接修改 mdk 工程文件 project.uvprojx 或者 iar 的工程文件 project.ewww 添加自己的代码,或者修改工程的一些基本配置,生成的新工程会覆盖之前对工程文件 project 的手动修改。
打开新生成的 mdk 工程 project.uvprojx ,可以看到我们选择的 paho mqtt 相关的软件包源文件已经被添加到了工程中。
3.7验证工程
编译工程,生成目标代码,然后就可以下载至开发板运行。本文使用终端软件 putty 接收工程控制台对应串口 2 发送的数据,电脑右键→属性→设备管理器→端口(com 和 lpt),即可查看串口 2 对应的 com 号,本文为 com14。打开 putty 按照下图配置,波特率一般配置为 115200。
点击 open 打开,重启开发板后会看到 rt-thread 的启动 logo 信息。
3.8添加文件到工程
bsp 下的 applications 文件夹用于存放用户自己的应用代码,目前只有一个 main.c 文件。如果用户的应用代码不是很多,建议相关源文件都放在这个文件夹下面,本文在 applications 文件夹下新增了 2 个简单的文件 hello.c 和 hello.h。
/*file:hello.h*/
模块化机柜 vs.一体化机柜
从非洲到全球,看华为云连接CC如何助力出海企业更好发展
统信软件宣布书生电子公司两款产品已完成与UOS的适配工作 测试结果显示可平稳运行
电子制造服务提供商易德龙发布2022第一季度报告
FPGA从Xilinx的7系列学起(14)
如何创建标准的RT-Thread项目工程?详细过程分析概述
TynecastleTech团队为初学者提供的鱼菜共生系统
PFC电路旁路二极管作用及MOSFET常见失效模式有哪些
加密货币热潮的三大规则
原位总磷总氮分析仪
关于机壳地和数字地以及模拟地的关系
人工智能和机器学习正在改变语音助手的网络威胁格局
工控机对于工作的环境温度有什么要求
AI把用户逼上公有云 信息智能化趋势明显
数据备份与数据归档冷热状态的区别
百度公布青松计划细则:员工父母可不限年龄不限地域享受公司医保
曝谷歌已开始在其他OEM手机上对Stadia进行测试优化
所有C语言数组和指针的知识都在这里了!|周立功手把手教你学C语言编程
华为余承东:Mate50有“向上捅破天”技术
京东方推出国内首款透明LCD屏