Jul*_*old 2 linux i2c embedded-linux
我刚刚开始研究(嵌入式)linux(准确地说是 Beaglebone Black)上的 I2C 支持。既然是 linux,一切都是一个文件,所以 I2C 也是一个文件也就不足为奇了。
int file = open( "/dev/i2c-0", O_RDWR );
Run Code Online (Sandbox Code Playgroud)
然后通过 选择该总线上的实际地址ioctl()。我的问题是 -在应用程序执行期间缓存是否安全甚至合法file?在我天真的眼睛看来,每 250 毫秒打开一个资源进行读取的开销对内核来说是不必要的压力。所以打开是有效的,然后ioctl()只要我需要就可以用来切换地址,还是必须close()在读写之间使用描述符?
file在应用程序执行期间缓存是否安全甚至合法?
只要您的程序需要继续执行,文件描述符(从 open() 返回)就是有效的。
/dev 中的设备节点可能类似于文件名,但是一旦您查看了 syscall 接口,它们的处理方式就与文件系统条目不同。设备文件描述符上的 open() 或 read() 将调用设备驱动程序,而对于实际文件,其文件系统被调用,最终可能调用存储设备驱动程序。
在我天真的眼睛看来,每 250 毫秒打开一个资源进行读取的开销对内核来说是不必要的压力。
是的,因为那些 open() 和 close() 系统调用是不必要的。
所以打开是有效的,然后只要需要就使用ioctl()来切换地址,
是的,这是正确的用法。
或者我必须在读取和写入之间关闭()描述符?
这不是必需的,也不建议这样做。
| 归档时间: |
|
| 查看次数: |
483 次 |
| 最近记录: |