VsCode中搭建 Rt-Thread 开发环境(编译,调试,下载)

news2024/11/22 1:55:33

VsCode中搭建 Rt-Thread 开发环境(编译,调试,下载)

文章目录

  • VsCode中搭建 Rt-Thread 开发环境(编译,调试,下载)
    • 一 . 下载rt-thread源码
    • 二. 安装env脚本环境
    • 三 . 配置工具链
      • 3.1 使用 SDK方式下载工具链arm-none-eabi-gcc
        • 3.1.1 下载工具链
        • 3.1.2 测试工具链
      • 3.2 使用Keil MDK的编译器ARMCLANG
        • 3.2.1 修改rtconfig.py
        • 3.2.2 修改building.py
    • 四 . 测试环境
      • 4.1 Powershell 中测试环境
        • 4.1.1 在Powershell中编译工程
        • 4.1.2 在Powershell中生成Keil MDK的工程
      • 4.2 在vscode中测试环境
        • 4.2.1 使用gcc-arm-none-eabi在vscode中编译工程
        • 4.2.2 使用ARMCLANG在vscode中编译工程
        • 4.2.3 在vscode中生成 Keil MDK 工程
    • 五. vscode中调试程序
      • 5.1 安装Cortex-Debug
      • 5.2 配置launch.json文件
      • 5.3 调试开始
    • 六. vscode中下载程序
      • 6.1 添加jlink到环境变量
      • 6.2 安装pylink库
      • 6.3 增加download_flash.py
      • 6.4 下载程序

一 . 下载rt-thread源码

git clone https://github.com/RT-Thread/rt-thread.git

二. 安装env脚本环境

在Powershell执行以下命令

wget https://gitee.com/RT-Thread-Mirror/env/raw/master/install_windows.ps1 -O install_windows.ps1
set-executionpolicy remotesigned
.\install_windows.ps1 --gitee
  1. Powershell要以管理员身份运行。
  2. 将其设置为 remotesigned 后,您可以作为普通用户运行 PowerShell。( After setting it to remotesigned, you can run PowerShell as a normal user.)
  3. 一定要关闭杀毒软件,否则安装过程可能会被杀毒软件强退

三 . 配置工具链

3.1 使用 SDK方式下载工具链arm-none-eabi-gcc

使用 ~/.env/env.psl 激活env环境,第一次需要加载.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.1.1 下载工具链

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入 命令 sdk,会弹出如下界面,使用回车选中我们下载的工具链:arm-none-eabi-gcc toolchain

​	外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

保存后退出,开始自动下载工具链。

如下:下载成功

