简介¶
Glasgow 是什么¶
Glasgow 可重构数字接口调试器是一个用于探索数字接口的开源硬件工具。它为嵌入式开发者、逆向工程师、数字档案工作者、电子爱好者等一切希望与众多不同的数字设备通信,并享受高可靠性,减少麻烦的用户所设计。它可以不经额外主动或被动设备直接连接到大部分数字接口上,并且包含完善的意外情况和误操作保护措施。
因为 Glasgow 硬件上采用可重构逻辑,所以它可以支持多种不同的数字接口。Glasgow 不是仅提供几个挑选好的在硬件上支持的接口,而是使用 FPGA 随机应变,适应当下的任务的同时,在性能和可靠性上不妥协,即便是奇异的、定制的、陈旧的接口也如此。从 revD 开始,它也可以在低速 (500 kHz) 条件下进行准确的模拟信号测量。
Glasgow 的软件是一系列组件,其在设计上消除额外复杂性。每个组件都包装为一个独立的小程序,可以直接从命令行上调用,或者作为更复杂的系统里的一部分使用。使用 Glasgow 不需要编程知识,但是如果您一定程度了解 Python 的话,它所能为您实现的功能会增强许多。
安装复杂软件可能会使大家望而却步。Glasgow 的软件可以使用 Python 包管理器用一行命令安装,或用一个独立的Windows 可重分发安装器安装(支持 Windows 7 SP1 或更新)。
我可以用 Glasgow 做什么?¶
控制引脚,作为 GPIO 使用
使用 UART 通信
自动测量并调整波特率
分析 UART 事务
发起 I²C 事务
使用一个内置数据库扫描已知可识别的 I²C 设备
读写 25 系列 SPI 闪存
从 SFDP 确定存储设备参数
从捕获的 SPI 事务读取数据和 SFDP 信息
读写 ONFI 兼容的闪存
从 ONFI 参数页确定存储设备参数
读写并行 27/28/29 系列 EPROM、EEPROM、闪存
测定浮栅电荷衰减程度,并恢复数据
用 SPI 为 AVR MCU 编程并校验
用 JTAG 探测 IEEE 1149.1 兼容的设备
重放 JTAG SVF 文件
用 JTAG 调试 ARM7TDMI 处理器
用 JTAG 调试 ARC 处理器
用 EJTAG 调试 MIPS 处理器
用 SWD 探测 Arm Cortex 处理器
用 MDIO 配置以太网 PHY
测量环境数据
气温、气压、湿度(使用博世 BMP280/BME280 传感器)
距离(使用 HC-SR04 传感器超声测距)
重量(用惠斯通电桥电路和 HX-711 放大器)
参照一个基准频率校准时钟
生成伪随机噪音,用于射频设备特性测量
用雅马哈 OPLx/OPM 芯片进行音频合成,并实时在网页上播放
从 5.25/3.5 英寸软盘的读取原始调制数据
……还有更多!
以上的每项都可以只用一个 Glasgow revC 板,一些导线,和电源(如果被测设备需要)即可完成。
Glasgow 的使用流程看起来是什么样的?¶
以下的屏幕录制展示了一个典型的命令行工作流:
Glasgow 使用什么软件?¶
Glasgow 完全使用 Python 3 编写。在 FPGA 上运行的接口逻辑使用基于 Python 的领域特定语言 Amaranth 编写。在 PC 上位机上运行的辅助代码使用 Python 和 asyncio 编写。以此,FPGA 上的逻辑可以依照任何当前所请求配置按需组装,保持其尽可能又小又快。并且门件和软件之间可以共享代码,消除了易错的格式化的“胶水”代码。
Glasgow 使用了不可或缺的开源 iCE40 和 ECP5 FPGA 工具链。这些工具链十分可靠,并且速度非常快。一般来说,从头构建一个如 UART 所用的位流,可以快到只需要几秒即可完成。在开发新的小程序的时候,很少会遇到需要等待工具链完成的情况。
实现可靠的、高性能的 USB 通信并非易事:处理分包、缓冲、USB 的怪事都会一点点积累起来。Glasgow 将 USB 完全抽象起来:在 FPGA 上,小程序门件直接读或写一个 FIFO,而在上位机上,小程序软件对应写或读一个类似套接字的接口。符合一般习惯的 Python 代码在现代 PC 上可以不经额外工作即实现 USB 2 批量传输满速通信。此外,在未来的 Glasgow 修订版如果在 USB 之外增加以太网支持,小程序代码无需修改即可复用。
调试小程序可能会遇到困难,特别是在同一根导线上进行双向通信的时候。Glasgow 提供了一个内置的时钟周期精确的逻辑分析仪,可以将 I/O 引脚电平和方向变化与小程序所发出和接收的命令和相应所关联。逻辑分析仪可以压缩波形,并且可以在缓冲区将要溢出时暂停小程序。
小心
内置的逻辑分析仪目前由于有待内部架构优化,暂时已经从代码库中移除。在将来高质量实现变得可行之后,会将其恢复。