jtag_host.h源码
时间: 2023-08-01 17:10:07 浏览: 384
jtag_host.h是JTAG Host库的头文件,主要用于与JTAG设备进行通信。以下是jtag_host.h的源代码:
```
#ifndef __JTAG_HOST_H__
#define __JTAG_HOST_H__
#include <stdint.h>
#define JTAG_HOST_BUF_SIZE 1024
typedef struct {
uint8_t *buf; // 数据缓存区
uint32_t buf_size; // 缓存区大小
uint32_t index; // 当前写入的位置
} jtag_host_buf_t;
typedef struct {
uint8_t tms; // TMS信号
uint8_t tdi; // TDI信号
uint8_t tdo; // TDO信号
uint8_t trst; // TRST信号
uint8_t srst; // SRST信号
} jtag_host_signal_t;
typedef struct {
uint32_t freq; // JTAG时钟频率
uint32_t tck_delay; // TCK延时
uint32_t trst_delay; // TRST延时
uint32_t srst_delay; // SRST延时
uint32_t timeout; // 超时时间
uint32_t retry; // 重试次数
} jtag_host_cfg_t;
typedef struct {
jtag_host_signal_t signal; // JTAG信号
uint32_t tck_freq; // TCK频率
uint32_t tck_div; // TCK分频
jtag_host_cfg_t cfg; // JTAG Host配置
} jtag_host_t;
/**
* @brief JTAG Host初始化
*
* @param jtag JTAG Host对象指针
* @param buf 数据缓存区
* @param size 缓存区大小
*/
void jtag_host_init(jtag_host_t *jtag, uint8_t *buf, uint32_t size);
/**
* @brief JTAG Host释放
*
* @param jtag JTAG Host对象指针
*/
void jtag_host_free(jtag_host_t *jtag);
/**
* @brief JTAG Host连接
*
* @param jtag JTAG Host对象指针
*
* @return true 连接成功
* false 连接失败
*/
bool jtag_host_connect(jtag_host_t *jtag);
/**
* @brief JTAG Host断开连接
*
* @param jtag JTAG Host对象指针
*/
void jtag_host_disconnect(jtag_host_t *jtag);
/**
* @brief JTAG Host写入数据
*
* @param jtag JTAG Host对象指针
* @param data 数据
* @param size 数据大小
*
* @return true 写入成功
* false 写入失败
*/
bool jtag_host_write(jtag_host_t *jtag, uint8_t *data, uint32_t size);
/**
* @brief JTAG Host读取数据
*
* @param jtag JTAG Host对象指针
* @param data 数据
* @param size 数据大小
*
* @return true 读取成功
* false 读取失败
*/
bool jtag_host_read(jtag_host_t *jtag, uint8_t *data, uint32_t size);
/**
* @brief JTAG Host写入并读取数据
*
* @param jtag JTAG Host对象指针
* @param tx_data 写入数据
* @param tx_size 写入数据大小
* @param rx_data 读取数据
* @param rx_size 读取数据大小
*
* @return true 写入并读取成功
* false 写入并读取失败
*/
bool jtag_host_write_read(jtag_host_t *jtag, uint8_t *tx_data, uint32_t tx_size, uint8_t *rx_data, uint32_t rx_size);
#endif /* __JTAG_HOST_H__ */
```
该头文件中定义了JTAG Host库的结构体和函数,包括:
- jtag_host_buf_t:数据缓存区结构体,用于存储JTAG Host传输的数据。
- jtag_host_signal_t:JTAG信号结构体,包括TMS、TDI、TDO、TRST和SRST等信号。
- jtag_host_cfg_t:JTAG Host配置结构体,包括JTAG时钟频率、TCK延时、TRST延时、SRST延时、超时时间和重试次数等参数。
- jtag_host_t:JTAG Host对象结构体,包括JTAG信号、TCK频率、TCK分频和JTAG Host配置等参数。
- jtag_host_init:JTAG Host初始化函数,用于初始化JTAG Host对象。
- jtag_host_free:JTAG Host释放函数,用于释放JTAG Host对象。
- jtag_host_connect:JTAG Host连接函数,用于连接JTAG设备。
- jtag_host_disconnect:JTAG Host断开连接函数,用于断开JTAG设备连接。
- jtag_host_write:JTAG Host写入数据函数,用于向JTAG设备写入数据。
- jtag_host_read:JTAG Host读取数据函数,用于从JTAG设备读取数据。
- jtag_host_write_read:JTAG Host写入并读取数据函数,用于向JTAG设备写入数据并读取返回的数据。
这些函数提供了基本的JTAG通信功能,可用于JTAG设备的调试和测试等应用场景。
阅读全文