Using default symbol values (no '.config')
Configuration saved to '.config'
[Use Gitee server - auto decision based on timezone]
Package was NOT found on mirror server. Using a non-mirrored address to download.
downloading arm-gnu-toolchain-13.2.rel1-mingw-w64-i686-arm-none-eabi.zip ...
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 364M/364M [29:48<00:00, 204kB/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 8563/8563 [01:21<00:00, 104.94it/s]
==============================>  ARM_NONE_EABI_GCC v13.2.rel1 is downloaded successfully.
Operation completed successfully.
(.venv) PS C:\Users\RTT\Desktop\rt\rt-thread-master>
(.venv) PS C:\Users\RTT\Desktop\rt\rt-thread-master>
3.1.2 测试工具链

原理:scons在sdk中自动探测工具链并进行使用下载的工具链

进入rt-thread-master\bsp\stm32\stm32f407-rt-spark 目录 使用 scons 进行编译

(.venv) PS C:\Users\RTT\Desktop\rt\rt-thread-master\bsp\stm32\stm32f407-rt-spark> scons
scons: Reading SConscript files ...
C:\Users\RTT\Desktop\rt\rt-thread-master\bsp\stm32\stm32f407-rt-spark\rtconfig.py:80: SyntaxWarning: invalid escape sequence '\l'
  LFLAGS = DEVICE + ' --scatter "board\linker_scripts\link.sct" --info sizes --info totals --info unused --info veneers --list rt-thread.map --strict'
set CC to C:\Users\RTT\.env\tools\scripts\packages\arm-none-eabi-gcc-v13.2.rel1\bin
Newlib version: 4.3.0
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build\applications\main.o
CC build\board\board.o
CC build\board\CubeMX_Config\Src\stm32f4xx_hal_msp.o
CC build\kernel\components\drivers\core\device.o
CC build\kernel\components\drivers\i2c\dev_i2c_bit_ops.o
CC build\kernel\components\drivers\i2c\dev_i2c_core.o
CC build\kernel\components\drivers\i2c\dev_i2c_dev.o
CC build\kernel\components\drivers\ipc\completion_comm.o
CC build\kernel\components\drivers\ipc\completion_up.o
CC build\kernel\components\drivers\ipc\condvar.o
CC build\kernel\components\drivers\ipc\dataqueue.o
CC build\kernel\components\drivers\ipc\pipe.o
CC build\kernel\components\drivers\ipc\ringblk_buf.o
CC build\kernel\components\drivers\ipc\ringbuffer.o
CC build\kernel\components\drivers\ipc\waitqueue.o
CC build\kernel\components\drivers\ipc\workqueue.o
CC build\kernel\components\drivers\misc\rt_drv_pwm.o
CC build\kernel\components\drivers\pin\dev_pin.o
CC C:\Users\RTT\Desktop\rt\rt-thread-master\bsp\stm32\libraries\HAL_Drivers\drivers\drv_gpio.o
CC C:\Users\RTT\Desktop\rt\rt-thread-master\bsp\stm32\libraries\HAL_Drivers\drivers\drv_usart.o
AS C:\Users\RTT\Desktop\rt\rt-thread-master\bsp\stm32\libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Source\Templates\gcc\startup_stm32f407xx.o
LINK rt-thread.elf
Memory region         Used Size  Region Size  %age Used
            CODE:       69876 B         1 MB      6.66%
            RAM1:        5372 B       128 KB      4.10%
            RAM2:          0 GB        64 KB      0.00%
MCUlcdgrambysram:          0 GB         1 MB      0.00%
arm-none-eabi-objcopy -O ihex rt-thread.elf rtthread.hex
arm-none-eabi-size rt-thread.elf
   text    data     bss     dec     hex filename
  69876    1196    4172   75244   125ec rt-thread.elf
arm-none-eabi-objcopy -O binary rt-thread.elf rtthread.bin
arm-none-eabi-size rt-thread.elf
   text    data     bss     dec     hex filename
  69876    1196    4172   75244   125ec rt-thread.elf
scons: done building targets.

3.2 使用Keil MDK的编译器ARMCLANG

3.2.1 修改rtconfig.py

修改rt-thread/bsp/stm32/stm32f407-rt-spark/rtconfig.py

​ 1.修改为CROSS_TOOL = ‘keil’ 如图所示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

​ 2.修改PLATFORM = ‘armclang’ ,修改 EXEC_PATH 为你keil安装的目录

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.2.2 修改building.py

修改rt-thread/tools/building.py

​ 将 env[‘ASCOM’]= env[‘ASPPCOM’] 注释掉

​	外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四 . 测试环境

每次打开终端需要执行 ~/.env/env.ps1 以激活环境变量。

4.1 Powershell 中测试环境

4.1.1 在Powershell中编译工程

使用 scons 命令进行编译

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.1.2 在Powershell中生成Keil MDK的工程

使用 scons --target=mdk5 生成Keil MDK 工程

在这里插入图片描述

4.2 在vscode中测试环境

4.2.1 使用gcc-arm-none-eabi在vscode中编译工程

如何配置使用gcc-arm-none-eabi工具链在上一章已经介绍了,不懂的话可以看上一章。

使用 scons 命令进行编译

​ 输出部分结果如下:

PS C:\Users\RTT\Desktop\rt\rt-thread-master\bsp\stm32\stm32f407-rt-spark> scons   
scons: Reading SConscript files ...
set CC to C:\Users\RTT\.env\tools\scripts\packages\arm-none-eabi-gcc-v13.2.rel1\bin
Newlib version: 4.3.0
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build\applications\main.o
CC build\board\board.o
CC build\board\CubeMX_Config\Src\stm32f4xx_hal_msp.o
CC build\kernel\components\drivers\core\device.o
CC build\kernel\components\drivers\i2c\dev_i2c_bit_ops.o
CC build\kernel\components\drivers\i2c\dev_i2c_core.o
CC build\kernel\components\drivers\i2c\dev_i2c_dev.o
CC build\kernel\components\drivers\ipc\completion_comm.o
CC build\kernel\components\drivers\ipc\completion_up.o
CC build\kernel\components\drivers\ipc\condvar.o
CC build\kernel\components\drivers\ipc\dataqueue.o
CC build\kernel\components\drivers\ipc\pipe.o
CC build\kernel\components\drivers\ipc\ringblk_buf.o
CC build\kernel\components\drivers\ipc\ringbuffer.o
CC build\kernel\components\drivers\ipc\waitqueue.o
CC build\kernel\components\drivers\ipc\workqueue.o
CC build\applications\main.o
LINK rt-thread.elf
Memory region         Used Size  Region Size  %age Used
            CODE:       81524 B         1 MB      7.77%
            RAM1:        5444 B       128 KB      4.15%
            RAM2:          0 GB        64 KB      0.00%
MCUlcdgrambysram:          0 GB         1 MB      0.00%
arm-none-eabi-objcopy -O ihex rt-thread.elf rtthread.hex
arm-none-eabi-size rt-thread.elf
   text    data     bss     dec     hex filename
  81524    1972    3468   86964   153b4 rt-thread.elf
arm-none-eabi-objcopy -O binary rt-thread.elf rtthread.bin
arm-none-eabi-size rt-thread.elf
   text    data     bss     dec     hex filename
  81524    1972    3468   86964   153b4 rt-thread.elf
scons: done building targets.
4.2.2 使用ARMCLANG在vscode中编译工程

如何配置使用 ARMCLANG 在上一章已经介绍了,不懂的话可以看上一章。

使用 scons 进行编译 部分输出信息如下:

(.venv) PS C:\Users\RTT\Desktop\1\rt-thread\bsp\stm32\stm32f407-rt-spark> scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build\applications\main.o
CC build\board\board.o
CC build\board\CubeMX_Config\Src\stm32f4xx_hal_msp.o
CC build\kernel\components\drivers\core\device.o
CC build\kernel\components\drivers\i2c\dev_i2c_bit_ops.o
CC build\kernel\components\drivers\i2c\dev_i2c_core.o
CC build\kernel\components\drivers\i2c\dev_i2c_dev.o
AS C:\Users\RTT\Desktop\1\rt-thread\bsp\stm32\libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f407xx.o
Warning: A1950W: The legacy armasm assembler is deprecated. Consider using the armclang integrated assembler instead.
0 Errors, 1 Warning
LINK rt-thread.axf
fromelf --bin rt-thread.axf --output rtthread.bin
fromelf -z rt-thread.axf

========================================================================

** Object/Image Component Sizes

      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name

     50150       5652       9386        776       3536     416033   rt-thread.axf (uncompressed)
     50150       5652       9386        264       3536     416033   rt-thread.axf (compressed)
         0          0          4          0          0          0   (incl. padding)
     50150       5652       9386        264          0          0   ROM Totals for rt-thread.axf
scons: done building targets.
4.2.3 在vscode中生成 Keil MDK 工程

使用 scons --target=mdk5 生成Keil MDK 工程

​ 输出信息如下:

(.venv) PS C:\Users\RTT\Desktop\1\rt-thread\bsp\stm32\stm32f407-rt-spark> scons --target=mdk5
scons: Reading SConscript files ...
Keil5 project is generating...
Keil Version: MDK Plus 5.39/Arm Compiler for Embedded 6.21/armlink [5ec1fa00]
Keil-MDK project has generated successfully!

五. vscode中调试程序

5.1 安装Cortex-Debug

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.2 配置launch.json文件

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceFolder}",
            "executable": "./rt-thread.elf",	//调试文件
            "request": "launch",
            "type": "cortex-debug",				//调试方式
            "runToEntryPoint": "Reset_Handler",
            "servertype": "jlink",				//类型
            "serverpath": "D:/jlink/JLink_V798e/JLinkGDBServerCL.exe",	//jink 路径
            "device": "STM32F407ZG",			//设备类型
            "gdbPath": "D:/gcc-arm-none/10 2021.10/bin/arm-none-eabi-gdb.exe",	//gdb 路径
            "armToolchainPath": "D:/gcc-arm-none/10 2021.10/bin"		//工具链路径
        }
    ]
}

