佚名通过本文主要向大家介绍了openwrt gpio,openwrt做ac控制,openwrt 远程控制,openwrt ac控制器,openwrt控制台等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:请教openwrt系统gpio控制问题
描述:
最近在调试openwrt(rt5350方案) gpio控制功能,系统启动后默认只有一个gpio(gpio0 led专用)口可以控制。于是仿照leds-gpio驱动做了两个相同的驱动,并开启两个不同的gpio口(gpio1 gpio2),程序启动后打印如下:
[ 8.210000] leds-gpio gpio-leds.5: pins are not configured from the driver //这个是leds-gpio驱动打印的,这个gpio0是可以控制的
[ 8.220000] leds-gpio gpio-zigbee0.6: pins are not configured from the driver //这个是仿照leds-gpio些的,gpio1不可控制
[ 8.240000] rt2880-pinmux pinctrl.1: pin 1 is not set to gpio mux //这里说是未设置gpio mux
[ 8.250000] rt2880-pinmux pinctrl.1: request() failed for pin 1
[ 8.260000] rt2880-pinmux pinctrl.1: pin-1 (pio:1) status -22
[ 8.270000] leds-gpio gpio-zigbee1.7: pins are not configured from the driver //这个也是仿照leds-gpio些的,gpio2不可控制
[ 8.290000] rt2880-pinmux pinctrl.1: pin 2 is not set to gpio mux
[ 8.300000] rt2880-pinmux pinctrl.1: request() failed for pin 2
[ 8.310000] rt2880-pinmux pinctrl.1: pin-2 (pio:2) status -22
于是通过打印信息找到\trunk\build_dir\target-mipsel_24kec+dsp_uClibc-0.9.33.2\linux-ramips_rt305x\linux-3.10.36\arch\mips\ralink\Rt305x.c中存在gpio mux相关设置信息
static struct rt2880_pmx_func i2c_func[] = { FUNC("i2c", 0, 1, 2) }; //默认i2c占用了gpio 1 和2
于是做如下调整
static struct rt2880_pmx_group rt5350_pinmux_data[] = {
GRP("i2c", i2c_func, 0,RT305X_GPIO_MODE_JTAG),//此处将第三个参数设置成0,之后上面的pin 1 /2 is not set to gpio mux信息未出现
GRP("spi", spi_func, 1, RT305X_GPIO_MODE_SPI),
GRP("uartf", uartf_func, RT305X_GPIO_MODE_UART0_MASK,
RT305X_GPIO_MODE_UART0_SHIFT),
GRP("uartlite", uartlite_func, 1, RT305X_GPIO_MODE_UART1),
GRP("jtag", jtag_func, 1, RT305X_GPIO_MODE_JTAG),
GRP("led", rt5350_led_func, 1, RT5350_GPIO_MODE_PHY_LED),
{ 0 }
};
此时gpio-zigbee0.6 及gpio-zigbee1.7 leds驱动可以操作gpio1 、2的设备节点,但对其设置高电平或低电平无效,怀疑是驱动问题,于是
删掉我写的驱动,重新编译,用/sys/class/gpio/export系统自带的gpio操作接口导出gpio后,改变其电压也无效,操作过程,及返回结果如下:
root@OpenWrt:/sys/devices/10000000.palmbus/10000600.gpio/gpio/gpio1# cat direction
out
root@OpenWrt:/sys/devices/10000000.palmbus/10000600.gpio/gpio/gpio1# cat value
0
root@OpenWrt:/sys/devices/10000000.palmbus/10000600.gpio/gpio/gpio1# echo "1">value
root@OpenWrt:/sys/devices/10000000.palmbus/10000600.gpio/gpio/gpio1# cat value
0
不知是否有其他位置需要调整,才能正常控制gpio,有知道的请告知!!!!
描述:
本帖最后由 a181622974 于 2014-06-15 23:47:07 编辑
openwrtgpio驱动linux
最近在调试openwrt(rt5350方案) gpio控制功能,系统启动后默认只有一个gpio(gpio0 led专用)口可以控制。于是仿照leds-gpio驱动做了两个相同的驱动,并开启两个不同的gpio口(gpio1 gpio2),程序启动后打印如下:
[ 8.210000] leds-gpio gpio-leds.5: pins are not configured from the driver //这个是leds-gpio驱动打印的,这个gpio0是可以控制的
[ 8.220000] leds-gpio gpio-zigbee0.6: pins are not configured from the driver //这个是仿照leds-gpio些的,gpio1不可控制
[ 8.240000] rt2880-pinmux pinctrl.1: pin 1 is not set to gpio mux //这里说是未设置gpio mux
[ 8.250000] rt2880-pinmux pinctrl.1: request() failed for pin 1
[ 8.260000] rt2880-pinmux pinctrl.1: pin-1 (pio:1) status -22
[ 8.270000] leds-gpio gpio-zigbee1.7: pins are not configured from the driver //这个也是仿照leds-gpio些的,gpio2不可控制
[ 8.290000] rt2880-pinmux pinctrl.1: pin 2 is not set to gpio mux
[ 8.300000] rt2880-pinmux pinctrl.1: request() failed for pin 2
[ 8.310000] rt2880-pinmux pinctrl.1: pin-2 (pio:2) status -22
于是通过打印信息找到\trunk\build_dir\target-mipsel_24kec+dsp_uClibc-0.9.33.2\linux-ramips_rt305x\linux-3.10.36\arch\mips\ralink\Rt305x.c中存在gpio mux相关设置信息
static struct rt2880_pmx_func i2c_func[] = { FUNC("i2c", 0, 1, 2) }; //默认i2c占用了gpio 1 和2
于是做如下调整
static struct rt2880_pmx_group rt5350_pinmux_data[] = {
GRP("i2c", i2c_func, 0,RT305X_GPIO_MODE_JTAG),//此处将第三个参数设置成0,之后上面的pin 1 /2 is not set to gpio mux信息未出现
GRP("spi", spi_func, 1, RT305X_GPIO_MODE_SPI),
GRP("uartf", uartf_func, RT305X_GPIO_MODE_UART0_MASK,
RT305X_GPIO_MODE_UART0_SHIFT),
GRP("uartlite", uartlite_func, 1, RT305X_GPIO_MODE_UART1),
GRP("jtag", jtag_func, 1, RT305X_GPIO_MODE_JTAG),
GRP("led", rt5350_led_func, 1, RT5350_GPIO_MODE_PHY_LED),
{ 0 }
};
此时gpio-zigbee0.6 及gpio-zigbee1.7 leds驱动可以操作gpio1 、2的设备节点,但对其设置高电平或低电平无效,怀疑是驱动问题,于是
删掉我写的驱动,重新编译,用/sys/class/gpio/export系统自带的gpio操作接口导出gpio后,改变其电压也无效,操作过程,及返回结果如下:
root@OpenWrt:/sys/devices/10000000.palmbus/10000600.gpio/gpio/gpio1# cat direction
out
root@OpenWrt:/sys/devices/10000000.palmbus/10000600.gpio/gpio/gpio1# cat value
0
root@OpenWrt:/sys/devices/10000000.palmbus/10000600.gpio/gpio/gpio1# echo "1">value
root@OpenWrt:/sys/devices/10000000.palmbus/10000600.gpio/gpio/gpio1# cat value
0
不知是否有其他位置需要调整,才能正常控制gpio,有知道的请告知!!!!