【问题标题】:device file open failed in linux systemlinux系统打开设备文件失败
【发布时间】:2014-02-05 03:35:42
【问题描述】:

我正在使用基于 omap4 的系统。它有 4 个 UART 端口,因此内核制作:

/dev/ttyO0
/dev/ttyO1
/dev/ttyO2
/dev/ttyO3

当我从用户空间打开时:

fd = open("/dev/ttyO1",O_RDONLY)

它成功打开,我可以用它进行读写。

但是当我打开时:

fd = open("/dev/ttyO3",O_RDONLY)

失败了。

我仍然可以在我的系统中看到/dev/ttyO3 节点,为什么我无法打开它?有什么想法吗?

【问题讨论】:

  • 您的意思是“O”还是“0”?
  • @IgnacioVazquez-Abrams 它的首都 O
  • 检查错字。它可能是数字 0 而不是大写字母 O(反之亦然)
  • 你打开设备O_RDONLY,并声称你可以“读写”??!! “失败”后需要打印出errno
  • 你的前提是根本错误的。尽管它们是对内核对象的引用,但设备节点不是由内核创建的,而是必须从用户空间创建,要么由 udev 等守护进程创建,要么(在更简单的系统上)它们可以通过使用mknod 的脚本在运行时或在创建持久文件系统映像期间创建。设备节点的权限可以在创建时设置,或者稍后使用chmod 设置,就像你最终做的那样。

标签: c linux linux-kernel uart


【解决方案1】:

我已授予该节点的权限,现在我可以打开该节点

chmod 0606 /dev/ttyO3

【讨论】:

    最近更新 更多