linux gpio libc
对linux c app里面的一个gpio操作云里雾里半天,是时候好好理理了。
- https://www.kernel.org/doc/Documentation/gpio/sysfs.txt
- https://www.kernel.org/doc/Documentation/gpio/gpio-legacy.txt
主要是这gpio number是如何同pin number 一一对应的。
奇怪,今天发现sys/class/gpio 下面的gpio没有了。只剩下gpiochip了。原来需要在应用export 对应io number。
这里的export和unport以及之后对 io number value的read write 操作都是在gpiolibc 上实现的。
接下来需要理一理gpiolibc 的实现,gpiolibc 所有操作都是基于gpio_desc *desc 变量。改变量通过gpio_desc 结构体定义这里的数组。数组索引就对应我们这里的io number。
这个结构体的实现主要是是通过gpio_chip来操作的,例如gpiod_set_value 是通过gpio_desc 获取到gpio_chip 然后在通过gpio_chip->set() 实现IO的读写。
所以对于gpio_chip 的初始化就很重要了。然而我并没有找。
对于如上计算的bank 1-7依次对应 PB-PH。...