嵌入式IDE原理 OpenOCD介绍 以及stlink如何连接stm32板子

网友投稿 1817 2022-10-17

嵌入式IDE原理 OpenOCD介绍 以及stlink如何连接stm32板子

嵌入式IDE原理 OpenOCD介绍 以及stlink如何连接stm32板子

引言

我们做单片机开发,用得比较多的stm32f1xx,stm32f4xx等等,基本上都是用keil(或者说称为mdk)这个集成开发环境IDE比较多,插上调试器,连接板子,编译,-,调试,方便得很。大家有没有想过一个问题,如果没有IDE了,我们还能做单片机开发吗???大家难道就不想知道IDE到底干了啥吗???

IDE运行过程

一个现代IDE,大致可以分为如下几个功能:

代码编码:IDE使用的是QScitinal这样的编辑器库代码智能提示:后台调用clang软件代码语法错误动态检测:后台调用gcc或者clang都可以工程源码组织:IDE使用的是makefile,后台调用make软件编译:IDE后台调用gcc编译器连接硬件调试器:IDE通过后台软件OpenOCD连接调试器和板子-:IDE给OpenOCD发命令调试:IDE后台调用gdb,给gdb发命令,gdb再给OpenOCD发命令,OpenOCD再指挥调试器,控制板子。实现单步执行,查看变量值,寄存器等。

我们可以发现,IDE所做的事,都是由已有软件来完成,其实就是组织这些已有的软件,让他们协同工作起来,方便了我们开发者使用嘛。所以嘛,IDE叫做集成开发环境。看完后,是不是觉得自己也能做一个IDE啦,哈哈哈~,我最近就在做这个事情,如果有志同道合的兴趣,可以交流讨论喔 qq:2488890051

这里重点介绍 OpenOCD 是什么

OpenOCD 是什么

从上面IDE的步骤中可以看出,OpenOCD 就是一个连通gdb和硬件调试器的工具,linux,macos,windows都可用。OpenOCD 支持大量的硬件调试器,常见的比如stm32常用的stlink,jlink调试器等。OpenOCD是一个运行于PC上的开源调试软件,最初是由Dominic Rath同学还在大学期间发起的(2005年)项目。OpenOCD旨在提供针对嵌入式设备的调试、系统编程和边界扫描功能。

这里演示如何在windows系统上利用 OpenOCD 实现正点原子stm32f407单片机开发板的调试。

我们可以- OpenOCD 的源代码,自己编译成exe。还可以-编译好的exe,我们选这个。

1. -OpenOCD

​​运行OpenOCD

由于是gdb给OpenOCD发调试命令的,先确保自己安装了 arm-none-eabi-gcc 编译器工具链(而且把bin文件夹路径添加到系统环境变量),里面会有arm-none-eabi-gdb.exe。

打开powershell命令行窗口(因为cmd命令行窗口不太好用)输入 arm-none-eabi-gdb -v,有版本信息打印出来,说明gdb环境成功了。继续输入 openocd.exe,如果显示如下则说明 OpenOCD 环境也成功了。

继续输入  openocd -f C:\Users\86132\Downloads\openocd-20211118\OpenOCD-20211118-0.11.0\share\openocd\scripts\interface\stlink.cfg -f C:\Users\86132\Downloads\openocd-20211118\OpenOCD-20211118-0.11.0\share\openocd\scripts\board\stm32f4discovery.cfg意思是 通过-f选项 给 OpenOCD 指定硬件调试器的协议文件(虽然我的stlink调试器是v2版本,但是为什么这里命令是stlink.cfg文件,而不是stlink-v2.cfg呢,因为我打开stlink-v2.cfg看了,说已经摒弃了,都采用stlink.cfg文件了),第二个是板子信息(只要单片机名字相同就行了)。出现下面界面,说明 openocd 连结 硬件调试器stlink成功啦。正在等待gdb通过3333端口来连接它。

此时再打开一个 powershell命令行窗口,输入   arm-none-eabi-gdb C:\Users\86132\Desktop\file\stm32f407\beep_openOCD\OBJ\BEEP.axf意思是gdb调试目标文件为 BEEP.axf,这个文件是我用keil编译生成的,网上有人生成的是xx.elf文件,都是一样的,都是包含了调试信息的目标文件。再输入 target remote localhost:3333也就是连接刚刚 openocd那边等待的那个端口。如下,说明程序已经通过成功-到板子了,运行到delay_xms函数里了

3. 调试板子程序

OpenOCD中,gdb常见的输入命令:

q:退出gdb调试环境n:下一步,会跳过函数finish:跳出当前函数ctrl+c:在OpenOCD命令行窗口,这个快捷键可以结束OpenOCD调试还有更多,查看相关文档

关于如何通过OpenOCD把程序-到板子上,还没有研究,但是跟调试时候可能不一样了,猜测是不需要gdb了,直接命令行给OpenOCD发-目标文件的命令即可。

参考文章:

​​使用GDB(二):调试程序常用命令_七妹要奈斯的博客-_gdb常用调试命令​​

​​gdb调试常用命令_Zbb的笔记的博客-_gdb调试命令大全​​

​​利用openocd 在windows环境下GDB调试(调试器 stlinkv2)STM32_春夜喜小雨的博客-_openocd windows​​

​​OpenOCD用户指南 - whoisliang的个人空间 - OSCHINA - 中文开源技术交流社区​​

​​OpenOCD的概念,安装和使用 - 走看看​​

​​跟我一起学OpenOCD(一) - 知乎​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:自考-计算机系统(周转时间)
下一篇:QeePHP3- PHP开发框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~