Skip to content

# 8.3.1. UART使用说明

J6X芯片共有4路uart，即uart0~uart3。其中uart0作为调试控制台使用，默认不开启DMA，且需要通过控制Bootstrip pin决定波特率为115200或921600； 其他几路uart用作数据传输功能，设备树中默认开启DMA，支持用户通过软件配置为各种波特率，常用波特率为921600。uart0和1支持硬件流控功能，其他几路uart不支持该功能。

## 8.3.1.1. 代码路径

    drivers/tty/serial/8250/8250_dw.c   #uart驱动文件
    drivers/tty/serial/8250/8250_port.c    #uart端口操作文件
    drivers/tty/serial/8250/8250_core.c    #8250 uart驱动核心
    hobot-drivers/tty/serial/8250/8250_pdma.c    #uart PDMA操作实现文件

## 8.3.1.2. 内核配置

    /*hobot-drivers/configs/hobot_j6e_matrix_defconfig*/
    CONFIG_SERIAL_8250=y   # 8250驱动配置
    CONFIG_SERIAL_8250_CONSOLE=y   #8250 console驱动配置
    CONFIG_SERIAL_8250_EXTENDED=y   #8250驱动扩展项配置
    CONFIG_SERIAL_8250_SHARE_IRQ=y   #8250共享中断驱动配置
    CONFIG_SERIAL_8250_DW=y   #使能Designware独有的feature

## 8.3.1.3. DTS设备节点配置

    /*hobot-drivers/kernel-dts/hobot-j6e-matrix.dts*/
    uart1: uart@394A0000 {
          compatible = "snps,dw-apb-uart";
          reg = <0x0 0x394A0000 0x0 0x10000>;
          reg-shift = <2>;
          reg-io-width = <4>;
          interrupts = <GIC_SPI PERISYS_UART0_INTR PERISYS_UART0_INTR_TRIG_TYPE>;
          clock-frequency = <200000000>;
          pinctrl-names = "default";
          pinctrl-0 = <&peri_uart0>;
          dmas = <&pdma0 0>, <&pdma0 1>;
          dma-names = "rx", "tx";
          status = "okay";
         };

## 8.3.1.4. 使用示例

### 8.3.1.4.1. 检查uart节点

    ls /dev/ttyS*
    /dev/ttyS0  /dev/ttyS1  /dev/ttyS2  /dev/ttyS3

### 8.3.1.4.2. 串口相关操作

- 查看串口波特率等配置：

      stty -F /dev/ttyS1 -a

- 配置波特率等：

      stty -F /dev/ttyS1 speed 921600 cs8 -cstopb parenb -parodd

- 读取串口数据：

      cat /dev/ttyS1

- 向串口输出数据测试：

      echo 123456789 > /dev/ttyS1