关于调试:开源调试软件OpenOCD调试stm32
刚开始接触嵌入式硬件时只晓得写程序,感觉调试基本不须要,随着工夫的积攒和问题复杂度的晋升,才发现调试对于一个零碎的重要性。生存中很多这样的例子,调试,永远都是事物良性倒退过程中必不可少的一个环节,两个人过日子遇到了矛盾,静下来沟通就是调试,总不能一言不合就离别。在设计一个产品或者一个流程时,都要充沛的思考到调试因素,这样零碎在运行过程中一旦呈现了问题,能够及时的追溯。 OpenOCD就是这样一个工具,配合JTAG调试协定,能够对硬件设施进行指令集级别和寄存器级别的调试。 理解一个新软件最好的形式就是读官网的Manual。当然,不肯定非得从Manual开始,能够从一些实例开始,或者基于母语的博客或者论坛,但想把握得更彻底,还是得找官网的文档,解铃还须系铃人。如果软件的设计思维过于简单,Manual读一遍是不论用的。往往回旋式的后退会收到更好的成果,也就是带着问题读Manual,解决了问题;再遇到一些问题时,再读一遍Manual,就这样重复几遍也就逐步把握了,所谓的一万小时实践也是基于此。 OpenOCD的劣势就是开源,反对N种调试器。充沛的了解和把握整个开发过程中的调试办法,是我的项目稳固进行的牢靠保障,很多未知问题都得通过底层调试能力剖析进去。 调试ARMwindows应用gdb调试stm32能够应用几套环境: stlink硬件+openocd软件+arm-none-eabi-gdbjlink硬件+openocd软件+arm-none-eabi-gdbjlink硬件+jlink_gdb_server软件+arm-none-eabi-gdb搭建环境这里先讲第二种状况的应用: 通过网站http://www.freddiechopin.info/en/download/category/4-openocd下载openOCD for windows软件包,当初的版本是0.9.0。如果心愿下载源代码,能够拜访网站http://openocd.sourceforge.net/。登陆网站http://zadig.akeo.ie/下载zadig软件,用来装置仿真器的驱动程序,以后版本是2.1.2,说的直白一些openOCD只把Jlink仿真器当作一般的USB设施来应用,不应用Jlink自带的仿真器驱动程序,如果已装置了Jlink仿真器驱动程序,这个过程就是把原先的驱动程序换掉。插入Jlink仿真器(如果是第一次插入Jlink仿真器,零碎会要求装置驱动程序,咱们能够点击勾销,不用理睬),运行zadig软件。抉择J-Link,而后抉择WinUSB驱动程序,点击Reinstall Driver按钮或Replace Driver按钮,这样便实现了驱动程序的替换。解压缩openOCD软件包,在硬盘上建设openocd文件夹(可写其它的任意名称),拷贝bin和scripts文件夹上面的所有文件到该文件夹。应用Jlink仿真器连贯指标板,并给指标板上电。在windows运行中输出cmd,启动控制台程序,并切换至步骤7建设的文件夹。输出命令openocd -f interface/jlink.cfg -f target/k60.cfg,jlink.cfg示意应用jlink仿真器,k60.cfg示意下载k60系列MCU。呈现下列界面示意连贯胜利。 openOCD思考OpenOCD是一款功能强大的开源调试软件,反对多种调试器,例如Jlink、STlink、FT2232、并口等;反对多种嵌入式处理器,例如ARM7,ARM9, ARM10, ARM11和Cortex等外围的芯片;另外还提供一个GDB Server接口。 刚一开始可能还摸不清OpenOCD的运作模式,毕竟它不是一款图形化软件,而是基于command line 的交互方式。而且OpenOCD运行后间接就是一个Daemon,我第一次运行时还真有点懵。这种软件还是得靠入手操作实例来把握。 应用OpenOCD开发我的项目,咱们须要做的不止是将调试器连贯到开发板,咱们还须要配置OpenOCD让它晓得咱们的调试器和开发板的型号,能够应用OpenOCD连贯GDB,而后应用例如Eclipse或者其它图形化的工具。 下一篇文章,咱们会写连贯到开发板后,如何进行调试。并且通过OneOS-Lite进行教学实战。 TAPTest Access Ports (TAPs) are the core of JTAG. TAPs serve many roles, including: 测试拜访端口TAPs是JTAG的外围,TAPs服务许多角色,包含: Debug TargetA CPU TAP can be used as a GDB debug target.调试指标端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/ ...