stm32 makefile烧写调试一条龙

13 篇文章 0 订阅
2 篇文章 0 订阅

linux 下调试stm32

JLink安装

网址:https://www.segger.com/downloads/jlink/
选择一个版本下载,对于我这个淘宝买的10多元钱的jlink-ob必须要选择低版本的,目前选用的是V6.0。可以选择.deb或.rpm安装。

STM32CubeMx生成一个Makefile项目

stm32cubemx使用
开发环境选makefile就是了

程序下载

  1. 之前写过一个怎么用命令行,一步一步的选择方式,速度,芯片,烧写。在这里
  2. 这种方法比较麻烦,每次烧写都要选择各种选项。遇然发现一个新的方法,可以一个命令搞定,方便快捷:
# 新建一个文件名字叫flash,下面列出了flash文件内容
$ cat flash
si 1
speed 4000
device stm32f103ZET6
r
h
erase
loadfile target.hex 0x8000000
q
# 第一行选连接方式swd,jta。第三行选芯片。erase是擦除。后面就是写入hex文件。
# 保存好文件后运行以下命令写入芯片
JLinkExe flash
  1. 用以上方法可以烧录,将flash伪命令加入makefile,就可以实现编绎,烧录全部make命令搞定了。
# makefile中加入以下伪命令
#######################################
# flash
#######################################
flash:
  sed 's/target/$(BUILD_DIR)\/$(TARGET)/g' flash_src > flash_use; \
  JLinkExe flash_use; \
  if [ -z $? ]; then echo "烧写成功"; else echo "烧写失败";fi
# makefile中加入flash伪命令后,使用make flash就可以实现烧录到芯片的功能了
# 这里说明一下$(BUILD_DIR)\/$(TARGET)是/build/编绎生成的项目目标文件,这里的Makefile可以使用STM32CubeMx生成。flash_src里面的内容就是上面第二步中提到的flash文件内容,第一行是为了把target.hex替换成build/项目名称.hex,第二行进行烧录,最后是判断是否烧写成功。如果烧录成功会显示如下界面
Downloading file [build/Gpio_test.hex]...

**************************
WARNING: CPU is running at low speed (8061 kHz).
**************************

Comparing flash   [100%] Done.
Erasing flash     [100%] Done.
Programming flash [100%] Done.
Verifying flash   [100%] Done.
J-Link: Flash download: Flash programming performed for 1 range (2048 bytes)
J-Link: Flash download: Total time needed: 0.207s (Prepare: 0.104s, Compare: 0.003s, Erase: 0.000s, Program: 0.065s, Verify: 0.000s, Restore: 0.033s)
O.K.


Script processing completed.

烧写成功

程序调试

烧录都能一个命令搞定了,调试也必需要想办法。直接在Makefile中加入debug伪命令

#######################################
# debug
#######################################
debug:
  JLinkGDBServer -if SWD -device stm32f103zet6 &\
  echo "Please use:arm-none-eabi-gdb build/[Project_name].elf"
# 输入make debug开启远程调试服务器
# 第一行是开启GDB远程服务器,-if指定连线方式,-device指定芯片型号
# 第二行提示用什么命令连接远程服务器
# 因为服务器要一直运行,因此加入&符号表示后台运行,但因为JLinkGDBServer会有一些提示,界面显示会有点乱,但不用管它,只要显示以下内容就表示可以连接进行调试了
Listening on TCP/IP port 2331
Connecting to target...Connected to target
Waiting for GDB connection...
# 服务器开启后,使用命令`arm-none-eabi-gdb build/[Project_name].elf`开始调试
# 开始调试后还有3个动作要做
# 首先连接本地2331端口服务
target remote localhost:2331
# 重置芯片
monitor reset
# 挂起芯片
monitor halt
# 一般芯片会从StartUp文件开始运行,而不是main,因此在main处打一个断点
b main
# 运行命令是c,不是gdb的r
c
# 至此就可以用gdb方式进行调试了
# 调试完成后要用fg %1使GDBServer前台运行,按Ctrl+z退出GDBServer程序,不然会一直在后台运行
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32CubeIDE是STMicroelectronics推出的一款集成开发环境(IDE),用于开发STM32微控制器的嵌入式应用程序。它基于Eclipse开发平台,并提供了一系列功能来简化和加速嵌入式应用程序的开发过程。 最新版本的STM32CubeIDE(截至2021年12月)具有以下功能: 1. 集成STM32Cube软件包:STM32Cube软件包是STMicroelectronics提供的一套软件库,用于支持STM32微控制器的开发。STM32CubeIDE能够直接集成和管理这些软件包,使得开发者可以轻松地选择和使用所需的软件组件。 2. 强大的代码编辑器:STM32CubeIDE提供了一个功能齐全的代码编辑器,支持代码自动完成、语法高亮、错误检查和代码重构等功能,使得编写嵌入式应用程序变得更加高效和方便。 3. 调试和仿真工具:STM32CubeIDE集成了ST-Link调试器,可以直接与目标设备进行调试和仿真。它支持断点调试、变量监视、寄存器查看等功能,帮助开发者快速定位和解决问题。 4. 项目管理和构建系统:STM32CubeIDE提供了强大的项目管理和构建系统,能够自动生成Makefile并自动构建应用程序。它还支持多个编译器和调试器,并提供了一键式配置和切换的功能。 5. 图形化配置工具:STM32CubeIDE集成了STM32CubeMX,一个图形化配置工具,用于配置STM32微控制器的引脚、时钟、外设等。开发者可以通过简单的拖放操作和参数设置,快速生成初始化代码和配置文件。 6. 版本控制集成:STM32CubeIDE支持与Git等版本控制系统的集成,方便开发者进行团队协作和版本管理。 总之,STM32CubeIDE提供了一系列功能和工具,帮助开发者更高效地开发和调试STM32微控制器的嵌入式应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值