开源调试软件OpenOCD

刚开始接触嵌入式硬件时只知道写程序,觉得调试根本不需要,随着时间的积累和问题复杂度的提升,才发现调试对于一个系统的重要性。

生活中很多这样的例子,调试,永远都是事物良性发展过程中必不可少的一个环节,两个人过日子遇到了矛盾,静下来沟通就是调试,总不能一言不合就分手。在设计一个产品或者一个流程时,都要充分的考虑到调试因素,这样系统在运行过程中一旦出现了问题,可以及时的追溯。

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

了解一个新软件最好的方式就是读官方的Manual。当然,不一定非得从Manual开始,可以从一些实例开始,或者基于母语的博客或者论坛,但想掌握得更彻底,还是得找官方的文档,解铃还须系铃人。如果软件的设计思想过于复杂,Manual读一遍是不管用的。往往盘旋式的前进会收到更好的效果,也就是带着问题读Manual,解决了问题;再遇到一些问题时,再读一遍Manual,就这样反复几遍也就逐渐掌握了,所谓的一万小时理论也是基于此。

OpenOCD的优势就是开源,支持N种调试器。充分的理解和掌握整个开发过程中的调试方法,是项目稳定进行的可靠保障,很多未知问题都得通过底层调试才能分析出来。

调试ARM

linux下使用gdb调试stm32可以使用两套环境:

  1. stlink硬件+openocd软件+arm-none-eabi-gdb
  2. 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仿真器驱动程序,这个过程就是把原先的驱动程序换掉。
  1. 插入Jlink仿真器(如果是第一次插入Jlink仿真器,系统会要求安装驱动程序,我们可以点击取消,不必理会),运行zadig软件。
  2. 选择J-Link,然后选择WinUSB驱动程序,点击Reinstall Driver按钮或Replace Driver按钮,这样便完成了驱动程序的替换。
  3. 解压缩openOCD软件包,在硬盘上建立openocd文件夹(可写其它的任意名称),拷贝bin和scripts文件夹下面的所有文件到该文件夹。
  4. 使用Jlink仿真器连接目标板,并给目标板上电。
  5. 在windows运行中输入cmd,启动控制台程序,并切换至步骤7建立的文件夹。
  6. 输入命令openocd -f interface/jlink.cfg -f target/k60.cfg,jlink.cfg表示使用jlink仿真器,k60.cfg表示下载k60系列MCU。
  7. 出现下列界面表示连接成功。

openOCD思考

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

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

使用OpenOCD开发项目,我们需要做的不止是将调试器连接到开发板,我们还需要配置OpenOCD让它知道我们的调试器和开发板的型号,可以使用OpenOCD连接GDB,然后使用例如Eclipse或者其它图形化的工具。

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,什么软件openOCD,zadig等。

环境搭建好以后,知道如何输入命令来和目标机连接。

知道openOCD的常用命令,知道如何分析和更改配置文件。

知道如何配合gdb进行调试。

如果以上都搞定,那么我就认为,openOCD已经尽在掌握中,剩下的就是不断尝试和完善自己的openOCD的知识体系结构了。

对比JLink驱动

通过上面的学习,我们可以看到openOCD只把Jlink仿真器当作普通的USB设备来使用,不使用Jlink自带的仿真器驱动程序。也即是说:openOCD替代了jlink驱动提供的功能。

我们知道JLink驱动提供给了我们使用命令下载bin文件,运行bin文件,以及调试bin文件等功能。那么openOCD呢?说实话,我还没用过呢......O(_)O哈哈~

出差必备

买火车票、高铁票、机票,订酒店都打9折的出行工具TRIP,点击注册

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341