PCI串口晶振由1.8432MHz变为14.7456MHz调试

来源:互联网 发布:java数据库编程入门 编辑:程序博客网 时间:2024/06/13 21:48

==============================================================
作者:shanzongyingcao
网址:http://blog.csdn.net/shanzongyingcao
版权所有,转载请保留此段声明

==============================================================

调整base_baud为921600

  • PCI串口,晶振由1.8432MHz变为14.7456MHz,先将base_baud由原先的115200调整为921600,晶振即为(base_baud*16)
  • 这里以芯片0XuPCI954(ID为0x1415:9501)为例;
  • 在…/linux-source-4.4.0/drivers/tty/serial/8250/8250_pci.c文件中,找到 serial_pci_tbl[]数组:
    static struct pci_device_id serial_pci_tbl[] = {
    ……
    }

    并找到对应的VENDOR_ID及DEVICE_ID,这里对应如下:
    static struct pci_device_id serial_pci_tbl[] = {
    ……
    {PCI_VENDOR_ID_OXSEMI,PCI_DEVICE_ID_OXSEMI_16PCI954,
    PCI_ANY_ID, PCI_ANY_ID, 0, 0,
    pbn_b0_4_115200 }
    ……
    }
    其中,pbn_b0_4_115200配置base_baud,这里改为pbn_b0_4_921600,将base_baud设为921600,这样就匹配了晶振14.7456MHz。
    此时,驱动中默认TCR=16,支持的最大波特率为921600bps。
    要支持更高的波特率,需修改TCR,如:
    TCR=4,支持的最大波特率为3686400bps。
    修改方法,待研究……