使用sysfs设定gpio的方法,目前测试设置一些gpio为输出然后"echo 1 >value"是只可以成功写入一部分gpio(例如port M) 但是 port E 0到6 使用kernel sysfs或者内部m4都无法控制。(已经检查设备树无其他设备正在使用port E 0到6),GPIOD测试也是一样。
2023/05/12 13:48
PE有一部分是复用到网口,PD是复用到串口,这些都要注意,还有涉及到TFA。
比如PE1口,参考下列修改进行测试:
步骤1:
MA35D1_Buildroot\output\build\arm-trusted-firmware-custom\fdts\ma35d1.dtsi
sspcc: sspcc@404F0000 {
compatible = "nuvoton,ma35d1-sspcc";
reg = <0x0 0x404F0000 0x0 0x1000>;
config = <UART0_TZNS>,
<SDH0_TZNS>,
<SDH1_TZNS>,
<NAND_TZNS>,
<QSPI0_TZNS>,
<CRYPTO_TZNS>,
<WDTWWDT1_TZNS>,
<HSUSBD_TZNS>,
<PDMA0_TZNS>,
<PDMA1_TZNS>,
<TIMER01_TZNS>,
<UART16_SUBM>,
<TRNG_TZNS>;
gpio_s = <PE1_NS>;
};
步骤2:
uboot关闭网口
output/build/uboot-custom/arch/arm/dts/ma35d1.dtsi
步骤3:
内核关闭网口
output/build/linux-custom/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts
编译:
make uboot-rebuild
make arm-trusted-firmware-rebuild
make linux-rebuild
make
测试:
echo 1 > /sys/class/gpio/gpio65/value