5.3 调试开始

使用F5快捷键即可启动调试

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

六. vscode中下载程序

6.1 添加jlink到环境变量

将Jlink安装路径添加进环境变量(使vscode中能找到jlink路径)

在这里插入图片描述

在这里插入图片描述

6.2 安装pylink库

python调用jlink时需要用到

使用命令 : pip install pylink-square 安装pylink库
在这里插入图片描述

6.3 增加download_flash.py

在目录下新建download_flash.py文件,该文件是下载程序的脚本

在这里插入图片描述

download_flash.py脚本内容如下:

import os
import pylink

def download_program():
    link = pylink.JLink()
    try:
        #连接JLlink设备
        link.open()
        #选择芯片和下载方式
        link.set_tif(pylink.enums.JLinkInterfaces.SWD)
        link.connect('STM32F407ZG')
        #擦除程序
        #link.erase()
        #下载并烧入程序
        link.flash_file("./rtthread.hex",0)
    finally:
        #关闭与JLink的连接
        link.close()
        
download_program()

6.4 下载程序

执行指令下载程序

python download_flash.py

结果如下图:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230977.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pinctrl子需要中client端使用pinctrl过程的驱动分析

往期内容 本专栏往期内容&#xff1a; Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析inctrl子系统中Pincontroller构造过程驱动分析&#xff1a;imx_pinctrl_soc_info结构体 input子系统专栏…

