0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

被一个GPIO口搞死的一天

嵌入式与Linux那些事 来源:嵌入式Linux 2023-06-12 14:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天是新项目调试的第一天。

不管我怎么修改我的软件配置,我们的PHY始终不能驱动成功,从内核日志里面就是读不到PHY的ID地址。

504621c6-08d9-11ee-962d-dac502259ad0.png

我不死心,我觉得应该不是软件的问题,然后找老刘讨论,我说「要不我们测量下波形吧,这里读出来的ID是不对的」。

老刘说「你现在设置的PHY ID是多少?是不是跟我们硬件上的配置不一样」。

因为之前调试过PHY芯片,我说「开机的时候,驱动会循环扫描PHY的ID,只要PHY ID 在我们扫描的范围内,就肯定是可以扫描出来」。

然后我找了一个帅哥,这个帅哥是一个真正的帅哥,因为他的名字里面有一个特别的帅字。

我找他的原因是因为他手里有一个硬件设备,那个硬件设备的PHY芯片和我们正在调试的硬件设备是一样的,我想用那个设备来看看内核的开机日志。

5062943c-08d9-11ee-962d-dac502259ad0.png

从这个日志里面看到的是可以读到PHY的ID的。

之前在一个文章里面说过,PHY的作用就像I2S和功放芯片一样。所以如果PHY芯片驱动不正常,我之后的switch芯片也不能正常调试,是让我挺头痛的。

我跟老刘说,我们把这个板子上的MDC和MDIO飞线到那个可以的板子上读下PHY ID吧,然后又是捣鼓了好长一会时间。

读到的ID也不正确,但是有数据出来了。

50773842-08d9-11ee-962d-dac502259ad0.png

上午的时间过得很快,反复测试了好长时间,有一个帅哥就叫我去吃午饭了。

老刘刚用上了示波器,刚开始测量MDC和MDIO的信号,老刘跟我说「为什么MDC的信号高电平那么低?」

然后我又开始捣鼓代码,我从dts编译生成的tmp文件里面不断的查,把可能被复用的地方都注释掉,然后再重新编译出来烧录进去,因为硬件有点奇怪的问题,不能直接进入bootloader 模式烧录,每次需要把编译出来的boot.img打包成整个update.img再烧录,这个过程消耗了我非常久的时间。

然后发现无论怎么修改,MDC的电平总是上不去,我就干脆不让PHY驱动控制这个GPIO口,自己写了一个sys文件系统的驱动来控制,可以用指令拉高拉低的「这个是我自己的调试驱动,正常用sysfs下的GPIO也可以」,测试一轮后发现还是有问题。

这个时候老刘说「可能我们这个示波器有问题,我要换一个牛逼点点示波器」。

过了一会,老刘搬来一个很大的示波器,这个示波器看起来很牛逼,探头也很新,屏幕也很大,扫描的频率也更高。

不过遗憾的是,那个GPIO口的电平还是上不去。

不过这个时候,老刘说,卧槽,好像这两个地方反了。

本来是MDC连接GPIO14,MDIO连接GPIO15的,老刘的原理图上把MDC接到了GPIO15上,MDIO连接到了GPIO14上。

5086ffde-08d9-11ee-962d-dac502259ad0.png

当然,我们想到的第一个办法就是不要修改硬件,直接通过修改软件配置把这两个GPIO口换一下。

芯片原厂给出来的调试里面也写了几个重要的调试手段。

50937228-08d9-11ee-962d-dac502259ad0.png

然后就开始修改GPIO口的映射,结果令人遗憾的还是不成功。

这个时候应该去看看芯片的GPIO功能手册的,但是时间比较晚了,老刘果断找了一个板子把两个GPIO 给调换了下,这调换可是废九牛二虎之力,因为当时设计的时候就没有想过会出问题,里面有一个过孔,需要把过孔的部分给断开后再连接起来。

然后就继续整。

老刘这个时候看起来已经着急了,这样的一个技术专家,被这样的一个GPIO口给调戏了一整天,我这个时候还记得早上他说的那句「发哥,这个是小问题,今天一定能全部调通」。

我下楼去给老刘买水,我担心一直在他旁边他更着急了,10几分钟后回来,老刘把东西几乎整得差不多了,刚才不能开机的板子也修理好了。

然后我们开机,我继续看了下PHY ID ,还是没有读取出来。

我们继续拿了那个最贵的示波器看了下,这个时候波形什么的都已经是正常的,幅值也正确了。

509f7104-08d9-11ee-962d-dac502259ad0.jpg

然后这个时候我想到了复位时序。

我说等我修改下,我把复位时序加长了一些,然后开机,终于看到了那个该死的PHY ID。

50b5c24c-08d9-11ee-962d-dac502259ad0.png

因为每个PHY芯片对复位的时间不同

我们用的这个RTL8201芯片的复位时序要求如下

50c5c7e6-08d9-11ee-962d-dac502259ad0.png

如果那个低电平小于10ms,那是不行的。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 示波器
    +关注

    关注

    113

    文章

    7149

    浏览量

    197077
  • PHY
    PHY
    +关注

    关注

    2

    文章

    342

    浏览量

    54437
  • GPIO
    +关注

    关注

    16

    文章

    1337

    浏览量

    56589
  • MDIO
    +关注

    关注

    0

    文章

    14

    浏览量

    11597

原文标题:被一个gpio口搞死的一天

