设备树
- 实物图
- 把RESET飞线和PF13焊接连通,使用PF13控制RESET复位
- 注意开发板底板上SPI_A/B的SCK/MISO/MOSI是相同的SPI5总线
- SPI_B SCK接ESP IO1
- SPI_B MOSI接ESP IO18
- SPI_B MISO接ESP IO19
- PH5接ESP IO0 CS
- SPI_A SCK接ESP RXD(SCK_A引脚不能悬空,否则加载ko异常报错)
- PA13接ESP IO5 handshake
- PA5接ESP data ready
- PF13接ESP RESET
- 其余引脚按照以下引脚分配
STM32MP1引脚配置 SPI5_SCK - PH6 - GPIO51 SPI5_MISO - PH7 - GPIO52 SPI5_MOSI - PF11 - GPIO118 CS - PH5 - GPIO91 date ready - PA5 - GPIO29 handshake - PA13 - GPIO116 EN - PF13 - GPIO93
-
100ask_stm32mp157_pro-sdk\Linux-5.4\arch\arm\boot\dts\stm32mp157-100ask-pinctrl.dtsi
spi5_pins_a: spi5-0 { pins1 { pinmux = <STM32_PINMUX('F', 11, AF5)>, /* SPI5_MOSI */ <STM32_PINMUX('H', 6, AF5)>; /* SPI5_SCK */ bias-disable; drive-push-pull; slew-rate = <1>; }; pins2 { pinmux = <STM32_PINMUX('H', 7, AF5)>; /* SPI5_MISO */ bias-disable; }; pins3 { pinmux = <STM32_PINMUX('H', 5, GPIO)>; // 修改GPIOG10 -> GPIOH5(AF5 -> GPIO) drive-push-pull; bias-pull-up; output-high; slew-rate = <1>; }; }; spi5_sleep_pins_a: spi5-sleep-0 { pins { pinmux = <STM32_PINMUX('F', 11, ANALOG)>, /* SPI5_MOSI */ <STM32_PINMUX('H', 6, ANALOG)>, /* SPI5_SCK */ <STM32_PINMUX('H', 7, ANALOG)>, /* SPI5_MISO */ <STM32_PINMUX('H', 5, ANALOG)>; // 修改GPIOG10 -> GPIOH }; };
-
100ask_stm32mp157_pro-sdk\Linux-5.4\arch\arm\boot\dts\stm32mp157c-100ask-512d-v1.dts
&spi5 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&spi5_pins_a>; pinctrl-1 = <&spi5_sleep_pins_a>; status = "okay"; cs-gpios = <&gpioh 5 GPIO_ACTIVE_LOW>; #if 0 // TODO: check spidevesp: esp32@0{ compatible = "brcm,bcm2708"; spi-max-frequency = <60000000>; reg = <0>; }; #endif };
-
声明环境变量
export ARCH=arm export CROSS_COMPILE=arm-buildroot-linux-gnueabihf- export PATH=$PATH:/home/xxxx/Downloads/01_STM32/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
-
使用100ask_stm32mp157_pro_defconfig
make 100ask_stm32mp157_pro_defconfig
-
编译设备树和内核
make dtbs make uImage LOADADDR=0xC2000040
-
将stm32mp157c-100ask-512d-v1.dtb和uImage复制到tftp目录,在uBoot下按空格,设置从网络启动
setenv mybootnet 'tftp c2000000 uImage;tftp c4000000 stm32mp157c-100ask-512d-v1.dtb;bootm c2000000 - c4000000' saveenv run mybootnet
如果遇到网络错误,设置serverip和ipaddr
setenv serverip 192.168.xx.xx setenv ipaddr 192.168.xx.xx
-
确保板子上有根文件系统
-
硬件连接,底板上SPI有SCK不能浮空,否则会异常
参考文章:
DongshanPI Seven_stm32mp157-BaseBoardSCH.pdf
嵌入式Linux应用开发完全手册V5.2_STM32MP157_Pro开发板.pdf
【正点原子】STM32MP1嵌入式Linux驱动开发指南V2.1.pdf