在内核空间控制gpio有两种方法,第一种是通过调用gpiolib的接口来控制gpio;第二种是通过ioremap来控制gpio。 2.1 gpiolib控制gpio 2.1.1 gpiolib简介 Linux Kernel 中对 GPIO 资源进行了抽象,抽象出一个叫做 Gpiolib 的东西。 中间层是 Gpiolib,用于管理系统中的 GPIO。Gpiolib 汇总了 GPIO 的通用操作,根据 GPIO...
在内核空间控制gpio有两种方法,第一种是通过调用gpiolib的接口来控制gpio;第二种是通过ioremap来控制gpio。 2.1 gpiolib控制gpio 2.1.1 gpiolib简介 Linux Kernel 中对 GPIO 资源进行了抽象,抽象出一个叫做 Gpiolib 的东西。 中间层是 Gpiolib,用于管理系统中的 GPIO。Gpiolib 汇总了 GPIO 的通用操作,根据 GPIO...
最近改驱动程序,看到驱动代码中既有gpio_direction_output也有gpio_set_value。 结论 作用相同,但有差别: gpio_direction_output (port_num,0/1),在某个GPIO口写上某个值的同时,把端口设置为输出模式。 gpio_set_value(port_num,0/1)一般只是在这个GPIO口的寄存器上写上某个值,至于这个端口是否设置为输出,...
int gpio_direction_output(unsigned gpio, int value) 函数功能:配置GPIO引脚为输出功能,并且输出一个value值(1高电平/0低电平) 参数: gpio:GPIO硬件对应的软件编号 value:输出的值 int gpio_direction_input(unsigned gpio) 函数功能:配置GPIO为输入功能 int gpio_set_value(unsigned gpio, int value) 函数功能...
•设备树文件的配置是该 SoC 所有方案的通用配置,对于 ARM64 CPU 而言,设备树的路径为:kernel/{KERNEL}/arch/arm64/boot/dts/sunxi/sun*-pinctrl.dtsi。 •设备树文件的配置是该 SoC 所有方案的通用配置,对于 ARM32 CPU 而言,设备树的路径为:kernel/{KERNEL}/arch/arm32/boot/dts/sun*-pinctrl.dtsi。
echo /sbin/mdev > /proc/sys/kernel/hotplug 1. 2. 3. 4. 保证根文件系统rootfs的配置文件fstab中必须有以下三句话: /proc作为procfs虚拟文件系统的入口 /sys作为sysfs虚拟文件系统的入口 /dev作为tmpfs虚拟文件系统的入口 这三种文件系统的内容都是由内核创建并且创建在内存中,掉电丢失。
static inline void gpio_set_value(unsigned int gpio, int value) { __gpio_set_value(gpio, value); } 当我们将GPIO的方向设置为输入时,可以使用上面的函数gpio_get_value()来获取当前的IO口电平值,当GPIO的方向设置为输出时,使用函数gpio_set_value()可以设置IO口的电平值。
3.2.1 device tree 对 gpio 控制器的通用配置 在kernel/{KERNEL}/arch/arm64/boot/dts/sunxi/sun-pinctrl.dtsi 文件中 (Linux5.4 直接放在 sun.dtsi 中),配置了该 SoC 的 pinctrl 控制器的通用配置信息,一般不建议修改,有 pinctrl 驱动维护者维护。目前,在 sunxi 平台,我们根据电源域,注册两个 pinctrl 设...
输入指令:cat /sys/kernel/debug/gpio 即可获得GPIO的映射表,以及他的起始地址。 (1)这个时候有人可能就会认为,这里搜索到的gpiochip5就是GPIO5了。答案是否定的。 (2)为什么这么说呢?因为我上面说了,不同厂家对GPIO的命名是不同的,他们厂家的工程师最终会将这些GPIO抽象成一个引脚号。在这个抽象的过程中驱动...