100ASK_STM32MP157上机实验:GPIO与设备树

需积分: 0 0 下载量 24 浏览量 更新于2024-08-04 收藏 678KB DOCX 举报
"在本次实验中,我们关注的是在100ASK_STM32MP157开发板上的Linux操作系统实践,特别是关于GPIO(通用输入/输出)和设备树的配置。实验涉及到两个不同的Git仓库,分别针对‘驱动基础’和‘驱动大全’的学习路径。实验步骤包括确定LED的引脚、生成设备树节点以及处理引脚冲突。" 在100ASK_STM32MP157开发板上进行Linux驱动开发时,一个关键的操作是查看系统的挂载情况,例如通过执行`cat /proc/mounts`命令。这个命令用于显示已挂载的文件系统,帮助开发者了解系统分区的状态。在实验中,可能会遇到两种情况:一种是mmcblk2p2分区已经挂载在/boot目录下,另一种情况可能是未进行挂载。 在STM32MP157芯片的开发中,设备树是一个重要的概念,它是硬件描述的一种方式,用于Linux内核配置。在本实验中,开发人员需要使用设备树生成工具来配置LED驱动。这个工具可以从100ASK提供的网盘中下载,与STM32MP157_PRO开发板相关的资料一起。根据LED的原理图,确定其连接到GPIOA的第10个引脚(PA10)。 值得注意的是,当使用gpiod_get等函数操作GPIO时,这些函数会自动将引脚设置为GPIO功能,因此在设备树的Pinctrl节点中不需要再进行额外的设置。在设备树中,只需指定LED使用的GPIO引脚。这可以通过创建一个名为'myled'的设备节点实现,如下所示: ```dts myled{ compatible="100ask,leddrv"; led-gpios=<&gpioa10 GPIO_ACTIVE_LOW>; }; ``` 此外,为了防止引脚冲突,需要在设备树中修改其他可能使用相同GPIO引脚的led节点,例如通过添加'status="disabled"'属性来禁用它们,以确保LED驱动的正常工作: ```dts led{ status="disabled"; compatible="gpio-leds"; blue{ label="heartbeat"; gpios=<&gpioa10 GPIO_ACTIVE_HI>; }; }; ``` 通过这样的配置,实验者可以在STM32MP157开发板上成功地建立和控制LED,同时理解Linux内核如何通过设备树与GPIO子系统交互,以及如何解决潜在的硬件冲突问题。这不仅涵盖了基础的GPIO驱动开发,也深入到Linux驱动开发的高级主题,如设备树的使用和优化。