初探Flink的序列化

Flink中的序列化应用场景 程序通常使用(至少)两种不同的数据表示形式[2]&#xff1a; 1. 在内存中&#xff0c;数据保存在对象、结构体、列表、数组、哈希表和树等结构中。 2. 将数据写入文件或通过网络发送时&#xff0c;必须将其序列化为字节序列。 从内存中的表示到字节序列…

项目一:使用 Spring + SpringMVC + Mybatis + lombok 实现网络五子棋

一&#xff1a;系统展示: 二&#xff1a;约定前后端接口 2.1 登陆 登陆请求&#xff1a; GET /login HTTP/1.1 Content-Type: application/x-www-form-urlencodedusernamezhangsan&password123登陆响应&#xff1a; 正常对象&#xff1a;正常对象会在数据库中存储&…

CentOS7配置静态IP(非解决方法指导,纯笨蛋记录)

一、这篇博客算是记录我终于解决我安装的虚拟机ping不通外网的问题&#xff0c;前前后后我尝试了很多次花了很多时间&#xff0c;最后弄完发现其实都是因为我之前根本不知道什么是虚拟机的网络配置。。。。。 这个链接介绍了vmware虚拟机三种网络模式及配置详解_vmware 特定虚…

opencv-day2-图像预处理1

图像预处理 在计算机视觉和图像处理领域&#xff0c;图像预处理能够提高后续处理&#xff08;如特征提取、目标检测等&#xff09;的准确性和效率。 常见的图像预处理操作&#xff1a; 图像色彩空间转换 图像大小调整 图像仿射变换 图像翻转 图像裁剪 图像二值化处理 图…

3DDFA-V3——基于人脸分割几何信息指导下的三维人脸重建

1. 研究背景 从二维图像中重建三维人脸是计算机视觉研究的一项关键任务。在虚拟现实、医疗美容、计算机生成图像等领域中&#xff0c;研究人员通常依赖三维可变形模型&#xff08;3DMM&#xff09;进行人脸重建&#xff0c;以定位面部特征和捕捉表情。然而&#xff0c;现有的方…

Ubuntu系统如何实现键盘按键映射到其他按键(以 Ctrl+c 映射到 F3,Ctrl+v 映射到 F4 为例)

文章目录 写在前面1. 功能描述2. 实现步骤2.1 安装AutoKey2.2 软件设置2.2.1 软件设置 2.3 测试是否安装成功 参考链接 写在前面 自己的测试环境&#xff1a; Ubuntu20.04 1. 功能描述 Ubuntu系统使用Ctrlc 、Ctrlv 进行复制粘贴操作的时候&#xff0c;时间长了就会出现小拇指…

【Clickhouse】客户端连接工具配置

ClickHouse 是什么 ClickHouse 是一个分布式实时分析型列式存储数据库。具备高性能&#xff0c;支撑PB级数据&#xff0c;提供实时分析&#xff0c;稳定可扩展等特性。适用于数据仓库、BI报表、监控系统、互联网用户行为分析、广告投放业务以及工业、物联网等分析和时序应用场…

postman的脚本设置接口关联

