开源 python 调试器_为什么您的硬件需要开源调试器

开源 python 调试器

直接使用硬件很难。 每个项目都会带来一些平凡的问题,这些问题包括要使用哪个编译器,要使用哪些通信协议以及如何加载代码。 开发人员还需要弄清楚如何调试实时系统而不影响正在执行的程序。

过去,这需要昂贵且专有的软件,但是由于有了商品硬件和像OpenOCD这样的项目,直接在嵌入式硬件上运行的程序开发比以往任何时候都容易。

当使用非常小的系统时,程序员所依赖的出色功能可能无法使用。 在这样的系统中,当出现问题时,系统可能会陷入未知状态,唯一的解决方法就是重置硬件。 这样做可以使系统重新运行,但是会抛出任何可能导致问题诊断的信息。 硬件调试器即使CPU处于冻结状态,也可以洞悉CPU的工作状态。

与gdb之类的软件调试器(使用操作系统挂钩或修补正在运行的程序以用导致操作系统通知调试器事件的特殊指令替换有效代码)相反,硬件调试器利用了专用调试器上的特殊引脚。直接与核心对话的芯片。 通过使用特制的连接,硬件调试器为开发人员提供了在操作系统下进行开发时通常使用的相同工具。 良好的硬件调试器环境使开发人员可以闯入并检查当前程序状态,查看(有时更改)变量,设置观察点或断点,并且通常可以更深入地了解实时系统。

高端芯片制造商通常具有推荐的开发环境,其中将包括操作系统,编译器工具链和特定的调试器盒。 有时,这将是内部解决方案,并且此类工具通常非常昂贵且使用起来非常麻烦。 每个芯片供应商都有自己的环境,这种环境倾向于用奇特的调试硬件填充架子。 保密协议和昂贵的合同经常限制对文档和硬件/软件工具的访问,这意味着只有大公司才能获得实时调试的好处。

开源 python 调试器_为什么您的硬件需要开源调试器_第1张图片

摄影:Sean Cross, CC BY-SA 2.0

OpenOCD是一个开源的片上调试器。 只有少数常见的调试协议,到目前为止,最常见的是JTAG 。 OpenOCD使用JTAG,可以利用各种常见的JTAG盒来调试各种硬件。 OpenOCD拥有自己的基于TCL的脚本语言和外壳程序,但是它还提供了gdbserver连接,允许任何说gdb的人与真实的硬件对话。 这意味着可以使用从gdb本身到DDD,Eclipse和IDA Pro的任何东西来调试软件。 JTAG需要四线,但是某些较新的ARM芯片使用两线变体。 协议是相同的,有些芯片会同时使用。 如果电路板具有标准的.1“接头连接器并且以3.3V运行,则可以简单地使用飞线而无需焊接任何东西。

开源 python 调试器_为什么您的硬件需要开源调试器_第2张图片

摄影:Sean Cross, CC BY-SA 2.0

如果您有Raspberry Pi,那么您将拥有网络连接的JTAG盒。 Raspbian有可用的最新版本openocd ,因此仅是“ apt-get install openocd”。 该软件包支持多种硬件,包括通用FTDI电缆,Buspirate,通用GPIO和特定于平台的Raspberry Pi GPIO接头 。 接线工作主要是在被调查设备与进行调查的硬件(例如GPIO接头)之间连接电线。

一切都连接好并配置好之后,OpenOCD可以使您深入了解硬件的确切功能。 该程序在端口4444上提供了一个“ telnet”服务器,通过它可以控制所有内容。 可以暂停正在调查的设备,并且可以读取或修改任何内存区域。 硬件外围设备通常是内存映射的,这意味着可以通过将值放入内存来直接与硬件对话。 对于受支持的芯片,OpenOCD可以通过将程序插入内存然后运行它们(例如在Kinetis系列芯片上)或直接操作闪存寄存器(例如在STM32系列上)来重新刷新芯片。

在为STM32等嵌入式平台开发代码时,OpenOCD的gdb集成功能更加便捷。 除了端口4444上的telnet服务器之外,还在端口3333上打开了与gdbserver兼容的端口,从而使gdb与硬件进行通信。 如果gdb提供了通用的嵌入式ELF文件,则它可以在函数上创建断点,逐行步进,并捕获目标硬件抛出的某些类型的信号。 通过使用标准的“ load”命令,gdb也可以刷新板卡,从而可以加快代码/编译/测试周期。

如果配置正确,OpenOCD甚至可以提供某种程度的RTOS集成。 gdb支持调试多线程程序,OpenOCD可以通过将它们映射为线程来通知gdb目标硬件上正在运行的各种进程。 如果目标启用了调试符号并且正在运行ChibiOS,ThreadX,FreeRTOS,eCos或Linux,则gdb将在其“信息线程”表下列出进程,并且用户可以通过按编号选择线程在任务之间切换。

OpenOCD软件包是对开放式硬件工具箱的极大增强。 它的多功能性意味着几乎可以摆动引脚的任何东西都可以成为硬件调试器,而商品硬件的广泛可用性意味着这些功能强大的工具可供那些没有百万美元研发预算的人使用。 当与开放式硬件和开放式嵌入式操作系统结合使用时,神秘崩溃和死锁的根本原因变得显而易见。 通过花费较少的时间来查找这些平凡的问题,开发受约束的平台变得更加有趣,从而使开发人员可以更多地考虑酷的新功能或想法,并从总体上获得更多乐趣。

打开
硬件

有关开放式硬件的当前状态和未来的文章的集合 。

翻译自: https://opensource.com/life/15/5/open-source-on-chip-debugger

开源 python 调试器

你可能感兴趣的:(嵌入式,python,linux,java,操作系统)