首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于CentOS /RedHat7.8的Pericom串口驱动程序(适当的baud_base)

用于CentOS /RedHat7.8的Pericom串口驱动程序(适当的baud_base)
EN

Stack Overflow用户
提问于 2020-08-04 17:11:17
回答 1查看 121关注 0票数 0

我需要将CentOS 8.2附带的串行驱动程序移植到CentOS 7.8,并且,如果可能的话,对它进行一些改进(除非这不是唯一的解决方案)。

硬件是一台CompactPCIe计算机,它包括:

  • CPU卡+侧卡SCZ-NVM (2 x RS-232,串行控制器: Pericom半导体器件7954,子系统: Pericom半导体器件SU2 2- card ) (4 x RS-232,串行控制器: Pericom半导体器件7954,子系统: EKF Elektronik GmbH Device e224)

在CentOS 7.8中,6个串行端口中没有一个能工作;在CentOS 8.2中,所有串行端口都能正常工作*,所以我认为CentOS 7.8附带的驱动程序是不正确的。造成此问题的原因是"baud_base“参数(115200)不正确,临时解决方案是将其设置为921600 (使用set串行)。

* CentOS 7.8/8.2提供的串行口驱动程序有一个共同的缺点,不是很大的缺点:

  • 检测到的串行端口是现有端口的两倍(4代替2,8代替4)。

如果有一个驱动程序来设置正确的"baud_base“并检测出正确的串口数量,那就太好了。

在内核源代码中,我可以找到负责为上面提到的硬件设置"baud_base“的部分吗?(以及负责检测串口数字的部分,但这并不重要)它最终会编译内核模块还是编译整个内核?

代码语言:javascript
复制
lspci -vvv

08:00.0 Serial controller: Pericom Semiconductor Device 7954 (prog-if 02 [16550])
    Subsystem: EKF Elektronik GmbH Device e224
    Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Interrupt: pin A routed to IRQ 19
    Region 0: I/O ports at a000 [size=64]
    Region 1: Memory at d1100000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: [80] Power Management version 3
        Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
        Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
    Capabilities: [8c] MSI: Enable- Count=1/1 Maskable- 64bit+
        Address: 0000000000000000  Data: 0000
    Capabilities: [9c] Vital Product Data
        Not readable
    Capabilities: [a4] Vendor Specific Information: Len=28 <?>
    Capabilities: [e0] Express (v1) Legacy Endpoint, MSI 00
        DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
            ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
        DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
            RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
            MaxPayload 128 bytes, MaxReadReq 128 bytes
        DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
        LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <512ns, L1 <1us
            ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
        LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
            ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
        LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
    Capabilities: [100 v1] Advanced Error Reporting
        UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
        UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
        UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
        CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
        CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
        AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
    Kernel driver in use: serial

09:00.0 Serial controller: Pericom Semiconductor Device 7954 (prog-if 02 [16550])
    Subsystem: Pericom Semiconductor Device 7954
    Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Interrupt: pin A routed to IRQ 18
    Region 0: I/O ports at 9000 [size=64]
    Region 1: Memory at d1000000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: [80] Power Management version 3
        Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
        Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
    Capabilities: [8c] MSI: Enable- Count=1/1 Maskable- 64bit+
        Address: 0000000000000000  Data: 0000
    Capabilities: [9c] Vital Product Data
        Not readable
    Capabilities: [a4] Vendor Specific Information: Len=28 <?>
    Capabilities: [e0] Express (v1) Legacy Endpoint, MSI 00
        DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
            ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
        DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
            RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
            MaxPayload 128 bytes, MaxReadReq 128 bytes
        DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
        LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <512ns, L1 <1us
            ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
        LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
            ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
        LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
    Capabilities: [100 v1] Advanced Error Reporting
        UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
        UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
        UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
        CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
        CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
        AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
    Kernel driver in use: serial
EN

回答 1

Stack Overflow用户

发布于 2020-08-04 19:52:10

在3.10内核中,baud_table位于驱动程序/tty/tty_ioctl.c中。你会注意到它支持921600赫兹。https://elixir.bootlin.com/linux/v3.10/source/drivers/tty/tty_ioctl.c#L263

在后面的4.12内核中,添加了一个新文件tty_baudrate.c。该文件似乎是备份到CentOS 7的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63251875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档