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

原UART驱动,其实例本质上是单个UART控制器的驱动;但是混合了UART总管的角色,比如允许执行串口互联操作 新的bcal设计,UART驱动实例为所有UART控制器的总管

接口用途

  • bmc_soc 串口环回测试
  • soctrl 串口互联操作
  • power_mgmt DFT检查CAN通道是否正常
  • rmcpd 串口管理(SOL)

对比

<tt>free</tt>

  • 原接口
    void free() override;
  • 新接口
    void free();
  • 变更说明 无

<tt>open_port</tt>

  • 原接口
    void open_port(uint8_t chan, uint32_t baud);
  • 新接口
    void open(int32_t index);
  • 变更说明 名字修改,波特率设置使用通用的set_baud_rate接口

<tt>uart_close</tt>

  • 原接口
    void uart_close(uint8_t chan);
  • 新接口
    void close(int32_t index);
  • 变更说明 名字修改

<tt>x_connect_y</tt>

  • 原接口
    void uart_connect_uart(uint32_t uart, uint32_t port_or_uart) const;
    void uart_connect_port(uint32_t uart, uint32_t port_or_uart) const;
    void port_connect_port(uint32_t src_port, uint32_t dst_port) const;
  • 新接口
    void uart_connect_uart(uint32_t src_uart, uint32_t dst_uart);
    void uart_connect_port(uint32_t src_uart, uint32_t dst_port);
    void port_connect_port(uint32_t src_port, uint32_t dst_port);
  • 变更说明 无

<tt>query_x_connection</tt>

  • 原接口
    uint32_t query_uart_connection() const;
    uint32_t query_port_connection() const;
  • 新接口
    uint32_t query_uart_connection(int32_t index);
    uint32_t query_port_connection(int32_t index);
  • 变更说明 增加入参index,用于指定uart控制器

<tt>read</tt>/<tt>select_read</tt>

  • 原接口
    string read(uint8_t chan, uint32_t len);
    string select_read(uint8_t chan, uint32_t len);
  • 新接口
    string_t read(int32_t index, uint32_t len);
    string_t select_read(int32_t index, uint32_t len, uint32_t timeout);
  • 变更说明 参数名字变更 select_read原接口是固定1s timeout,这里改为通过参数指定

<tt>write</tt>

  • 原接口
    void write(uint8_t chan, const string_view &val);
  • 新接口
    int32_t write(int32_t index, const string_t &val);
  • 变更说明 保持不变,增加了返回值

<tt>send_break</tt>

  • 原接口
    void send_break(uint8_t chan, int duration);
  • 新接口
    void send_break(int32_t index, int32_t duration);
  • 变更说明 无

<tt>get_current_baud</tt>

  • 原接口
    uint32_t get_current_baud(int32_t uart_index) const;
  • 新接口
    uint32_t get_host_baud_rate(int32_t index);
  • 变更说明 命名变更

<tt>update_baud</tt>

  • 原接口
    void update_baud(int32_t uart_index, uint8_t connect_uart);
  • 新接口 删除
  • 变更说明 原本用途是,获取系统串口的波特率,设置到指定uart控制器上;可以通过get_host_baud_rate+set_baud_rate接口组合实现

<tt>update_baud_v2</tt>

这个东西似乎没有必要,可以get+set

  • 原接口
    void update_baud_v2(uint8_t chan, uint32_t val);
  • 新接口
    void set_baud_rate(int32_t index, uint32_t baud);
  • 变更说明 命名变更

<tt>update_xxx</tt>

  • 原接口
    void update_oddeven(uint8_t chan, char even);
    void update_data_bits(uint8_t chan, uint8_t bits);
    void update_stop_bits(uint8_t chan, uint8_t stop);
  • 新接口
    void set_parity(int32_t index, char parity);
    void set_data_bits(int32_t index, uint8_t bits);
    void set_stop_bits(int32_t index, uint8_t bits);
  • 变更说明 命名变更