zynq pl设计中断问题

问题

    逻辑工程师vivado工具生成的pl hdf文件后,通过xilinx的工具解析的的dts文件,会出现中断号异常的问题。

   原始问题肯定是硬件表现为通讯异常,此处以网口为例,则网口不通。

网口查询

uboot下网口信息

如下命令查询到 两个mac下对应的phy,地址分别为4和6,和硬件设计一致。

> mdio list
ethernet@e0047000:
4 - Generic PHY <--> ethernet@e0047000
6 - Generic PHY <--> ethernet@e0049000
ethernet@e0049000:

在线更新uboot

sf probe 0:0 && tftp 0x1000000 BOOT.bin
sf update 0x1000000 0 0xc6fc0

linux 下面读取phy寄存器

例如工作模式确认

# mdio eth0 0x1e  0xa001;mdio eth0 0x1f 
write phy addr: 0x4  reg: 0x1e  value : 0xa001

read phy addr: 0x4  reg: 0x1f   value : 0x8160

# 
# 
# mdio eth2 0x1e  0xa001;mdio eth2 0x1f 
write phy addr: 0x4  reg: 0x1e  value : 0xa001

read phy addr: 0x4  reg: 0x1f   value : 0x8160

uboot下对phy复位

PL 出的网口,连接的phy 由EMIO 9关键控制复位。

fmsh> gpio clear portc9
gpio: pin portc9 (gpio 63) value is 0
fmsh> gpio set portc9
gpio: pin portc9 (gpio 63) value is 1
Warning: value of pin is still 0
fmsh>

PL中断

PS分配给PL的中断

PL 到PS的中断总共16个。分别为57-64以及84-91

 

中断号与逻辑设计

    上面16个中断号与逻辑设计中的如下16个连接线是一一对应的。即逻辑功能连接到ln0时,对应的中断是57,依次类推。

例如 此处连接的ln9 ln10两个,则对应的中断为85与86两个。

 连接线bug

如上图所示,注意到此处ln1 ln3 ln4是悬空的,这时候用vivado生成的中断号信息为31 32,即对应中断表中的63,64(前者加32),和设计是不对应的。

分析可以看出,当有中断悬空的时候,后续的管脚会自动上移动。

中断和设计不一致,导致中断一致收不到,进而异常。

连接线bug解决

 xlconcat前面管脚不要悬空。

基于此,生成的dts文件中断部分可以直接使用,不需要单独修改。

dts 网络部分的中断会在上述中断表的基础上减32.

而串口部分则与中断表相同。这应该是驱动层的设计差异。

### 回答1: zynq pl 29中断一直存在的原因可能有多种。首先,中断是处理器在执行某些任务时打断正常流程的一种机制。因此,在使用zynq pl 29时,由于计算量大、硬件资源有限,可能会出现大量的中断,以确保正常的任务执行。 其次,zynq pl 29的设计中可能会使用中断的方式来处理设备的输入/输出请求或者提示状态的改变。这样,当外设需要与处理器进行通信时,会通过中断请求将处理器的注意力转移到外设。这些中断请求可能会持续存在直到处理器处理完相关的任务并做出相应的响应。 此外,zynq pl 29中可能还存在硬件故障或者错误,导致中断一直发生。这可能是由于设计或者制造过程中的错误、电路连线不良、供电问题等引起的。当硬件出现故障时,可能会引发中断并持续存在。 最后,中断的持续存在可能还与zynq pl 29的软件设计有关。如果软件程序中存在某些错误,比如无限循环、死锁等,会导致中断无法被正确处理或解除,从而导致中断一直存在。 综上所述,zynq pl 29中断一直存在可能是由于系统设计、硬件故障、软件错误等多种原因导致的。针对这个问题,我们可以根据具体的情况逐一排查并解决问题,比如检查硬件连线、供电情况,调试软件代码等。 ### 回答2: 在Zynq PL(Programmable Logic)中,29中断是指第29个中断中断是计算机系统中的一种机制,用于处理来自外部设备或内部事件的通知。在Zynq PL中,中断被用于处理与可编程逻辑相关的事件。 "中断一直有" 的意思可能是指29号中断一直持续发生。这可能是由于在程序中设置了某种循环或条件,导致在特定情况下29号中断一直触发。这可能是PL中特定模块的设计需求,也可能是在软件/固件的代码中设置的。 要解决这个问题,可以检查程序的代码,查看是否存在循环或条件语句,这些语句可能导致29号中断一直触发。此外,还可以检查与29号中断相关的外设或模块,以确定是否存在与此中断相关的问题。 在解决这个问题之前,要考虑处理这个中断是否符合系统设计的需求。如果该中断是有意设置的,并与某些特定功能或事件相关,那么不需要解决此问题。然而,如果29号中断的不断触发是不希望的,并且会干扰系统的正常运行,那么需要检查并修正代码或硬件的设计问题,以避免中断的持续触发。 总之,"Zynq PL 29中断一直有"的问题需要对相关代码、硬件设计和系统需求进行仔细检查和分析,以确定合适的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

proware

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值