原Jtag类混合提供JtagOverGpio, JtagOverLocalbus的相关接口,这里把类进行拆分
classDiagram
%% ================================
%% ABI接口层 - 驱动抽象类
%% ================================
class Jtag {
<<interface>>
}
class JtagOverLocalbus {
<<interface>>
}
class JtagOverGpio {
<<interface>>
}
class JtagOverLocalbusImpl {
<<interface>>
}
class JtagOverGpioImpl {
<<interface>>
}
%% ================================
%% 接口实现关系
%% ================================
Jtag <|.. JtagOverLocalbus : 继承
Jtag <|.. JtagOverGpio : 继承
JtagOverLocalbus <|.. JtagOverLocalbusImpl : 继承
JtagOverGpio <|.. JtagOverGpioImpl : 继承
%% ================================
%% 样式定义
%% ================================
style Jtag fill:#fff3e0
style JtagOverLocalbus fill:#fff3e0
style JtagOverGpio fill:#fff3e0
接口用途
- runtime_accessor 主要用于CPLD升级
对比
<tt>config_jtag_gpio</tt>
- 原接口
void config_jtag_gpio(uint8_t tck, uint8_t tms, uint8_t tdo, uint8_t tdi) const;
- 新接口
struct JtagOverGpioConfig {
uint8_t tck;
uint8_t tms;
uint8_t tdo;
uint8_t tdi;
};
void JtagOverGpio::config(int32_t index, void *config, uint32_t size);
- 变更说明 拆分到类
<tt>config_jtag_reg</tt>
- 原接口
void config_jtag_reg(uint8_t offset, uint8_t tck, uint8_t tms, uint8_t tdo, uint8_t tdi) const;
- 新接口
struct JtagOverLocalbusConfig {
uint8_t offset;
uint8_t tck;
uint8_t tms;
uint8_t tdo;
uint8_t tdi;
};
void JtagOverLocalbus::config(int32_t index, void *config, uint32_t size);
- 变更说明 拆分到类
<tt>reset_init</tt>
- 原接口
void reset_init(uint8_t rst) const;
- 新接口
void set_reset_cpld_gpio(int32_t index, uint8_t gpio_num);
- 用途 Jtag.TargetResetGpio
- 变更说明 修改函数命名,增强可读性
<tt>jtag_write</tt>
- 原接口
void jtag_write(const std::string_view &data, uint32_t component_id, uint32_t product_id, uint8_t type) const;
- 新接口
int32_t write(int32_t index, const std::string_view &data);
- 变更说明 删除三个参数:
component_id: CPLD组件ID,或者说通道编号,0=底板,1=背板,2=jtag0,3=jtag1 该参数与硬件实现强绑定
product_id: CPLD的IDCODE 用户可以自行读取CPLD IDCODE,选择正确的升级文件
type:文件类型:1=BMC CPLD SVF文件 实际上用于区分目标CPLD设备,和驱动实现无关
<tt>jtag_set_tck_rate</tt>
- 原接口
void jtag_set_tck_rate(uint32_t tck_rate) const;
- 新接口
void set_tck_rate(int32_t index, uint32_t tck_rate);
- 变更说明 统一增加入参;变更函数名称
<tt>reset</tt>
- 原接口
- 新接口
void reset(int32_t index);
- 用途 升级完成后,如果升级模式是重启生效,则使用set_reset_cpld_gpio设置的gpio对CPLD进行复位
- 变更说明 统一增加入参