被一个gpio口搞死的一天-程序员宅基地

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

我起的很早,起早的原因很简单,我家楠哥要我送他上学,他说爸爸没有起到一个当爸爸的责任,他也想让爸爸送他上学,然后我就送了。

7点30起来,8点出发,然后回来看了一下热火对阵掘金的比赛,下楼,拉开我的「法拉利」车门启动发动机奔赴那该死的充满诱惑力的调试战场。

老刘是一个经验老道并且冷静沉着的硬件选手,当我们第一把开机成功后,老刘微微一笑对我说「发哥,你再看一下,我给你准备几个板子给你带回去」。

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

8762c318fe9e90dab02705f02eb23daa.png

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

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

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

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

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

73c0c294718d57697af309d153c01ec5.png

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

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

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

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

ef49ab56611a9bfd4a0c971de298b73f.png

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

下午1点30开始搞事情

老刘刚用上了示波器,刚开始测量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上。

4b65b1eac0eb72214a27b3af53c7bd90.png

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

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

c72d7be67c96631a3760de298657048f.png

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

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

然后就继续整。

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

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

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

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

c71df3de2602bbaa204fd082107c89e2.jpeg

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

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

628fcd1f420ead0f9a649752ef7ae44e.png

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

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

d2c98a016e1084935114257ac795465d.png

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

这个时候,已经是晚上11点30了,幸好公司离我家很近,这个时候的晚风吹起来也够舒服。

不知道明天又会遇到怎样的问题,不过我相信老刘都能搞定的,毕竟有人说过,万物之中,希望至美。

哦,对了,韦老师的搞定寄存器计划,大家有需要的,记得冲哈。

跟韦东山老师搞事

f4d28a72d152fb08d957b92b9946c463.jpeg

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weiqifa0/article/details/131136748

智能推荐

874计算机科学基础综合,2018年四川大学874计算机科学专业基础综合之计算机操作系统考研仿真模拟五套题...-程序员宅基地

文章浏览阅读1.1k次。一、选择题1. 串行接口是指( )。A. 接口与系统总线之间串行传送,接口与I/0设备之间串行传送B. 接口与系统总线之间串行传送,接口与1/0设备之间并行传送C. 接口与系统总线之间并行传送,接口与I/0设备之间串行传送D. 接口与系统总线之间并行传送,接口与I/0设备之间并行传送【答案】C2. 最容易造成很多小碎片的可变分区分配算法是( )。A. 首次适应算法B. 最佳适应算法..._874 计算机科学专业基础综合题型

XShell连接失败:Could not connect to '192.168.191.128' (port 22): Connection failed._could not connect to '192.168.17.128' (port 22): c-程序员宅基地

文章浏览阅读9.7k次,点赞5次,收藏15次。连接xshell失败,报错如下图,怎么解决呢。1、通过ps -e|grep ssh命令判断是否安装ssh服务2、如果只有客户端安装了,服务器没有安装,则需要安装ssh服务器,命令:apt-get install openssh-server3、安装成功之后,启动ssh服务,命令:/etc/init.d/ssh start4、通过ps -e|grep ssh命令再次判断是否正确启动..._could not connect to '192.168.17.128' (port 22): connection failed.

杰理之KeyPage【篇】_杰理 空白芯片 烧入key文件-程序员宅基地

文章浏览阅读209次。00000000_杰理 空白芯片 烧入key文件

一文读懂ChatGPT,满足你对chatGPT的好奇心_引发对chatgpt兴趣的表述-程序员宅基地

文章浏览阅读475次。2023年初,“ChatGPT”一词在社交媒体上引起了热议,人们纷纷探讨它的本质和对社会的影响。就连央视新闻也对此进行了报道。作为新传专业的前沿人士,我们当然不能忽视这一热点。本文将全面解析ChatGPT,打开“技术黑箱”,探讨它对新闻与传播领域的影响。_引发对chatgpt兴趣的表述

中文字符频率统计python_用Python数据分析方法进行汉字声调频率统计分析-程序员宅基地

