Linux多串口驱动

阅读: 评论:0

Linux多串口驱动

Linux多串口驱动

问题描述:机器集成了13个串口,linux操作系统启动后,只能识别到4个串口且无法使用。
是否解决:已基本解决。
问题分析:
    经测试,该ATM定制机使用的串口控制芯片为通用串口控制器8250系列的16550A型号。该芯片内置3根地址线寻址范围达8字节,具有10个可编程寻址寄存器(通过地址复用),支持4级中断控制,收发双缓冲寄存器,拥有16字节fifo缓存。
    8250系列芯片默认的IO寄存器基地址以及中断号分布如下:
    /dev/ttyS0 (COM1), port 0x3f8, irq 4
    /dev/ttyS1 (COM2), port 0x2f8, irq 3
    /dev/ttyS2 (COM3), port 0x3e8, irq 4
    /dev/ttyS3 (COM4), port 0x2e8, irq 3
    但是**ATM机没有按照默认约定部署板级芯片,而是采用以下的方式分配IO寄存器地址:
    0x2E8,     /* COM1*/    
    0x3E8,     /* COM2 */    
    0x240,     /* COM3 */    
    0x248,     /* COM4 */    
    0x250,     /* COM5 */    
    0x258,     /* COM6 */    
    0x260,     /* COM7 */    
    0x268,     /* COM8 */    
    0x270,     /* COM9 */    
    0x278,     /* COM10 */    
    0x2F0,     /* COM11 */    
    0x2F8,     /* COM12 */        /* BIOS 中默认关闭 */
    0x3F8,     /* COM13 */        /* BIOS 中默认关闭 */
    而linux内核采用8250系列芯片约定的IO基地址进行配置,且默认只支持创建最多4个串口设备:
 
    ===================  _ASM_X86_SERIAL_H ==================
     #define SERIAL_PORT_DFNS               
     /* UART    CLK    PORT    IRQ    FLAGS                */   
    { .uart = 0,  BASE_BAUD,  0x3F8,  4,  STD_COMX_FLAGS }, /* ttyS0 */   
    { .uart = 0,  BASE_BAUD,  0x2F8,  3,  STD_COMX_FLAGS }, /* ttyS1 */   
    { .uart = 0,  BASE_BAUD,  0x3E8,  4,  STD_COMX_FLAGS }, /* ttyS2 */   

本文发布于:2024-02-01 14:22:39,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170676856137220.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:串口   Linux
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23