littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于Arduino和JTAG的ArduJtag库

项目简介

ArduJtag库是一个基于Arduino和JTAG开发的库,可实现从Arduino对JTAG引脚的控制,提供简单的API用于数据的发送和接收,支持JTAG序列和操作,且通信速度可配置。

项目的主要特性和功能

  • JTAG引脚控制:能够直接从Arduino控制JTAG引脚(TCK、TMS、TDI、TDO)。
  • 简单API:提供用于发送和接收数据的简单API。
  • JTAG序列支持:支持JTAG序列和操作。
  • 可配置的通信速度:支持对通信速度进行配置。

安装使用步骤

1. 安装库

  • Arduino IDE:将此库复制到Arduino/Libraries目录中,或使用Arduino IDE内置的库管理器安装。
  • PlatformIO:使用PlatformIO库管理器安装,或通过PlatformIO Core CLI安装,或将其添加到platformio.ini文件中: ini [env] lib_deps = ArduJtag [env] lib_deps =

2. 在代码中包含库

在Arduino草图中包含库: ```c

include "Jtag.hpp"

```

3. 使用示例

以下是通过JTAG接口与STM32F407微控制器交互的示例,该微控制器包含两个串联的TAP模块:BoundaryScanDebug

写入IR寄存器

使用以下函数将指令写入IR寄存器: c void ir(uint16_t instruction, uint16_t length); 例如,设置BoundaryScan TAP的BYPASS指令和Debug TAP的IDCODE指令: c uint16_t instruction = 0x1FE; uint16_t length = 9; ir(instruction, length);

写入DR寄存器

使用以下函数将数据写入DR寄存器: c void dr(uint8_t *input, uint32_t length, uint8_t *output); 例如,发送以下位序列到DR寄存器: c uint8_t input[] = {0x02, 0x00, 0x40, 0x01}; uint8_t output[] = {0x00, 0x00, 0x00, 0x00}; uint32_t length = 27; dr(input, length, output);

形成任意位序列

使用以下函数形成任意JTAG数据包: c JTAG::ERROR sequence(size_t n, const uint8_t tms[], const uint8_t tdi[], uint8_t *tdo); 更多示例可以在examples目录中找到。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】