主要参考资料 :不用Libmraa一样可以控制GPIO
http://makerpro.cc/2016/04/how-to-control-7688-gpio-without-libmraa/
下载
https://raw.githubusercontent.com/MediaTek-Labs/linkit-smart-7688-feed/master/mtk-linkit/src/pinmux.c
编译
/opt/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-gcc -L/opt/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L/opt/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/usr/lib pinmux.c 在LEDE环境 /LEDE/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16/bin/mipsel-openwrt-linux-gcc -L/LEDE/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16/lib -L//LEDE/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16/usr/lib pinmux.c
运行
./pinmux get Group i2c - i2c [gpio] Group uart0 - [uart] gpio Group uart1 - [uart] gpio Group uart2 - [uart] gpio pwm Group pwm0 - pwm [gpio] Group pwm1 - pwm [gpio] Group refclk - refclk [gpio] Group spi_s - spi_s [gpio] Group spi_cs1 - spi_cs1 [gpio] refclk Group i2s - i2s [gpio] pcm Group ephy - ephy [gpio] Group wled - [wled] gpio
相关下载
http://labs.mediatek.com/zh-cn/download/AGSSkG38 (OpenWRT SDK For Linux)
http://labs.mediatek.com/zh-cn/download/50WkbgbH (MT7688 DataSheet)
在 LEDE/target/linux/ramips/dts/mt7628an.dtsi 中有
uartlite: uartlite@c00 { compatible = "ns16550a"; reg = <0xc00 0x100>; reg-shift = <2>; reg-io-width = <4>; no-loopback-test; clock-frequency = <40000000>; resets = <&rstctrl 12>; reset-names = "uartl"; interrupt-parent = <&intc>; interrupts = <20>; pinctrl-names = "default"; pinctrl-0 = <&uart0_pins>; }; uart1: uart1@d00 { compatible = "ns16550a"; reg = <0xd00 0x100>; reg-shift = <2>; reg-io-width = <4>; no-loopback-test; clock-frequency = <40000000>; resets = <&rstctrl 19>; reset-names = "uart1"; interrupt-parent = <&intc>; interrupts = <21>; pinctrl-names = "default"; pinctrl-0 = <&uart1_pins>; status = "disabled"; }; uart2: uart2@e00 { compatible = "ns16550a"; reg = <0xe00 0x100>; reg-shift = <2>; reg-io-width = <4>; no-loopback-test; clock-frequency = <40000000>; resets = <&rstctrl 20>; reset-names = "uart2"; interrupt-parent = <&intc>; interrupts = <22>; pinctrl-names = "default"; pinctrl-0 = <&uart2_pins>; status = "disabled"; };
初始化
arch/mips/include/asm/mach-ralink/mt7620.h: #define MT7620_SYSC_BASE 0x10000000 arch/mips/include/asm/mach-ralink/mt7620.h: #define SYSC_REG_CHIP_NAME0 0x00 void __iomem *sysc = (void __iomem *) KSEG1ADDR(MT7620_SYSC_BASE); //将寄存器基址 从物理地址 转换成 进程空间的虚拟机制 //读取Chip ID n0 = __raw_readl(sysc + SYSC_REG_CHIP_NAME0); n1 = __raw_readl(sysc + SYSC_REG_CHIP_NAME1); u32 xcfg = __raw_readl(sysc + 0x3C); xcfg |= 0x0F; //bit3-0 is2 pad xcfg |= 0x10; //bit4 refclko xcfg |= 0x0f<<17; //ephy __raw_write1(cfg, syc+0x3c);
参考资料:
https://wiki.openwrt.org/doc/devel/add.new.device
https://wiki.openwrt.org/doc/hardware/port.gpio
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。