文章浏览阅读259次。用Python数据分析方法进行汉字声调频率统计分析木合塔尔·沙地克;布合力齐姑丽·瓦斯力【期刊名称】《电脑知识与技术》【年(卷),期】2017(013)035【摘要】该文首先用Python程序,自动获取基本汉字字符集中的所有汉字,然后用汉字拼音转换工具pypinyin把所有汉字转换成拼音,最后根据所有汉字的拼音声调,统计并可视化拼音声调的占比.【总页数】2页(13-14)【关键词】数据分析;数据可..._汉字声调频率统计

linux输出信息调试信息重定向-程序员宅基地

文章浏览阅读64次。最近在做一个android系统移植的项目,所使用的开发板com1是调试串口,就是说会有uboot和kernel的调试信息打印在com1上(ttySAC0)。因为后期要使用ttySAC0作为上层应用通信串口,所以要把所有的调试信息都给去掉。参考网上的几篇文章,自己做了如下修改,终于把调试信息重定向到ttySAC1上了,在这做下记录。参考文章有:http://blog.csdn.net/longt..._嵌入式rootfs 输出重定向到/dev/console

随便推点

uniapp 引入iconfont图标库彩色symbol教程_uniapp symbol图标-程序员宅基地

文章浏览阅读1.2k次,点赞4次,收藏12次。1,先去iconfont登录,然后选择图标加入购物车 2,点击又上角车车添加进入项目我的项目中就会出现选择的图标 3,点击下载至本地,然后解压文件夹,然后切换到uniapp打开终端运行注:要保证自己电脑有安装node(没有安装node可以去官网下载Node.js 中文网)npm i -g iconfont-tools(mac用户失败的话在前面加个sudo,password就是自己的开机密码吧)4,终端切换到上面解压的文件夹里面,运行iconfont-tools 这些可以默认也可以自己命名(我是自己命名的_uniapp symbol图标

C、C++ 对于char*和char[]的理解_c++ char*-程序员宅基地

文章浏览阅读1.2w次,点赞25次,收藏192次。char*和char[]都是指针,指向第一个字符所在的地址,但char*是常量的指针,char[]是指针的常量_c++ char*

Sublime Text2 使用教程-程序员宅基地

文章浏览阅读930次。代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一位程序员,同样会去追求最适合自己的强大、灵活的编辑器,相信你和我一样,都不会例外。我用过的编辑器不少,真不少~ 但却没有哪款让我特别心仪的,直到我遇到了 Sublime Text 2 !如果说“神器”是我能给予一款软件最高的评价,那么我很乐意为它封上这么一个称号。它小巧绿色且速度非

对10个整数进行按照从小到大的顺序排序用选择法和冒泡排序_对十个数进行大小排序java-程序员宅基地

文章浏览阅读4.1k次。一、选择法这是每一个数出来跟后面所有的进行比较。2.冒泡排序法,是两个相邻的进行对比。_对十个数进行大小排序java

物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)_网络调试助手连接阿里云连不上-程序员宅基地

文章浏览阅读2.9k次。物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)其实作者本意是使用4G模块来实现与阿里云物联网平台的连接过程,但是由于自己用的4G模块自身的限制,使得阿里云连接总是无法建立,已经联系客服返厂检修了,于是我在此使用网络调试助手来演示如何与阿里云物联网平台建立连接。一.准备工作1.MQTT协议说明文档(3.1.1版本)2.网络调试助手(可使用域名与服务器建立连接)PS:与阿里云建立连解释,最好使用域名来完成连接过程,而不是使用IP号。这里我跟阿里云的售后工程师咨询过,表示对应_网络调试助手连接阿里云连不上

<<<零基础C++速成>>>_无c语言基础c++期末速成-程序员宅基地

文章浏览阅读544次,点赞5次,收藏6次。运算符与表达式任何高级程序设计语言中,表达式都是最基本的组成部分,可以说C++中的大部分语句都是由表达式构成的。_无c语言基础c++期末速成