UART使用参考

Version 1.0


1. 概述

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


2. 关键词

UART ttyS0 ttyS1 ttyS2


3. UART dts配置

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

  1. PADMUX配置

    查找TMUX表找到要复用的GPIO和对应的复用mode,下面以PAD_PM_UART_RX1和PAD_PM_UART_TX1复用成UART1为例,如下图可以看到需要复用的mode是uart1_mode7。

    在padmux.dtsi中配置mode格式如下图的,"<>"中第一个值为PAD_Name,第二个值为要设置的mode,第三个值为PAD在该mode下对应的功能。

    如上图中配置完成后,请检查是否有其他的PAD也设置成了需要设置的mode,重复设置会引起冲突导致配置padmux失效,如果冲突的mode不需要使用则可以将其注释掉,如果需要使用,请重新选择mode。同时检查相同PAD是否有复用成其他mode,如果有则会存在冲突,GPIO只会被设置成高优先级的复用。

  2. 节点配置

    打开mercury6.dtsi可以找到下图中内容,aliases中的serialx对应在系统中/dev/下查看到的ttyS0-ttyS4,通过修改aliases中内容,可以修改ttyS节点对应的uart。确保使用的uart中的status = "ok"。如下图中配置,我们使用的uart1对应系统中/dev/ttyS1。

    修改完重新编译kernel,烧录到板子上。完成到这步,uart1已经可以正常使用,若要开启其他几个uart,参考上述步骤去开启即可。

    对应配置文件说明如下:

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

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


4. 测试UART

  1. 在网上dump一个开源的测试程序,点击获取参考程序

    按照如下方式下载即可:

    下载后的文件如linux-serial-test.c

  2. 编译下载的serial_test.tar.gz

    包含makefile以及serial_test.c档,然后操作如下步骤:

    tar xzvf serial_test.tar.gz
    cd serial_test
    make
    

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

    具体操作如下:

    对应pc端的连接

  3. 将服务器mount的一个目录mount到板子上

    /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进行 测试。