b0b*_*b0b 3 interrupt linux-kernel sysfs gpio
假设gpio X可以作为输入引脚在sysfs中导出,在这之后,将在/ sys/class/gpio /中创建一个名为gpioX的目录.gpioX /包含少量文件,例如"value",表示gpio X的当前状态(高或低).
当施加到引脚X的信号改变其状态(例如从低到高)时会发生什么(在内核空间中)?
我的意思是,在转换之前,gpioX/value包含"low",但之后它将包含"high"值.操作系统如何更新此文件?
我认为需要一个中断机制.它是否使用中断机制来更新sysfs?
操作系统如何更新此文件?我认为需要一个中断机制.
它不需要中断机制,除非它支持轮询(man poll)或备用异步通知.至少对于大多数版本,/ sys/class/gpio /仅在有人读取文件时读取GPIO级别.
sysfs,debugfs,configfs,procfs等是虚拟文件系统.当您访问该文件时,Linux内核中的代码将运行以提供该值.sysfs只提供类似接口的文件; 这并不意味着它以实际状态为后盾.状态是GPIO级别,可以随时读取.
gpio_value_show()似乎是当前的实现.你用中断描述的是可能的.它可以通过sysfs_set_active_low()函数或sysfs文件/ sys/class/gpio/gpioN/edge来完成.如果GPIO不支持中断,写入文件可能会返回错误.有关更多信息,请参阅gpio.txt(特别是对于您的特定Linux版本).
| 归档时间: |
|
| 查看次数: |
2258 次 |
| 最近记录: |