Zynq MPSOC中一个MIO冲突问题的解决方法记录

1、问题描述

环境:所采用的处理器:Xilinx的Zynq MPSOC—XCZU3EG,操作系统是嵌入式Linux。
在项目调试中发现:硬件看门狗芯片的喂狗信号使用了MPSOC的MIO41,而SD卡(SD1口,ff170000.mmc)的管脚中也使用到了MIO41,从而导致了:要么SD卡不能使用,要么不能喂狗系统反复重启。
这个问题并不难解决,合理的解决方法是:在kernel的devicetree中,重新分配MIO41管脚,避免冲突。
然而,devicetree中与管脚定义、分配的内容很多,如何修改呢?本文将解决的过程记录如下,期望对遇到类似的问题的人能有所帮助。

2、解决过程

1、查阅MPSOC的芯片手册《ug1085-zynq-ultrascale-trm.pdf》p789页“MIO Table at a glance”,可以看到MIO41有多个功能复用;

2、在内核驱动中增加打印代码,待pinctrl初始化完成后,将管脚的复用信息打印出。添加的printk代码在:drivers/pinctrl/pinctrl-zynqmp.c::zynqmp_pinctrl_group_add_pin()
与MIO41相关的输出是如下形式:

[    1.224792] ...After:grp_name: ethernet1_0_grp,  pin:41
[    1.224799] ...After:grp_name: sdio0_1_grp,  pin:41
[    1.224806] ...After:grp_name: sdio1_0_grp,  pin:41
[    1.224813] ...After:grp_name: gpio0_41_grp,  pin:41
[    1.224821] ...After:grp_name: can1_10_grp,  pin:41
[    1.224827] ...After:grp_name: i2c1_10_grp,  pin:41
[    1.224834] ...After:grp_name: pjtag0_3_grp,  pin:41
[    1.224841] ...After:grp_name: spi0_ss_9_grp,  pin:41
[    1.224848] ...After:grp_name: ttc3_wav_5_grp,  pin:41
[    1.224855] ...After:grp_name: uart1_10_grp,  pin:41
[    1.224862] ...After:grp_name: trace0_1_grp,  pin:41
[    1.224869] ...After:grp_name: sdio0_5_grp,  pin:41
[    1.224876] ...After:grp_name: sdio0_17_grp,  pin:41
[    1.224883] ...After:grp_name: sdio1_1_grp,  pin:41
[    1.224890
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值