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

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

结果如下图:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Node.js:Express 中间件 CORS 跨域资源共享

Node.js&#xff1a;Express 中间件 & CORS 中间件全局中间件局部中间件分类错误级中间件内置中间件 CORS原理预检请求 中间件 中间件是不直接接收请求&#xff0c;也不直接发送响应&#xff0c;而是在这之间处理一个中间过程的组件。 当一个请求到来&#xff0c;会经过多…

OPENAI官方prompt文档解析

官方文档地址:https://platform.openai.com/docs/guides/gpt-best-practices 文档中文版来源:OpenAI 官方提示工程指南 [译] | 宝玉的分享 (baoyu.io) 1.写清楚说明 如果prompt给的范围十分模糊或是过于宽泛,那么GPT就会开始猜测您想要的内容,从而导致生成的结果偏离预期. …

ubuntu安装与配置Nginx(1)

在 Ubuntu 上安装和配置 Nginx 是相对简单的。以下是一个逐步指南&#xff1a; 1. 更新系统包 首先&#xff0c;确保你的系统是最新的。打开终端并运行&#xff1a; sudo apt update sudo apt upgrade2. 安装 Nginx 使用以下命令安装 Nginx&#xff1a; sudo apt install …

NVR设备ONVIF接入平台EasyCVR视频分析设备平台视频质量诊断技术与能力

视频诊断技术是一种智能化的视频故障分析与预警系统&#xff0c;NVR设备ONVIF接入平台EasyCVR通过对前端设备传回的码流进行解码以及图像质量评估&#xff0c;对视频图像中存在的质量问题进行智能分析、判断和预警。这项技术在安防监控领域尤为重要&#xff0c;因为它能够确保监…

【机器学习】20. RNN - Recurrent Neural Networks 和 LSTM

1. RNN定义 用于顺序数据 文本数据是序列数据的一个例子 句子是单词的序列——一个单词接另一个单词 每个句子可能有不同数量的单词&#xff08;长度可变&#xff09; 每个句子之间可能有长距离的依赖关系 rnn可以记住序列中较早的相关信息 RNN在每个时间点取序列中的1个…

ElementUI el-form表单多层数组的校验

问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; ElementUI el-form表单多层数组的校验 页面效果&#xff1a; 数据结构&#xff1a; addform: {code: ,type: ,value: ,state: 1,remark: ,fieldList: [{fieldCode: ,resolverEntities: [{resolverType: , re…

Java SpringBoot调用大模型AI构建AI应用

本文是一个用springboot 结合spring mvc 和spring ai alibaba 调用国产大模型通义千问的具体例子&#xff0c;按照这个做能够快速的搞定Java应用的调用。 然后就可以把这类应用泛化到所有的涉及到非结构化数据结构化的场景中。 Spring AI&#xff1a;简化Java中大模型调用的框…

利用frp进行SSH端口转发(内网穿透同理)

题记 公司内网有一台设备&#xff0c;可以根据微步情报来对恶意服务器进行封禁。很不幸我的vps因为开着cs被标记为恶意了&#xff0c;导致我在公司网络连不上我的vps&#xff0c;每次连还要挂代理。于是我打算将我vps的22端口转发到我们公司的vps的10022端口上。本篇文章来自11…

