Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
vscode
教程:ubuntu 下 vscode 编译 下载 调试 rt-thread stm32 程序
发布于 2019-08-07 00:25:35 浏览:7250
订阅该版
[tocm] 先上结果: ![调试效果预览图.png](/uploads/201908/07/003911jmn5hfbghs5i9inh.png) ## 步骤一:rt-thread 源码下载及编译 步骤一可跳过,参考下面官方文档链接里更详细的说明 [官网教程链接](https://www.rt-thread.org/document/site/application-note/setup/qemu/ubuntu/an0005-qemu-ubuntu/) #### 下载 rt-thread 国内镜像源码 ``` git clone https://gitee.com/rtthread/rt-thread.git ``` ``` sudo apt install scons ``` ``` sudo apt install libncurses5-dev ``` 解压 gcc-arm-none-eabi 工具链到指定目录: ![解压gcc.png](https://oss-club.rt-thread.org/uploads/20230328/ea8dc764849e4246b180da313918ca3b.png.webp) 进入 `rt-thread/bsp/stm32/stm32f429-atk-apollo` 目录,执行命令 `scons --dist` ,生成一个干净单一的 stm32f429 工程。 将 `rt-thread/bsp/stm32/stm32f429-atk-apollo/dist` 目录下的 stm32 工程拷贝到你喜欢的地方。 进入刚刚拷贝的 stm32 工程里,编辑 rtconfig.py 文件。 ![编辑rtconfig.png](https://oss-club.rt-thread.org/uploads/20230328/dbefcfd2ed8810ad5ce6466ed54968c0.png.webp) 将 gcc-arm-none-eabi 工具链的路径填入如下图相应的位置。 ![编辑rtconfig填入gcc路径.png](https://oss-club.rt-thread.org/uploads/20230328/b89ef9c2f4d43e2867a4af71950cde91.png.webp) 在拷贝的工程目录下输入 `scons` 命令即可编译 rt-thread 源码。 ![scons编译rt-thread1.png](https://oss-club.rt-thread.org/uploads/20230328/676875fc0c5f33a38d2c0e4f3d3fd344.png.webp) ![scons编译rt-thread2.png](https://oss-club.rt-thread.org/uploads/20230328/a687963efc40b35e0bcb1d319955493f.png.webp) ## 步骤二: openOCD 最新源码下载编译及安装 #### 下载 openocd 在 github 上的最新镜像源码 ```c git clone https://github.com/ntfreak/openocd.git ``` ![openocd源码下载.png](https://oss-club.rt-thread.org/uploads/20230328/451a269ccdcbc4ef4c7f18a512670607.png) #### 安装编译 openocd 需要的相关库 ```c sudo apt-get install build-essential pkg-config autoconf automake libtool libusb-dev libusb-1.0-0-dev libhidapi-dev ``` ```c sudo apt-get install libtool libsysfs-dev ``` ![openocd相关库安装.png](https://oss-club.rt-thread.org/uploads/20230328/20b7722b59e89623444a6097f337dd30.png.webp) ![openocd相关库安装2.png](https://oss-club.rt-thread.org/uploads/20230328/b696dbf8091aa490f35c23f28b127263.png.webp) #### 编译安装 ```c sudo ./bootstrap ``` ![openocd编译安装1.png](https://oss-club.rt-thread.org/uploads/20230328/a68645142ff65e2d1f0a026bdfe6e9f4.png.webp) ```c sudo ./configure ``` ![openocd编译安装2.png](https://gitee.com/balanceTWK/blogs/raw/master/openocd/openocd%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%852.png) ```c sudo make ``` ![openocd编译安装](https://gitee.com/balanceTWK/blogs/raw/master/openocd/openocd%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%853.png) ```c sudo make install ``` ![openocd编译安装](https://gitee.com/balanceTWK/blogs/raw/master/openocd/openocd%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%854.png) #### 使用测试 ```c openocd --version ``` ![openocd编译安装](https://gitee.com/balanceTWK/blogs/raw/master/openocd/openocd%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%855.png) ```c sudo openocd -f /usr/local/share/openocd/scripts/interface/cmsis-dap.cfg -f /usr/local/share/openocd/scripts/target/stm32f4x.cfg ``` 我使用的仿真器是 DAP ,目标开发板芯片是 STM32F429 。如果你使用的是其他仿真器以及目标芯片,只需将 ```cmsis-dap.cfg``` , ``` stm32f4x.cfg``` 替换即可。 ![openocd测试](https://gitee.com/balanceTWK/blogs/raw/master/openocd/openocd%E6%B5%8B%E8%AF%951.png) 上述步骤开启了 GDB 服务器,此时我们需要使用 telnet 登录到这个服务器,进行一些测试操作。 ```c telnet localhost 4444 ``` 输入 halt 命令,芯片停止运行。 ```c halt ``` 输入 reset 命令,芯片复位重启。 ```c reset ``` ![openocd测试](https://gitee.com/balanceTWK/blogs/raw/master/openocd/openocd%E6%B5%8B%E8%AF%952.png) 如果要烧录 bin 文件到目标芯片,先输入 ```halt``` 停止芯片,然后输入 ``` flash write_image erase /home/tang/Desktop/stm32f429-atk-apollo/rtthread.bin 0x8000000 ``` 烧录 bin 文件到目标芯片,地址为 0x8000000。如下图所示: ```c flash write_image erase /home/tang/Desktop/stm32f429-atk-apollo/rtthread.bin 0x8000000 ``` ![openocd测试](https://gitee.com/balanceTWK/blogs/raw/master/openocd/openocd%E6%B5%8B%E8%AF%953.png) 以上步骤是 rt-thread 源码的编译与下载,后面等我整理完接下来的步骤截图,将介绍如何使用 `vscode + openocd + gcc-arm-none-eabi-gdb` 调试代码。 ## 步骤三: ubuntu 下 vscode 单步调试 rt-thread 程序 #### 效果预览 未完待续。。。。。。 ![调试效果预览图](https://gitee.com/balanceTWK/blogs/raw/master/openocd/%E8%B0%83%E8%AF%95%E6%95%88%E6%9E%9C%E9%A2%84%E8%A7%88%E5%9B%BE.png)
查看更多
35
个回答
默认排序
按发布时间排序
来一颗糖
2019-08-07
这家伙很懒,什么也没写!
## 步骤三: ubuntu 下 vscode 单步调试 rt-thread 程序 进入用户主目录,编辑该目录下的 .profile 文件,将 gcc-arm-none-eabi 工具链 的路径添加到环境变量中。 ![将工具链加入到环境变量中1.png](https://oss-club.rt-thread.org/uploads/20230328/dcbe1c60def0e627c4f90b553b27337a.png) 在 .profile 文件末尾加上 ``` export PATH=/home/tang/toolchain/gcc-arm-none-eabi-8-2019-q3-update/bin:$PATH ``` ![将工具链加入到环境变量中2.png](https://oss-club.rt-thread.org/uploads/20230328/901c187bda72b41f7001e04f3c6ec0f0.png.webp) 输入命令 ``` soruce ~/.profile ``` 使刚刚配置的环境变量生效。 ![将工具链加入到环境变量中3.png](https://oss-club.rt-thread.org/uploads/20230328/d4f58b68b1af25f5e1bd295f408af5b4.png) 进入我们先前拷贝的 stm32 工程目录,输入 scons --target=vsc 命令生成,vscode 的文件索引。 ``` scons --target=vsc -s ``` ![生成vscode文件索引.png](https://oss-club.rt-thread.org/uploads/20230328/c0f51d0a70e4e518f8dd5e388493cf7a.png.webp) 输入 code ./ 命令打开 vscode 。 ``` code ./ ``` ![打开vscode.png](https://oss-club.rt-thread.org/uploads/20230328/f93655c2f685de3ccca346d55f49f7ea.png.webp) 给 vscode 添加任务 ![vscode任务1.png](https://oss-club.rt-thread.org/uploads/20230328/2845a452a98fdad229ed2a1f9ed0269f.png.webp) 编辑 task.json 文件,添加如下三个任务: - 1. openocd server:用于开启 openocd GDB 服务器。 - 2. rebuild:用于重新编译工程。 - 3. build:用于编译工程。 ![vscode任务2.png](https://oss-club.rt-thread.org/uploads/20230328/b4ee418276138789ea889c53b496ddba.png.webp) task.json 文件内容如下: ```json { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "openocd", "type": "shell", "command": "sudo openocd -f /usr/local/share/openocd/scripts/interface/cmsis-dap.cfg -f /usr/local/share/openocd/scripts/target/stm32f4x.cfg && exit" }, { "label": "scons", "type": "shell", "command": "scons -c && scons -j4 && exit", "problemMatcher": [] }, { "label": "telnet localhost 4444", "type": "shell", "command": "telnet localhost 4444 && exit" } ], } ``` 为 vscode 添加 Debug 配置 ![vscode添加调试1.png](https://oss-club.rt-thread.org/uploads/20230328/5e21b58adeb48f9291b7c42ee1a68462.png.webp) 编辑 launch.json 文件, 需要注意修改的地方如下图红框框所示: ![vscode添加调试2.png](https://oss-club.rt-thread.org/uploads/20230328/d07308e162561c09613dcf7df1b5693a.png.webp) launch.json 文件内容如下: ```json { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "debug Launch", "type": "cppdbg", "request": "launch", "targetArchitecture": "arm", "program": "stm32", "args": [""], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "/home/tang/toolchain/gcc-arm-none-eabi-8-2019-q3-update/bin/arm-none-eabi-gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "launchCompleteCommand": "None", "miDebuggerServerAddress": "localhost:3333", "customLaunchSetupCommands": [ { "text": "target remote :3333", "description": "connect to server", "ignoreFailures": false }, { "text": "file /home/tang/workspace/stm32f429-atk-apollo/rt-thread.elf", "description": "load file to gdb", "ignoreFailures": false }, { "text": "load", "description": "download file to MCU", "ignoreFailures": false }, { "text": "monitor reset", "description": "reset MCU", "ignoreFailures": false }, { "text": "b main", "description": "set breakpoints at main", "ignoreFailures": false }, ] } ] } ``` ### 最后一步 在 vscode 界面下,按 F1 键,输入 ```Tasks: Run Task``` 回车。 ![启动调试](https://oss-club.rt-thread.org/uploads/20230328/4cba52c286908b3fb60be5b9612a880758dc6b74.png) 上下键选择 build 编译工程。 ![启动调试](https://oss-club.rt-thread.org/uploads/20230328/a0aeb5c1f313bfc41bde9f1e903a5415d903d9b4.png) ![启动调试](https://oss-club.rt-thread.org/uploads/20230328/889536d2a2189f0b11a4dc3d0f38434b77b6e82c.png) 上下键选择 openocd server 启动 openocd 服务器。 ![启动调试](https://oss-club.rt-thread.org/uploads/20230328/29f63f4129464e58bfbd30f966b0b961729a03f2.png) ![启动调试](https://oss-club.rt-thread.org/uploads/20230328/889536d2a2189f0b11a4dc3d0f38434b77b6e82c.png) ### 输入 sudo 密码 ![启动调试](https://oss-club.rt-thread.org/uploads/20230328/246f7fd9af3b9acf3a79f5149f1698e60bef2abd.png) 按 F5 键 或如下图所示,启动调试。 ![启动调试](https://oss-club.rt-thread.org/uploads/20230328/de4c0a74b21eee5d8e4a8364c2da3c44cd78ba8c.png) ### 开启调试 ![启动调试](https://oss-club.rt-thread.org/uploads/20230328/d69c533ae90e1ff92a0a57a88c4589ff462f763b.png) ![gif](https://oss-club.rt-thread.org/uploads/20230328/da39a3ee5e6b4b0d3255bfef95601890afd80709.gif)
greedyhao
2019-08-07
这家伙很懒,什么也没写!
**niubility**
MurphyZhao
认证专家
2019-08-07
这家伙很懒,什么也没写!
很强势
我夏了夏天
认证专家
2019-08-07
Life isn't about finding yourself, life is about creating yourself.
沙发板凳地板都没了,还是要说这很强,另外一种调试方式
Ernest
2019-08-08
这家伙很懒,什么也没写!
new balance
pkokoc
2019-09-10
这家伙很懒,什么也没写!
强,喜欢这种折腾
deepsky2018
2019-09-15
这家伙很懒,什么也没写!
厉害!!
921742079
2019-09-20
这家伙很懒,什么也没写!
默认的项目debug一次,以后会再也连不上,cubemx里面需要选择sys,wire debug模式,楼主你可以重复断点么?我这边用stm32f103c8t6是这样
来一颗糖
2019-09-20
这家伙很懒,什么也没写!
>默认的项目debug一次,以后会再也连不上,cubemx里面需要选择sys,wire debug模式,楼主你可以重复断点么? ... --- 第一次能调试,断开连接后就再也不能调试了吗?
来日方长
2019-09-20
这家伙很懒,什么也没写!
666
撰写答案
登录
注册新账号
关注者
0
被浏览
7.3k
关于作者
来一颗糖
这家伙很懒,什么也没写!
提问
7
回答
231
被采纳
1
关注TA
发私信
相关问题
1
潘多拉开发板在VSCODE无法执行micropython
2
vscode qemu debug 遇到的问题
3
rtthread使用makefile开启动态方式创建线程失败
4
VScode调试qemu-vexpress-a9工程,GDB出错,求助~
5
使用Vscode+qemu调试RT-Thread,F5调试时报错
6
在VScode适用studio插件项目里面的环境变量问题
7
vscode插件编译报错
8
如何vs code中新建rt-thread在项目?
9
GD32VF103 VSCODE开发环境移植问题
10
在bsp目录下打开vscode,没办法通过vscode查看src目录下的源文件
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
简单两步配置RTT源码阅读环境 vsc+clangd
2
恩智浦[FRDM-MCXN947]初探 之 ADC与DAC
3
LVGL使用字库IC芯片显示中文
4
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
5
freemodbus主机在freertos的适配,参考rtthread例程
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部