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.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

proware

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

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

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

打赏作者

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

抵扣说明:

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

余额充值