Python基于TensorFlow实现双向循环神经网络GRU加注意力机制分类模型(BiGRU-Attention分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着深度学习技术的发展&#xff0c;循环神经网络&#xff08;RNN&#xff09;及其变种如门控循环…

CSS、Less、Scss

CSS、Less和SCSS都是用于描述网页外观的样式表语言&#xff0c;但它们各自具有不同的特点和功能。以下是对这三者的详细阐述及区别对比&#xff1a; 详细阐述 CSS&#xff08;Cascading Style Sheets&#xff09; 定义&#xff1a;CSS是一种用来表现HTML或XML等文件样式的计算机…

parted 磁盘分区

目录 磁盘格式磁盘分区文件系统挂载使用扩展 - parted、fdisk、gdisk 区别 磁盘格式 parted /dev/vdcmklabel gpt # 设置磁盘格式为GPT p # 打印磁盘信息此时磁盘格式设置完成&#xff01; 磁盘分区 开始分区&#xff1a; mkpart data_mysql # 分区名&…

OpenCV视觉分析之目标跟踪(9)计算扩展相关系数computeECC()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算两幅图像之间的增强相关系数值 78 Enhanced Correlation Coefficient (ECC)&#xff1a;增强相关系数是一种用于图像配准的技术&#xff0c…

ESP32-C3 入门笔记03:VScode + flash_download_tool 下载烧录程序(ESP-IDF + PlatformIO)

ESP32-C3 支持多种烧录方式&#xff0c;主要包括以下几种&#xff1a; VS Code 串口烧录&#xff1a;使用 VS Code 配合 PlatformIO 或 ESP-IDF 插件进行串口烧录。串口连接通常使用 UART 接口&#xff0c;通过 USB 转串口芯片与电脑连接。步骤大致如下&#xff1a; 配置 VS Co…

Java使用apache.commons.io框架下的FileUtils类实现文件的写入、读取、复制、删除

Apache Commons IO 是 Apache 开源基金组织提供的一组有关IO&#xff08;Input/Output&#xff09;操作的小框架&#xff0c;它是 Apache Commons 项目的一部分&#xff0c;专注于提供简单易用的 API&#xff0c;用于处理输入和输出操作。Apache Commons IO 是一个功能强大的 J…

Mac 电脑 使用sudo创建项目后,给了读写权限,仍报权限问题

问题&#xff1a;sudo创建的项目&#xff0c;都已经改成读写权限了&#xff0c;但是修改项目中的内容还是报没权限。 原因&#xff1a;当你使用 sudo 创建项目时。这是因为 sudo 会以 root 用户的身份创建文件和目录&#xff0c;这些文件和目录默认属于 root 用户&#xff0c;…

3. keil + vscode 进行stm32协同开发

1. 为什么使用vscode 主要还是界面友好&#xff0c;使用习惯问题&#xff0c;vscode 从前端&#xff0c;js, c/c, qt, 仓颉&#xff0c;rust都有很好插件的支持&#xff0c;并且有romote&#xff0c; wsl 等很多插件可以提高效率&#xff0c; 唯一的问题就是要使用插件进行环境…

Spring MVC 完整生命周期和异常处理流程图

先要明白 // 1. 用户发来请求: localhost:8080/user/1// 2. 处理器映射器(HandlerMapping)的工作 // 它会找到对应的Controller和方法 GetMapping("/user/{id}") public User getUser(PathVariable Long id) {return userService.getById(id); }// 3. 处理器适配…

Hadoop生态圈框架部署(四)- Hadoop完全分布式部署

文章目录 前言一、Hadoop完全分布式部署&#xff08;手动部署&#xff09;1. 下载hadoop2. 上传安装包2. 解压hadoop安装包3. 配置hadoop配置文件3.1 虚拟机hadoop1修改hadoop配置文件3.1.1 修改 hadoop-env.sh 配置文件3.3.2 修改 core-site.xml 配置文件3.3.3 修改 hdfs-site…

【智能算法应用】天鹰优化算法求解二维路径规划问题

摘要 路径规划问题在机器人和无人机导航中起着关键作用。本文提出了一种基于天鹰优化算法的二维路径规划方法。天鹰优化算法&#xff08;Eagle Strategy Optimization, ESO&#xff09;通过模拟天鹰的捕猎行为&#xff0c;寻找最优路径。实验结果显示&#xff0c;该算法能够有…

数据结构之二叉树——堆 详解(含代码实现)

1.堆 如果有一个关键码的集合 K { &#xff0c; &#xff0c; &#xff0c; … &#xff0c;}&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中&#xff0c;则称为小堆( 或大堆 ) 。将根节点最大的堆叫做最大堆或大根堆&#xff0c;根节点最小的…