linux中的GPIO API在时间上是否确定?

linux中的GPIO API在时间上是否确定?,linux,linux-kernel,linux-device-driver,gpio,Linux,Linux Kernel,Linux Device Driver,Gpio,我需要在我的驱动程序中调用gpio_get_value、gpio_set_value、gpio_direction_input/output,并且有一个定时要求,要求函数调用在不到5us的时间内返回 gpiolib能否满足这一要求,还是不确定?如果没有,解决办法是什么?直接访问GPIO寄存器 非常感谢。调用其中一个函数需要执行linux内核函数,因此至少有两个上下文切换:一个用于运行内核代码,另一个用于返回userland 这些开关可能意味着,如果要执行中断或信号,可能会浪费一些时间 无论如何,

我需要在我的驱动程序中调用gpio_get_value、gpio_set_value、gpio_direction_input/output,并且有一个定时要求,要求函数调用在不到5us的时间内返回

gpiolib能否满足这一要求,还是不确定?如果没有,解决办法是什么?直接访问GPIO寄存器


非常感谢。

调用其中一个函数需要执行linux内核函数,因此至少有两个上下文切换:一个用于运行内核代码,另一个用于返回userland

这些开关可能意味着,如果要执行中断或信号,可能会浪费一些时间

无论如何,如果您需要确定的时间期限,您需要切换到实时补丁内核


我不知道5us是否可行,这取决于系统负载,取决于活动驱动程序(例如,有一个读/写文件系统),但您可以进行测试。

调用其中一个函数需要执行一个linux内核函数,因此至少有两个上下文切换:一个用于运行内核代码,另一个用于返回userland

这些开关可能意味着,如果要执行中断或信号,可能会浪费一些时间

无论如何,如果您需要确定的时间期限,您需要切换到实时补丁内核


我不知道5us是否可行,这取决于系统负载、活动驱动程序(例如,存在读/写文件系统),但您可以进行测试。

您是否尝试在设备上调用gpio_xxx API并分析所用的时间?结果是否足够确定?…您是否尝试在设备上调用gpio_xxx API并分析所用的时间?结果是否足够确定?…是的,但是,如果要求操作序列在开始时的一定时间内完成,但开始的延迟并不重要,那么在不可抢占的上下文中从内核中立即执行所有三个操作就足够了。但是,如果需要操作的实际时间,那么可能需要实时扩展。我同意你的观点@ChrisStratton。问题是,列出的三个函数是用于与gpios接口的三个函数,用于设置/获取值和获取有关pin配置的信息,因此我认为它们将在不同的时间点被调用,而不是按直接顺序调用。是的,但是,如果要求操作序列在开始时的一定时间内完成,但开始的延迟并不重要,那么在不可抢占的上下文中从内核中立即执行所有三个操作就足够了。但是,如果需要操作的实际时间,那么可能需要实时扩展。我同意你的观点@ChrisStratton。问题是,列出的三个函数是用于与gpios接口的三个函数,用于设置/获取值和获取有关pin配置的信息,因此我认为它们将在不同的时间段被调用,而不是按直接顺序调用。