qyoooo
发布于

STM32MP157串口回环实验没有看到ttySTM3节点

在STM32MP157上做串口实验的准备工作
本节课程源码在GIT仓库里
doc_and_source_for_drivers\STM32MP157\source\A7\09_UART 00_stm32mp157_devicetree_for_uart8

  1. 出厂系统不支持扩展板上的UART

  2. 只关注APP开发的话
    把GIT仓库中这个dtb文件复制到开发板上去就可以:

doc_and_source_for_drivers\STM32MP157\source\A7\09_UART\00_stm32mp157_devicetree_for_uart8\dtb目录下的
stm32mp157c-100ask-512d-lcd-v1.dtb
操作方法:

Ubuntu上:复制dtb文件到NFS目录:

$ cp stm32mp157c-100ask-512d-lcd-v1.dtb ~/nfs_rootfs/
开发板上挂载NFS文件系统

vmware使用NAT(假设windowsIP为193.168.1.100)

[root@100ask:~]# mount -t nfs -o nolock,vers=3,port=2049,mountport=9999
193.168.1.100:/home/book/nfs_rootfs /mnt
vmware使用桥接,或者不使用vmware而是直接使用服务器:假设Ubuntu IP为193.168.1.137

[root@100ask:~]# mount -t nfs -o nolock,vers=3 193.168.1.137:/home/book/nfs_rootfs /mnt
更新设备树

[root@100ask:]# mount /dev/mmcblk2p2 /boot
[root@100ask:
]# cp /mnt/stm32mp157c-100ask-512d-lcd-v1.dtb /boot
[root@100ask:~]# sync
重启开发板

在串口可以看到以下设备节点

ls /dev/ttySTM*
/dev/ttySTM0
/dev/ttySTM1
/dev/ttySTM3
3. 从头修改设备树文件
3.1 确定硬件资源
观察STM32MP157的扩展板,背后写着: UART8_TX, UART8_RX,如下图:

image-20210719092503508

打开STM32MP157底板原理图,可知UART8_TX、UART8_RX使用引脚PE1、PE0,如下图:

image-20210719092726986

3.2 使能设备树节点
在STM32MP157的内核设备树文件arch/arm/boot/dts/stm32mp151.dtsi中,已经设置了uart8节点:

image-20210719092138173

我们需要使能这个节点,往下看。

3.3 通过Pinctrl指定引脚
光使能UART8还不行,还需要为它选择引脚。

修改arch/arm/boot/dts/stm32mp15xx-100ask.dtsi,如下:

&uart8 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart8_pins_mx>;
pinctrl-1 = <&uart8_sleep_pins_mx>;
status = "okay";
};
这些Pinctrl信息已经在arm/boot/dts/stm32mp157-100ask-pinctrl.dtsi中有了,无需我们添加:

image-20210719092949939

3.4 指定设备别名
UART8对应的设备节点是哪个?它的驱动程序需要从”别名”里确定编号。

修改arch/arm/boot/dts/stm32mp157c-100ask-512d-v1.dts,如下:

aliases {
	ethernet0 = &ethernet0;
	serial0 = &uart4; //debug
	serial1 = &usart6; //rs485
	serial2 = &usart1; //bluetooth
	serial3 = &uart8;  // extend board uart, /dev/ttySTM3
};

3.5 编译、使用
设置工具链

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
编译设备树: 在Ubuntu的STM32MP157内核目录下执行如下命令, 得到设备树文件:arch/arm/boot/dts/stm32mp157c-100ask-512d-lcd-v1.dtb

make dtbs
复制到NFS目录:

$ cp arch/arm/boot/dts/stm32mp157c-100ask-512d-lcd-v1.dtb ~/nfs_rootfs/
开发板上挂载NFS文件系统

vmware使用NAT(假设windowsIP为193.168.1.100)

[root@100ask:~]# mount -t nfs -o nolock,vers=3,port=2049,mountport=9999
193.168.1.100:/home/book/nfs_rootfs /mnt
vmware使用桥接,或者不使用vmware而是直接使用服务器:假设Ubuntu IP为193.168.1.137

[root@100ask:~]# mount -t nfs -o nolock,vers=3 193.168.1.137:/home/book/nfs_rootfs /mnt
更新设备树

[root@100ask:]# mount /dev/mmcblk2p2 /boot
[root@100ask:
]# cp /mnt/stm32mp157c-100ask-512d-lcd-v1.dtb /boot
[root@100ask:~]# sync
重启开发板

在串口可以看到以下设备节点

ls /dev/ttySTM*
/dev/ttySTM0
/dev/ttySTM1
/dev/ttySTM3

浏览 (268)
点赞
收藏
评论
暂无数据