[调试] JTAG下运行正常,从QSPI或者SD卡启动则无响应,如何查找问题
一、问题现象
用jtag在ide里面调试运行都正常。
生成boot.bin烧写到flash后,上电pl done不亮,串口无打印输出
二、用自定义fsbl替代系统默认的fsbl
1. 新建fsbl_new
新建一个app,选择Zynq FSBL模板。
2. 如果提示缺少xilffs库
在上面的情况,有可能会提示bsp缺少xilffs库。
这时候返回到bsp界面,勾选添加缺少的库,并重新编译全部工程。再执行上面的新建步骤
3. 使能调试信息输出
打开新建的工程,找到fsbl_debug.h
可以看到#if defined (FSBL_DEBUG_INFO)这行,
只要我们定义了FSBL_DEBUG_INFO,就会输出完整调试信息
因此,在36行增加
#define FSBL_DEBUG_INFO
然后重新编译fsbl_new
三. 启动成功和失败情况下的典型输出
1. JTAG启动模式: 正常加载
把启动模式切换到JTAG,然后运行fsbl_new,结果如下:
Xilinx First Stage Boot Loader
Release 2020.1 Jul 2 2024-12:27:50
Devcfg driver initialized
Silicon Version 3.1
Boot mode is JTAG
2. QSPI启动模式
2.1 正常加载: flash已经烧写正常运行的程序,启动模式QSPI
先烧写QSPI,然后断电,把启动模式切换到JTAG。重新上电,在Vitis里面运行fsbl_new,结果如下:
Xilinx First Stage Boot Loader
Release 2020.1 Jul 2 2024-12:27:50
Devcfg driver initialized
Silicon Version 3.1
Boot mode is QSPI
Single Flash Information
FlashID=0x1 0x20 0x18
SPANSION 128M Bits
QSPI is in Dual Parallel connection
QSPI Init Done
Flash Base Address: 0xFC000000
Reboot status register: 0x60500000
Multiboot Register: 0x0000C000
Image Start Address: 0x00000000
Partition Header Offset:0x00000C80
Partition Count: 3
Partition Number: 1
Header Dump
Image Word Len: 0x00080B00
Data Word Len: 0x00080B00
Partition Word Len:0x00080B00
Load Addr: 0x00000000
Exec Addr: 0x00000000
Partition Start: 0x000065D0
Partition Attr: 0x00000020
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFFE776BE
Bitstream
In FsblHookBeforeBitstreamDload function
PCAP:StatusReg = 0x40000F30
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: 0x5802000F
PCAP IMR 0xF8007010: 0xFFFFFFFF
PCAP STATUS 0xF8007014: 0x00000A30
PCAP DMA SRC ADDR 0xF8007018: 0xFC019741
PCAP DMA DEST ADDR 0xF800701C: 0xFFFFFFFF
PCAP DMA SRC LEN 0xF8007020: 0x00080B00
PCAP DMA DEST LEN 0xF8007024: 0x00080B00
PCAP ROM SHADOW CTRL 0xF8007028: 0xFFFFFFFF
PCAP MBOOT 0xF800702C: 0x0000C000
PCAP SW ID 0xF8007030: 0x00000000
PCAP UNLOCK 0xF8007034: 0x757BDF0D
PCAP MCTRL 0xF8007080: 0x30800100
..