openUBMC Chip Abstract Layer V0.1
载入中...
搜索中...
未找到
JTAG

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() const;
  • 新接口
    void reset(int32_t index);
  • 用途 升级完成后,如果升级模式是重启生效,则使用set_reset_cpld_gpio设置的gpio对CPLD进行复位
  • 变更说明 统一增加入参