fmql之以太网调试记录

devtools/2024/9/23 3:33:45/

fmql20系列芯片,phy为RTL8211芯片。

瑞昱RTL8211FS/RTL8211FSI 10/100/1000M以太网收发器datasheet-一牛网论坛

Procise配置system IP,选择Eth0,MDIO,Eth reset。Export Hardware选择Peripheral Test模板工程(回环测试)。lwip工程可以调网口。

注释main中除GIC和GMAC的内容(其他不需要测试),保留如下内容:

在Peripheral Test中,默认的芯片为88E1116R,所以需要修改芯片型号和地址(查阅芯片数据手册):

修改ID(不然检测不到PHY芯片):

发现在Procise配置Eth时,速率为1000Mbps,那么读取到的SPEED即为1000Mbps;速率为100Mbps,那么读取到的SPEED即为100Mbps(自适应设置)。

不知道在哪强制设置SPEED。

运行结果:

很奇怪,单步调试的话结果就不一样:

(领导说是延时没做好)

PHY link timeout:

 是fmsh_mdio_read出问题?

自适应设置

寄存器配置

phy RTL8211FS配置-CSDN博客

测试结果:

PHY link up

GMAC failed        ----(官方)可能是PHY给的rx_clk不对,用示波器查看rx_clk是否正常【什么样算正常,什么算不正常?】

----(官方)如果GMAC loopback成功,PHY link timeout,是GMAC和PHY的通信出问题,重点检查硬件设计

RTL8211 集成10_100_1000M以太网精密收发器-CSDN博客

RTL8211 时序分析 (基于FPGA的千兆网应用)-CSDN博客

网卡PHY 移植注意事项_phy的rx接收异常,tx输出正常-CSDN博客

lwip程序跑一下试试:

Ping通,但是连不上

破案了,能ping通但是网络不通,是它们在搞鬼_ping通但是无网络-CSDN博客

能Ping通外网但就是不能打开所有网页的解决办法_能ping通但是不能访问网页-CSDN博客

zynq与PC网线互ping成功_zynq与联网电脑-CSDN博客

应该不是ip、port冲突的原因。

重启电脑:还是不行。

好记性不如烂笔头(一)——局域网可以Ping通,但Socket无法连接_socket未连接怎么办-CSDN博客

关闭防火墙:没用。

百度安全验证icon-default.png?t=N7T8https://baijiahao.baidu.com/s?id=1738410562299490730&wfr=spider&for=pc能检测到phy ID:MDIO正常。

MAC与PHY link成功:rx_clk正常。

找了领导,领导说配置应该没问题,但是:(以下修改均根据硬件来)

换成tcp协议:加中断(检测到数据就中断);或者轮询模式

RGMII换成MII(根据硬件来):目前还没修改

成功!

(但是GMAC回环测试依然failed)

RGMII设置修改处:

 

看领导的操作,最开始并没有像我一样急哄哄地运行程序,而是从main函数开始看数据的流向/程序走向。

弄清楚配置函数/结构体的数据流向。

告诉我可以自己做一个流程图(大神肯定脑海里有了)。

并且,自己在遇到问题的时候太关注于细节(某句代码是否正确,某个寄存器配置是否正确,etc)忽略了大局/整体。

当然,硬件设计也很重要,所有的软件都是在硬件设计的基础上的。所以一定要根据硬件来(重要!!!)

硬件连线决定的 电压 / ADDR / 芯片配置 / interface / 等等,一定要在软件设计前弄清楚。

学习之路还很长,继续加油吧


http://www.ppmy.cn/devtools/42565.html

相关文章

vue3父组件使用ref获取子组件的属性和方法

在vue3中父组件访问子组件中的属性和方法是需要借助于ref: 1.<script setup> 中定义响应式变量 例如&#xff1a; const demo1 ref(null) 2.在引入的子组件标签上绑定ref属性的值与定义的响应式变量同名( <demo1 ref"demo1"/>)。 父组件代码如下&…

Giglab CI/CD

.gitlab-ci.yml 打包结构是 将前端代码放到后端的static目录。 步骤&#xff1a; tags:shell 是配置号的docker 从前端代码编译->打jar->上传ftp # This file is a template, and might need editing before it works on your project. # This is a sample GitLab C…

CSRF 攻击

什么是 CSRF &#xff1f; CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;攻击&#xff0c;是一种常见的网络攻击方式&#xff0c;它利用用户在已登录网站的凭证&#xff08;如 Cookie、Session 等&#xff09;向第三方网站发送非授权的请求…

前端基础入门三大核心之HTML篇:深入理解重绘与重排 —— 概念、区别与实战演练

前端基础入门三大核心之HTML篇&#xff1a;深入理解重绘与重排 —— 概念、区别与实战演练 HTML渲染基础回顾重绘与重排的概念重绘&#xff08;Repaint&#xff09;重排&#xff08;Reflow&#xff09; 区别与影响实战示例&#xff1a;优化策略与代码演示示例1&#xff1a;避免…

Golang创建文件夹

方法 package zdpgo_fileimport ("os" )// AddDir 创建文件夹 func AddDir(dir string) error {if !IsExist(dir) {return os.MkdirAll(dir, os.ModePerm)}return nil }测试 package zdpgo_fileimport "testing"func TestAddDir(t *testing.T) {data : […

Scrapy 从创建到运行

Scrapy是一个强大的Python框架&#xff0c;专门用于构建网络爬虫。 步骤1&#xff1a;安装Scrapy 首先&#xff0c;你需要安装Scrapy框架来进行后续操作。以下是具体操作步骤&#xff1a; 1、使用pip命令安装Scrapy&#xff1a; pip install scrapy 步骤2&#xff1a;创建S…

【Python设计模式04】策略模式

策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以互相替换。策略模式让算法的变化不会影响使用算法的客户端&#xff0c;使得算法可以独立于客户端的变化而变化。…

Java数据结构与算法(最小栈)

前言 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。i…