取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
530 次查看
注册日期: ‎12-24-2018

ZU2无法通过SD卡的BOOT启动

跳至解决方案

1、ZU2板卡使用MIO46-MIO51作为SD卡的接口,设置为BOOT启动,在之前的项目中验证过SD卡启动没有问题;在新的项目中同样的电路发现SD卡启动不了,没有任何打印;但是使用JTAG连接做memory test,DRAM test,程序打印结果却都是正常的;

2、后来测量上电时SDIO信号的波形,CLK时钟在222kHz左右,CMD只有很短的一小段就停止了,见附件,4根DATA线上没有任何数据;对于正常的板卡,CMD信号很长,且DATA线上有数据;请问这可能是什么原因导致的?跟ZU2芯片的焊接不良有关系吗?跟SD卡中的BOOT.bin程序有关系吗?

3、还有一个现象,用VIVADO通过JTAG连接,通过sysmon看到的VCCO_PSIO1为1.8V,实际是3.3V;VCCO_PSIO2实际是1.8V,显示确是3.3V,见附件;不知道跟这个有没有关系;不管是否插上SD卡,这两个电压显示都是错误的;另外,在VIVADO的Block中设置了这两个Bank的电平值,SDIO对应设置的是3.3V;

4、对于其他项目正常的ZU2板卡,插上SD卡后显示是正确的,VCCO_PSIO1为3.3V,VCCO_PSIO2是1.8V。不插SD卡时,显示也是错误的,不知道这个显示错误代表了什么?是什么原因引起的;

tek00016.jpg
微信图片_20201115172103.jpg
0 项奖励
回复
1 解答

已接受的解答
Xilinx Employee
Xilinx Employee
355 次查看
注册日期: ‎06-19-2019

你要确定是哪个SDIO有问题的话,先看一下你bsp中xsdps_g.c中XSdPs_ConfigTable定义了几个SDIO。如果有2个的话,再ff.c中看一下 stat = disk_initialize(pdrv); 的pdrv值是多少,0对应的是你XSdPs_ConfigTable中第一个SDIO,1对应的是第二个SDIO。

如果确定无法正常读写,接下来你可以通过debug的方式,看看具体执行到哪一个环节SD卡出现异常,方便进一步定位问题点。

如果这个现象是这一批板子都必现的问题,那么可以尝试降低SD卡时钟频率,看看是否有效。

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------

在原帖中查看解决方案

0 项奖励
回复
11 回复数
Xilinx Employee
Xilinx Employee
463 次查看
注册日期: ‎06-19-2019

memory test和DRAM test测试的是内存,和SD卡应该没有什么关系。

你可以在裸核下用example design看看能否读写SD卡。

也可以尝试用JTAG启动U-BOOT,然后测试下看看能否找到你的SD卡。

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
回复
450 次查看
注册日期: ‎12-24-2018

多谢,请问在裸核下用example design看看能否读写SD卡,哪里能找到example project,我用Peripheral Test做了一下测试,都是PASS的,但我看这里面没有关于SD卡的测试。

0 项奖励
回复
Xilinx Employee
Xilinx Employee
438 次查看
注册日期: ‎06-19-2019

你现在bsp的设置里使能xilffs这个库,然后在bsp驱动列表找到对应的example了。

Capture39.PNG

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
回复
381 次查看
注册日期: ‎12-24-2018

多谢,按照你的说法进行了操作,但是其中的f_mkfs(),FA_CRATE_ALWAYS,FA_WRITE 这些参数会报错,应该是没有定义和声明,请问在哪里能找到相关的声明文件,多谢!

0 项奖励
回复
366 次查看
注册日期: ‎12-24-2018