pm常用的对象 变量基础知识 postman获取响应结果的脚本的编写 下面是购物场景存在接口信息的关联 登录进入---搜索商品---进入商品详情---加入购物车 资源在附件中&#xff0c;可以私聊单独发送 postman的SHA256加密 var CryptoJS require(crypto-js);// 需要加密的字符串 …

Qt 文件目录操作

Qt 文件目录操作 QDir 类提供访问系统目录结构 QDir 类提供对目录结构及其内容的访问。QDir 用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统。它还可以用于访问 Qt 的资源系统。 Qt 使用“/”作为通用目录分隔符&#xff0c;与“/”在 URL 中用作路径分隔符…

qt QCheckBox详解

QCheckBox 是 Qt 框架中的一个控件&#xff0c;用于创建复选框&#xff0c;允许用户进行选择和取消选择。它通常用于表单、设置界面和任何需要用户选择的场景。 QCheckBox继承自QAbstractButton类&#xff0c;因此继承了按钮的特性。它表示一个复选框&#xff0c;用户可以通过…

读数据工程之道:设计和构建健壮的数据系统26数据建模

1. 数据建模 1.1. 良好的数据架构必须反映出使用这些数据的组织的业务目标和业务逻辑 1.2. 数据湖1.0、NoSQL和大数据系统的兴起&#xff0c;使工程师们有时是为了合理的性能提升去忽略传统的数据建模 1.3. 数据在企业中的地位急剧上升&#xff0c;人们越来越认识到&#xf…

2025生物发酵展(济南)为生物制造产业注入新活力共谱行业新篇章

2025第十四届国际生物发酵展将于3月3-5日济南盛大举办&#xff01;产业链逐步完整&#xff0c;展会面积再创历史新高&#xff0c;展览面积较上届增涨至60000平方米&#xff0c;专业观众40000&#xff0c;品牌展商800&#xff0c;同期活动会议增加至50场&#xff0c;展会同期将举…

Windows版 nginx安装,启动,目录解析,常用命令

Windows版 nginx安装&#xff0c;启动&#xff0c;目录解析&#xff0c;常用命令 一级目录二级目录三级目录 1. 下载2. 启动方式一&#xff1a;方式二&#xff1a; 3. 验证是否启动4. 安装目录解析5. 常用命令 一级目录 二级目录 三级目录 1. 下载 官网下载&#xff1a;ngi…

【maven】idea执行了maven的install命令给本地安装项目依赖包 安装后删除

目录 事件起因环境和工具操作过程解决办法1、找到对应的目录下的文件&#xff0c;手动去删除&#xff0c;比如我的依赖库的路径是D:\qc_code\apache-maven-3.8.2\repository 我只需要找到这个目录下对应的依赖包进行手动删除即可&#xff08;不推荐&#xff0c;强行删除文件夹文…

技术选型不当对项目的影响与补救措施

在项目管理中&#xff0c;初期技术选型与项目需求不匹配的情况并不罕见&#xff0c;这可能导致项目延误、成本增加和最终成果的不理想。补救的关键措施包括&#xff1a;重新评估技术选型、加强团队沟通、实施有效的需求管理以及建立持续的反馈机制。其中&#xff0c;重新评估技…

基于SSM+VUE宠物医院后台管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

MySQL 8.0在windows环境安装及配置

文章目录 一、下载二、安装三、配置环境变量 一、下载 1、先彻底卸载之前的MySQL&#xff0c;并清理其 残留文件 。 2、登录网址https://www.mysql.com/ 3、点击网址左下角“中文”按钮&#xff0c;切换到中文界面 4、点击网页上方的“下载”按钮&#xff0c;然后点击网页…

【传知代码】用于图像识别的判别图正则化技术

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;传知代码 欢迎大家点赞收藏评论&#x1f60a; 目录 论文概述图正则化技术及其优点参考文献&#xff1a; 算法流程在标准BLS中嵌入判别图正则化的方法 模型整体架构代码复现图拉普拉斯矩阵的构建—…

第二十五章 Vue父子通信之sync修饰符

目录 一、概述 二、完整代码 2.1. main.js 2.2. App.vue 2.3. BaseDialog.vue 三、运行效果 一、概述 前面的章节我们讲到&#xff0c;通过v-model我们可以实现父子组件间的通信&#xff0c;但是使用v-model的时候&#xff0c;子组件接收的prop属性名必须固定为valu…