关于调试:开源调试软件OpenOCD调试stm32

68次阅读

共计 2610 个字符,预计需要花费 7 分钟才能阅读完成。

刚开始接触嵌入式硬件时只晓得写程序,感觉调试基本不须要,随着工夫的积攒和问题复杂度的晋升,才发现调试对于一个零碎的重要性。

生存中很多这样的例子,调试,永远都是事物良性倒退过程中必不可少的一个环节,两个人过日子遇到了矛盾,静下来沟通就是调试,总不能一言不合就离别。在设计一个产品或者一个流程时,都要充沛的思考到调试因素,这样零碎在运行过程中一旦呈现了问题,能够及时的追溯。

OpenOCD 就是这样一个工具,配合 JTAG 调试协定,能够对硬件设施进行指令集级别和寄存器级别的调试。

理解一个新软件最好的形式就是读官网的 Manual。当然,不肯定非得从 Manual 开始,能够从一些实例开始,或者基于母语的博客或者论坛,但想把握得更彻底,还是得找官网的文档,解铃还须系铃人。如果软件的设计思维过于简单,Manual 读一遍是不论用的。往往 回旋式的后退 会收到更好的成果,也就是带着问题读 Manual,解决了问题;再遇到一些问题时,再读一遍 Manual,就这样重复几遍也就逐步把握了,所谓的一万小时实践也是基于此。

OpenOCD 的劣势就是开源,反对 N 种调试器。充沛的了解和把握整个开发过程中的调试办法,是我的项目稳固进行的牢靠保障,很多未知问题都得通过底层调试能力剖析进去。

调试 ARM

windows 应用 gdb 调试 stm32 能够应用几套环境:

  1. stlink 硬件 +openocd 软件 +arm-none-eabi-gdb
  2. jlink 硬件 +openocd 软件 +arm-none-eabi-gdb
  3. jlink 硬件 +jlink_gdb_server 软件 +arm-none-eabi-gdb

搭建环境

这里先讲第二种状况的应用:

  1. 通过网站 http://www.freddiechopin.info/en/download/category/4-openocd 下载 openOCD for windows 软件包,当初的版本是 0.9.0。如果心愿下载源代码,能够拜访网站 http://openocd.sourceforge.net/。
  2. 登陆网站 http://zadig.akeo.ie/ 下载 zadig 软件,用来装置仿真器的驱动程序,以后版本是 2.1.2,说的直白一些 openOCD 只把 Jlink 仿真器当作一般的 USB 设施来应用,不应用 Jlink 自带的仿真器驱动程序,如果已装置了 Jlink 仿真器驱动程序,这个过程就是把原先的驱动程序换掉。
  3. 插入 Jlink 仿真器(如果是第一次插入 Jlink 仿真器,零碎会要求装置驱动程序,咱们能够点击勾销,不用理睬),运行 zadig 软件。
  4. 抉择 J -Link, 而后抉择 WinUSB 驱动程序,点击 Reinstall Driver 按钮或 Replace Driver 按钮,这样便实现了驱动程序的替换。
  5. 解压缩 openOCD 软件包,在硬盘上建设 openocd 文件夹(可写其它的任意名称),拷贝 bin 和 scripts 文件夹上面的所有文件到该文件夹。
  6. 应用 Jlink 仿真器连贯指标板,并给指标板上电。
  7. 在 windows 运行中输出 cmd,启动控制台程序,并切换至步骤 7 建设的文件夹。
  8. 输出命令 openocd -f interface/jlink.cfg -f target/k60.cfg,jlink.cfg 示意应用 jlink 仿真器,k60.cfg 示意下载 k60 系列 MCU。
  9. 呈现下列界面示意连贯胜利。

openOCD 思考

OpenOCD 是一款功能强大的开源调试软件,反对多种调试器,例如 Jlink、STlink、FT2232、并口等;反对多种嵌入式处理器,例如 ARM7,ARM9, ARM10, ARM11 和 Cortex 等外围的芯片;另外还提供一个 GDB Server 接口。

刚一开始可能还摸不清 OpenOCD 的运作模式,毕竟它不是一款图形化软件,而是基于 command line 的交互方式。而且 OpenOCD 运行后间接就是一个 Daemon,我第一次运行时还真有点懵。这种软件还是得靠入手操作实例来把握。

应用 OpenOCD 开发我的项目,咱们须要做的不止是将调试器连贯到开发板,咱们还须要配置 OpenOCD 让它晓得咱们的调试器和开发板的型号,能够应用 OpenOCD 连贯 GDB,而后应用例如 Eclipse 或者其它图形化的工具。

下一篇文章,咱们会写连贯到开发板后,如何进行调试。并且通过 OneOS-Lite 进行教学实战。

TAP

Test Access Ports (TAPs) are the core of JTAG. TAPs serve many roles, including:

测试拜访端口 TAPs 是 JTAG 的外围,TAPs 服务许多角色,包含:

  1. Debug TargetA CPU TAP can be used as a GDB debug target.
  2. 调试指标端 CPU TAP 能够作为 GDB 调试的指标端程序,即 GDBServer。

艰深点讲,TAP 就是一个调试链,通常一个芯片就是一个 TAP,然而一个芯片往往蕴含多个 IP 核,比方,ARM+DSP 或者 ARM+FPGA 或者 ARM+ASIC,所以在这个 chain 外面通常会蕴含多个可调试对象,比方应用 scan_chain 命令显示的信息,能够看到 omap5912 上面包含 3 个可调试成员。

OpenOCD 启动时将配置文件作为参数.

openocd.exe -f jlink.cfg -f openocd-ralink.cfg 命令就是将 jlink.cfg 和 openocd-ralink.cfg 两个配置文件作为配置参数。

怎么学 openOCD

其实也很简略。首先晓得 openOCD 是搞毛线用的。

而后,晓得怎么搭建环境。比方须要什么硬件 J -Link/st-link,什么软件 openOCD,zadig 等。

环境搭建好当前,晓得如何输出命令来和指标机连贯。

晓得 openOCD 的常用命令,晓得如何剖析和更改配置文件。

晓得如何配合 gdb 进行调试。

如果以上都搞定,那么我就认为,openOCD 曾经能够失常相熟应用了,剩下的就是一直尝试和欠缺本人的 openOCD 的常识体系结构了。

比照 JLink 驱动

通过下面的学习,咱们能够看到 openOCD 只把 Jlink 仿真器当作一般的 USB 设施来应用,不应用 Jlink 自带的仿真器驱动程序。也即是说:openOCD 代替了 jlink 驱动提供的性能。

关注 && 分割

gitee:https://gitee.com/cmcc-oneos/OneOS-Lite

docs:https://oneos-lite.com/

正文完
 0