UART使用参考


1. 概述

本文主要介绍IPCM UART以及其使用,包括简单的原理以及多路串口的配置说明,方便配合客户端使用多路串口。

关键词:

UART ttyS0 ttyS1 ttyS


2. HW 原理图介绍

2.1. 公版电路图说明

关于UART的电路图做简单的说明,QFN88pin EVB board,对应chip来说我们是有两路UART port:

  • CON2/JP42 for debug UART

  • JP124 for FUART

如下图:

图2-1

图2-2

2.2. EVB board uart pad介绍

在内部共有一路debug uart与一路Fuart,公版电路图上显示两路pad,对应EVB的board亦有两路pad,分别对应CON2/JP42、JP124。Debug UART 仅供系统 logging 与 debug 使用.

每一个具体的board上对应的接口都可以配置具体的uart(可以通过缓存器将所有的uart都通过一个pad来测试,可以通过敲缓存器实现测试)。


3. IPCM UART SW配置方法

IPCM 的uart与具体的pad配置流程如下:

先在linux-4.9\arch\arm\boot\dts\infinity6.dtsi

aliases {

    console = &uart0;

    serial0 = &uart0;

    serial1 = &uart1;

    serial2 = &fuart;

};

…….

uart0: uart@1F221000 {

    compatible = "mstar,uart";

    reg = <0x1F221000 0x100>;

    interrupts = <GIC_SPI INT_IRQ_UART_0 IRQ_TYPE_LEVEL_HIGH>;

    clocks = <&CLK_uart0>;

    status = "ok";

};

uart1: uart@1F221200 {

    compatible = "mstar,uart";

    reg = <0x1F221200 0x100>;

    interrupts = <GIC_SPI INT_IRQ_UART_1 RQ_TYPE_LEVEL_HIGH>;

    clocks = <&CLK_uart1>;

    pad = <PAD_UART1_TX>;

    status = "ok";

};

fuart: uart@1F220400 {

    compatible = "mstar,uart";

    reg = <0x1F220400 0x100>, <0x1F220600 0x100>;

    interrupts = <GIC_SPI INT_IRQ_FUART RQ_TYPE_LEVEL_HIGH>, <GIC_SPI   INT_IRQ_URDMA IRQ_TYPE_LEVEL_HIGH>;

    clocks = <&CLK_fuart>;

    dma = <1>;

    pad = <PAD_UART0_TX>;

    status = "ok";

};

该文件是linux系统的设备树配置文件,该档中的uart0—fuart对应在系统中通过命令查看到的ttyS0—ttyS2如下:

图3-1

对应配置文件说明如下:

图3-2

在板子中查看uart设备相关信息可直接cat ms_uart文件,如下:

图3-3

也可以通过命令行查看如下:

图3-4

dts里默认ttyS1用PAD_UART0_TX RX,ttyS2用 PAD_UART1_TX RX。

PAD_FUART_TX RX可以做ttyS1。


4. 测试UART

  1. 在网上dump一个开源的测试程序。

    参考地址: https://github.com/cbrake/linux-serial-test

    按照提示方式下载即可。

    图4-1

    下载后的文件为Linux-serial-test.c。

  2. 编译下载的.c文件

    用serial_test.tar.gz,里面包含makefile以及serial_test.c档,然后操作如下步骤:

    tar xzvf serial_test.tar.gz
    
    cd serial_test
    
    make
    

    然后去bin目录下取可执行文件serial_test

    具体操作如下:

    图4-2

  3. EVB board上对应的JP-Connection都可以配置具体的uart,具体如下:

    图4-3

    图4-4

    图4-5

    对应pc端的连接

    图4-6

    图4-7

  4. 将服务器mount的一个目录mount到板子上,如下目录mount到board上:

    /home/gavin.ran/gavin_demo/serial_test
    

    用在board上执行:mount -t nfs -o nolock

    172.21.28.81:/home/gavin.ran/gavin_demo /system/vendor
    

    然后进入:cd /system/vendor/serial_test 测试.