ZYNQ使用TCP烧录bin文件后DMA DONE 卡死

真是个棘手的问题啊,因为同样的代码,之前在Alinx的核心板上验证过是没有问题的,但是在自己设计的板子上就不行了。关键是不是一直不行,是有时候烧录进去能正常启动,有时候烧录进去就卡死。
出了这个问题,没有解决思路就开始网上搜,一下是在这过程中搜索到的有用的信息:
1.zynq-7015使用lwip-tcp远程对QSPI进行更新、QSPI FLASH启动
这个里面提供了一些检索的链接,有可能可以解决你的问题,总结起来就是网络调试助手有问题,文中还包含了一些其他链接,比如说的Flash有坏块之类的。很不幸这个没能解决我的问题!
2.江山易改本性难移之ZYNQ SDK FSBL加载启动代码详解
然后就是看了这篇文章,主要是研究一下出现这个DMA DONE之后卡在什么流程,具体可以读一下这个文章,写的不错,很清晰,也能定位到最终卡死在哪里,但是没有能力解决,很尴尬。
3.pbuf结构中的内容
研究这个内容主要是因为参考的正点原子的代码,而在tcp传输bin文件这里使用到pbuf,当时没看懂这里的代码,怕是代码有问题,所以看了一下,确定代码没有问题。在这期间也使用了Alinx的代码,发现出错的概率比正点原子小很多,但是Alinx的需要配合他们自己的软件上位机使用,而且没法看到当前烧录的进度。
4.ZYNQ控制程序重启与重定位
到这里就是基本解决了问题了,需要将烧录之后的代码自动重启,而不需要手动启动,但是这里还是有点问题,就是会出现烧录完成之后不会自动重启,而是需要手动断电重启。

正常启动打印信息

Xilinx First Stage Boot Loader
Release 2018.3  Aug  7 2024-14:54:55
Devcfg driver initialized				//Processor Configuration Access Port即处理器配置接口,连接软件和硬件的桥梁
Silicon Version 3.1      				//获取PS版本号
Boot mode is QSPI						//读取启动模式寄存器后确定启动方式是QSPI
Single Flash Information
FlashID=0xEF 0x40 0x19
WINBOND 256M Bits
QSPI is in single flash connection
QSPI is in 4-bit mode
QSPI Init Done
Flash Base Address: 0xFC000000
Reboot status register: 0x60400000
Multiboot Register: 0x0000C000
Image Start Address: 0x00000000
Partition Header Offset:0x00000C80
Partition Count: 3						//总的partition的数量,即共有3个段;分别为fsbl.elf、fpga.bit、app.elf
Partition Number: 1						//最开始的partition就是fsbl自身,当前已经在BootROM中运行了,所以不用管;这里的==1==就是指向fpga.bit这个段
Header Dump
Image Word Len: 0x000F6EC0				//fpga.bit的大小 3950KB
Data Word Len: 0x000F6EC0
Partition Word Len:0x000F6EC0
Load Addr: 0x00000000
Exec Addr: 0x00000000
Partition Start: 0x000075D0
Partition Attr: 0x00000020				//用来判断文件属性,例如FPGA.bit或者application.elf
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFFD13B7E
Bitstream								//利用上面的partition attr识别出的文件属性
In FsblHookBeforeBitstreamDload function
PCAP:StatusReg = 0x40000A30
PCAP:device ready
PCAP:Clear done
Level Shifter Value = 0xA
Devcfg Status register = 0x40000A30
PCAP:Fabric is Initialized done
PCAP register dump:
PCAP CTRL 0xF8007000: 0x4C00E07F
PCAP LOCK 0xF8007004: 0x0000001A
PCAP CONFIG 0xF8007008: 0x00000508
PCAP ISR 0xF800700C: 0x0802000B
PCAP IMR 0xF8007010: 0xFF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值