我有一个串行全球定位系统连接到嵌入式PC通过串行<->USB适配器(多产的PL2303)。每隔5分钟,shell脚本就会运行一个Python脚本,该脚本通过Pyserial读取GPS数据,然后将数据上传到Internet。如果我把我的GPS直接插到电脑上(通过PL2303),一切正常,我的系统永远运行,但如果我在pl2303和电脑之间使用usb集线器,我会遇到这样的问题: Python脚本运行3-6个小时,然后它进入D状态(不中断睡眠),外壳脚本不能再运行它(我只能关闭系统,不可能终止)。我检查了我的脚本,我使用了来自不同供应商的usb集线器(无论是否有电源),结果都是一样的。
PS我的嵌入式pc (来自Embeddedarm)运行的是更新后的Debian Lenny。
我该怎么解决呢?
发布于 2011-03-12 17:18:48
处于D状态的进程意味着内核(很可能是设备驱动程序)已将进程置于不可中断的休眠状态。
老实说,作为用户,您可能对此几乎无能为力,除非您打算调试内核USB堆栈和/或特定的USB芯片组设备驱动程序。
这就是我们要做的-
另一个建议是尝试在Debian发布的更新的内核版本中看看这个问题是否会消失。如果是这样的话,您知道这是一个在较新版本的内核中修复的错误,您可以选择使用较新的版本,并尝试将修复移植到您所关心的旧版本。
祝好运!你会需要它的。
发布于 2011-03-12 17:32:10
https://stackoverflow.com/questions/5281579
复制相似问题