STM32基于nuttx使用Jlink命令行烧录和调试方法

本文介绍了如何在Linux环境中使用命令行工具JLinkExe和JLinkGDBServer进行STM32的程序烧录和调试。首先,通过JLink进行烧录,加载二进制文件到指定地址。然后,利用GDBServer和GDB进行远程调试,设置断点,查看堆栈信息来定位问题。在调试过程中遇到无法显示触发段错误的测试代码的问题,期待解决方案。
摘要由CSDN通过智能技术生成

以前在Windows开发STM32,习惯了使用各类IDE进行烧录和调试,现在在Linux环境使用命令行方式进行烧录和调试,执行以下命令前先需要安装Jlink调试环境,在此就不在详述!

一、程序烧录

先插上jlink,打开终端,进入nuttx目录,执行

JLinkExe

输入芯片型号、调试接口和速度,这里直接使用默认值,接下来添加要烧录的二进制文件进行烧录,输入命令:

loadbin nuttx.bin 0x08000000

在这里插入图片描述
输入以上命令后,开始烧录,成功后界面如下:
在这里插入图片描述

二、命令行调试

打开终端,输入:

JLinkGDBServer -device STM32F407VE -speed 4000 -if SWD

在这里插入图片描述

会等待GDB连接!
再打开另一个终端,进入nuttx调试文件的目录,输入:

arm-none-eabi-gdb nuttx

会启动GDB调试
在这里插入图片描述
输入:

target remote localhost:2331

连接到刚才的GDB
在这里插入图片描述
输入:

continue

代码开始运行
在这里插入图片描述
打开串口,可以与单片机通过shell交互
在这里插入图片描述
复位单片机使用命令:

monitor reset

断点使用方法,使用 GDB 的 file 命令载入需要调试的可执行文件,输入:

file nuttx

将需要调试的源代码文件添加到 GDB 调试器的源码列表中,以下目录是工程文件夹的目录,输入:

directory /home/xm/nuttx_project

使用 GDB 的 list 命令查看要打断点的代码区域,输入:

list arm_hardfault.c:153,163

使用 break 命令在指定文件的 153 行打断点,输入:

break arm_hardfault.c:153

再次运行,输入:

continue

程序开始运行!
在这里插入图片描述
在这里插入图片描述
在shell中执行测试程序:test_app,触发设定的段错误,进入段错误函数(arm_hardfault),如下所示:
在这里插入图片描述
调试窗口输入“bt”,查看堆栈信息,可以看到进入硬件错误前的执行函数,但是没有显示触发段错误的测试代码,目前原因未知,希望有高人解答!
在这里插入图片描述
删除断点,输入:

delete breakpoints 11为断点编号

到此,简单的调试过程就是这样了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值