你好,我后来新建了一个BSP,不报错了;在*Path为0时测试是成功的,*Path为1时测试是失败的;这里*Path代表什么意思,我的SDIO0连接的是eMMC,SDIO1连接的是SD卡,是不是说明SD卡的测试失败了?接下来要采取什么措施?

  1. int FfsSdPolledExample(void)
  2.  
    {
  3.  
  1. /*
  2.  
    * To test logical drive 0, Path should be "0:/"
  3.  
    * For logical drive 1, Path should be "1:/"
  4.  
    */
  5.  
    TCHAR *Path = "0:/";
0 项奖励
回复
Xilinx Employee
Xilinx Employee
356 次查看
注册日期: ‎06-19-2019

你要确定是哪个SDIO有问题的话,先看一下你bsp中xsdps_g.c中XSdPs_ConfigTable定义了几个SDIO。如果有2个的话,再ff.c中看一下 stat = disk_initialize(pdrv); 的pdrv值是多少,0对应的是你XSdPs_ConfigTable中第一个SDIO,1对应的是第二个SDIO。

如果确定无法正常读写,接下来你可以通过debug的方式,看看具体执行到哪一个环节SD卡出现异常,方便进一步定位问题点。

如果这个现象是这一批板子都必现的问题,那么可以尝试降低SD卡时钟频率,看看是否有效。

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------

在原帖中查看解决方案

0 项奖励
回复
346 次查看
注册日期: ‎12-24-2018

多谢你的及时回复:

1、后来已经确定,逻辑地址为1时对应的是SD卡的地址,确实是测试Fail了;

2、后来发现程序死在了f_open()那里,通过f_open()函数返回失败;

3、在测试时,用示波器测量了SD卡的CLK,CMD,四根Data线,都是有数据的,就是说线路是通的;

4、且跑过测试程序之后,SD卡中的文件被删掉了;

5、这一批板卡中测试了两块都有这个问题,目前就拿到了两块板子;

6、请问你说的降频是怎么操作的,在SD卡启动时能降频吗?接下来还有什么建议能让ZU2从SD卡启动?多谢!

0 项奖励
回复
Xilinx Employee
Xilinx Employee
330 次查看
注册日期: ‎06-19-2019

在vivado的工程中可以配置SD的时钟频率,你可以把这个频率降低,可以尝试20M或者10M。看看能否正常读取SD卡。

另外,你尝试将你的SD卡重新格式化成FAT32再尝试一下。

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
回复
310 次查看
注册日期: ‎12-24-2018

多谢你的及时回复,后来排查了一下硬件,靠近ZU2端的电阻由33欧换成47欧之后SD卡有加载,FSBL部分的打印信息有部分显示,但是FSBL部分没有执行成功,具体的打印信息如下,帮忙看下这个是什么意思,有什么建议,多谢!

Xilinx Zynq MP First Stage Boot Loader 
Release 2018.2   Nov 18 2020  -  16:31:19
Reset Mode : System Reset
Platform: Silicon (4.0), Cluster ID 0x80000000
Running on A53-0 (64-bit) Processor, Device Name: XCZU2EG
Processor Initialization Done 
================= In Stage 2 ============ 
SD1 Boot Mode 
SD: rc= 0
File name is 1:/BOOT.BIN
Multiboot Reg : 0x0 
Image Header Table Offset 0x8C0 
*****Image Header Table Details******** 
Boot Gen Ver: 0x1020000 
No of Partitions: 0x2 
Partition Header Address: 0x440 
Partition Present Device: 0x0 
Initialization Success 
======= In Stage 3, Partition No:1 ======= 
XFSBL_ERROR_ADDRESS: FFFC0000
Partition 1 Load Failed, 0x2E
================= In Stage Err ============ 
Fsbl Error Status: 0x0ÿ
0 项奖励
回复
299 次查看
注册日期: ‎12-24-2018
后来发现了一个规律,在SD卡启动的情况下:
 
1、使用SDK自带的Hello world和Peripheral Tests是没有问题的;
 
2、使用SDK自带的Memory Tests和DRAM test测试时会出现问题,就是FSBL运行不通过的情况;
 
3、使用老的板卡验证了一下,SD卡启动时Memory Tests也运行不了,请问是这样的吗?多谢!
0 项奖励
回复
Xilinx Employee
Xilinx Employee
276 次查看
注册日期: ‎06-19-2019

pangsifeng@126.com 

抱歉回复晚了。

你可以看一下FSBL的代码,这个错误是因为你BOOT.bin中包含的partition加载的位置不正确。

你检查一下你bif文件,看看是对应的哪个partition不正确,也检查一下其中的lscript.ld地址位置。

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
回复