IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> stm32 makefile烧写调试一条龙 -> 正文阅读

[嵌入式]stm32 makefile烧写调试一条龙

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程序,不然会一直在后台运行
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:44:59  更:2022-03-15 22:46:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:43:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码