文章出处:【微信号:嵌入式与Linux那些事,微信公众号:嵌入式与Linux那些事】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    共建知识与生态圈丨共享采购联盟精英们在金航标和萨科微的一天

    SlkorKinghelm共享采购联盟精英们走进金航标和萨科微4月26日,共享采购联盟平台在金航标和萨科微总部开展了为期一天的培训和交流,上午是共享采购联盟金牌讲师唐明伟的精彩分享《像公司样经营
    的头像 发表于 04-29 17:37 639次阅读
    共建知识与生态圈丨共享采购联盟精英们在金航标和萨科微的<b class='flag-5'>一天</b>

    驱动之路#21:行 reset-gpios,驱动为何就能用 GPIO

    ),告诉内核 “这是用于复位功能的 GPIO 配置”。 gpio2对应的 GPIO 控制器(通过 DTS 中
    的头像 发表于 04-14 09:20 6037次阅读
    驱动之路#21:<b class='flag-5'>一</b>行 reset-gpios,驱动为何就能用 <b class='flag-5'>GPIO</b>?

    一天时间让AI重写超轻量的AI 助手,并在60块的开发板上跑起来!

    2026年初,个人AIAget火得塌糊涂。OpenClaw让"养龙虾"成了AI圈的社交货币,用户纷纷在MacMini和云服务器上部署自己的AI助手。但有问题直没人认真回答过
    的头像 发表于 04-01 07:59 384次阅读
    用<b class='flag-5'>一天</b>时间让AI重写<b class='flag-5'>一</b><b class='flag-5'>个</b>超轻量的AI 助手,并在60块的开发板上跑起来!

    分享CW32 IO拓展项目:使用CW32L010做GPIO/ADC 扩展

    置的GPIO 以及 四通用定时器 。 正是基于这些特性,该芯片非常适合用于两类核心应用场景: 功能简单的独立设备 ,如传感器节点、小家电主控等。 作为主控系统的扩展单元 ,尤其是IO扩展和模拟信号采集。 当应用于 IO/AD
    的头像 发表于 03-31 21:43 232次阅读
    分享<b class='flag-5'>一</b><b class='flag-5'>个</b>CW32 IO拓展项目:使用CW32L010做<b class='flag-5'>GPIO</b>/ADC 扩展

    嵌入式新手必看!GPIO调试从0到1:计算、操作、排错全指南

    在嵌入式开发中,GPIO(通用输入输出口)是最基础也最常用的硬件接口 —— 小到控制颗 LED 亮灭、读取按键状态,大到驱动传感器、控制外设,都离不开
    的头像 发表于 02-01 16:55 4609次阅读
    嵌入式新手必看!<b class='flag-5'>GPIO</b>调试从0到1:计算、操作、排错全指南

    【MCU学习】GPIO详解

    本实验通过“小实验框架 GPIO Mode Lab”,在同一个 GPIO 引脚上依次配置不同模式,并用 ADC 探头测量电压、同时读取数
    的头像 发表于 01-24 11:45 5505次阅读
    【MCU学习】<b class='flag-5'>GPIO</b>详解

    ARM Cortex M3系列的GPIO介绍

    DMA控制器可直接操作APB外设,而无需等待总线写操作完成。 M3数字I/O功能:高速GPIO,其寄存器移到外设AHB总线,可以字节,半字和字寻址。 位电平置位和清零寄存器允许单指令置位和清零一
    发表于 01-22 06:42

    【乾芯QXS320F开发板试用】拿板第一天:环境准备

    驱动。 根据原理图,板载LED在GPIO8. 修改宏定义为LED4 8 (这里例程里是5,我也不知道咋回事,没看原理图之前还以为程序不能用) 再点烧录就解决了。 总之 第一天点亮了LED,也踩了
    发表于 12-08 17:27

    如何控制蜂鸟E203的GPIO

    _enable_output(). 要控制gpio,首先要使能输入或者输出,然后才能读或者写。 1、例如要读GPIOB的0号接口,把GPIO
    发表于 10-22 07:36

    【EK-RA6E2开发指南】GPIO使用

    我相信大多数学习嵌入式的朋友学习单片机的第一个程序都是点灯,毕竟点灯简单嘛,操作下GPIO即可。当然,本教程的第一个应用也从GPIO的使用开始。
    的头像 发表于 09-23 18:13 3769次阅读
    【EK-RA6E2开发指南】<b class='flag-5'>GPIO</b>使用

    vision board GPIO输出电压不对是什么原因导致的?

    在RASC里配置p510引脚输出模式,initial high后电压只有0.9v,换了vision board后还是只有0.9,此前一天c电压正常
    发表于 09-18 07:09

    深度揭秘GPIO的三重身份:从普通IO到AGPIO与Wakeup IO

    分享Air780EPM的GPIO使用注意事项及硬件设计要点,产品手册、原理图、应用示例等资料持续更新开放。 GPIO复用表及LuatIO配置工具 Air780EPM模组共支持38
    的头像 发表于 08-11 13:44 911次阅读
    深度揭秘<b class='flag-5'>GPIO</b>的三重身份:从普通IO到AGPIO与Wakeup IO

    FX3是否支持配置GPIO引脚作为弱下拉的输入?

    FX3是否支持配置GPIO引脚作为弱下拉的输入?如果可以的话,这将如何完成?#CYUSB3014
    发表于 08-11 07:47

    股价一天暴涨倍,全球碳化硅龙头起死回生?

    。     此次大涨的主要原因是Wolfspeed任命了新的首席财务官(CFO)Gregor van Issum。他将于2025年9月1日正式上任,并将主导公司的财务重组工作。   Gregor
    的头像 发表于 07-09 00:16 4961次阅读
    股价<b class='flag-5'>一天</b>暴涨<b class='flag-5'>一</b>倍,全球碳化硅龙头起死回生?

    vision board GPIO输出电压不对是什么原因导致的?

    在RASC里配置p510引脚输出模式,initial high后电压只有0.9v,换了vision board后还是只有0.9,此前一天c电压正常
    发表于 06-10 08:24