Ubuntu 12.04串口配置,带有超级IO芯片SCH3114

时间:2015-04-03 18:43:45

标签: ubuntu serial-port uart upstart

我正在尝试在ubuntu 12.04服务器版本启动期间配置我的UART端口,在启动过程中其他一些东西也在弄乱uart端口配置。

细节:

  1. 带有4个UART的MSC SCH3114超级IO
  2. Ubuntu 12.04服务器
  3. 已安装setserial但已禁用所有启动脚本
  4. BIOS配置为启用所有端口。配置IO端口@ 0x03e8, 0x03ef,0x02e8和0x02ef
  5. 使用ttyS2上的upstart
  6. 配置getty
  7. 我想在启动此getty之前正确配置端口
  8. 目标是在启动/etc/init/ttyS2.config中的getty之前使用upstart在引导期间将端口0x02e8 / 0x02ef重新配置为0x04e8 / 0x04ef。这是必需的,因为需要重新配置superIO芯片以实现正确的操作。可以使用用户空间程序通过简单的呼叫配置端口:./ sioca -q<< EOF<< logdev concom(简化语义)。

    问题: 到目前为止,我只是将/etc/init/ttyS2.conf类似于:

    来帮助实现我的目标
    start on stopped rc RUNLEVEL:[2345]
    ...
    pre-start script
        sleep 5;
        *here is the user space sioca tool call to configure the super IO hardware (to set the correct IO port and interrupt (0x04** to IRQ 3, 0x03* to IRQ 4)
        *here are my setserial commands to tell the kernel where to find each UART
    end script
    ...
    *here is the actual /sbin/getty ttyS2 start*
    

    我希望有一些事情我可以开始,例如"开始在tty-device-added DEVNAME = ttyS2",但这似乎不起作用。以上示例也确实需要包含“睡眠5”,否则我的端口配置不正确(端口突然忙碌且无法配置,或端口仍设置为0x02e )。我不知道为什么我需要睡觉。

    在启动过程中,我确实在syslog中看到了与pnp相关的日志记录,它告诉我端口设置为0x02e *。有人能解释一下这里发生了什么以及我如何可靠地配置这些端口?有些驱动程序是否同时执行某些初始化导致混乱的端口配置?

    总结如下:

    1. 我需要在启动ttyS2上的getty之前重新配置端口 (否则端口正在使用中)
    2. 在配置端口之前,我需要调用用户空间程序 配置superIO芯片
    3. 用户空间程序输出端口IO位置和中断号码,我必须使用setserial来配置端口
    4. 我也无法弄清楚什么是uart配置,为什么我需要睡5秒才能使示例新贵脚本工作,最重要的是我如何可靠地配置端口知道没有其他驱动程序/启动脚本将撤消我的正确配置
    5. 我希望我已经为我的问题收集了足够清晰的信息。感谢。

0 个答案:

没有答案