【发布时间】:2015-07-24 13:16:42
【问题描述】:
我正在开发嵌入式 Linux(通过 buildroot 构建,不是由我构建,但我可以访问)。 我正在通过 USB 连接蜂窝调制解调器,这会创建 ttyACM0(以及更多 ttyACMx)。 我正在使用 pppd 运行调制解调器 - 它工作正常。
我想要做的是更新聊天脚本中的 APN(在运行 pppd 之前),通过询问“AT+CIMI”并解析响应中的网络号。
我尝试了atinout,这是一个非常小的 c 语言程序,它可以在我的笔记本电脑 (Ubuntu) 和另一个嵌入式 Linux 上运行,但在这个平台上失败了。它使用 fopen()。 我试图查明问题并发现 fopen() 失败并出现 errno 5(输入/输出错误)。 我改为 open() 并且它有效!我可以发送 AT 请求并查看收到的响应。
那么 - 怎么了?
*** PS - /dev 安装为 tmpfs,它运行busybox mdev(与 udev 的 devtmpfs 相对,在我的笔记本电脑上)。
谢谢。
【问题讨论】:
-
您可以通过将版本的
strace输出与fopen()和open()进行比较来进一步调查;也许open()是用不同的标志调用的。