zoukankan      html  css  js  c++  java
  • Vivado 2018.2 同时激活 SD0 (sd card) 和 SD1 (emmc) 时,从 emmc 启动的错误:no mmc device at slot 0

    开发环境

    Vivado 2018.2

    Petalinux 2018.2

    问题描述

    当同时激活 SD0 (对应SD卡座) 和 SD1 (对应板载 emmc) 时,当从 emmc 启动,报如下错误,

    U-Boot 2018.01 (Apr 14 2020 - 10:49:36 +0800) Xilinx Zynq ZC702
    
    Board: Xilinx Zynq
    Silicon: v3.1
    DRAM:  ECC disabled 1 GiB
    MMC:   Card did not respond to voltage select!
    mmc_init: -95, time 23
    sdhci@e0100000 - probe failed: -95
    sdhci_transfer_data: Error detected in status(0x208000)!
    Card did not respond to voltage select!
    mmc_init: -95, time 23
    
    SF: Detected w25q256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
    *** Warning - bad CRC, using default environment
    
    In:    serial@e0000000
    Out:   serial@e0000000
    Err:   serial@e0000000
    Board: Xilinx Zynq
    Silicon: v3.1
    Net:   ZYNQ GEM: e000b000, phyaddr ffffffff, interface rgmii-id
    eth0: ethernet@e000b000
    U-BOOT for drive_usb_qspi_sd_ethernet_with_boot_from_emmc
    
    ethernet@e000b000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    Hit any key to stop autoboot:  4  3  2  1  0 
    no mmc device at slot 0
    Zynq> 

    解决方法

    root cause: 配置 Primary SD 为 SD1 后,对应到更改没有更新到 u-boot 中去。

    打开 <petalinux-project-path>/project-spec/meta-plnx-generated/recipes-bsp/u-boot/configs 下的文件 platform-auto.h,有如下宏,

    ... 
    	"netboot=tftpboot ${netstart} ${kernel_img} && bootm"  
    	"default_bootcmd=run uenvboot; run cp_kernel2ram && bootm ${netstart}"  
    ""
    
    /* BOOTCOMMAND */
    #define CONFIG_BOOTCOMMAND	"run default_bootcmd"
    
    #endif /* __PLNX_CONFIG_H */

    打开 <petalinux-project-path>/project-spec/meta-user/recipes-bsp/u-boot/files 下到文件 platform-top.h,添加如下内容 (对上述宏作一个重置),

    /*************************************************************************************************************************************/
    /* fix SD0 is sd card, SD1 is emmc, if no card insert into SD0 slot, zynq cannot detect SD1 emmc. (Vivado 2018.2 + Petalinux 2018.2) */
    /*************************************************************************************************************************************/
    #ifdef CONFIG_BOOTCOMMAND
    #undef CONFIG_BOOTCOMMAND
    #define CONFIG_BOOTCOMMAND "mmc dev ${sdbootdev}; run default_bootcmd"
    #endif
    /*************************************************************************************************************************************/

    重新编译工程即可。

    参考文件

    https://www.xilinx.com/support/answers/69780.html?tdsourcetag=s_pcqq_aiomsg

    https://forums.xilinx.com/t5/Embedded-Linux/BOOting-image-ub-from-eMMC/m-p/979363/highlight/false#M33948

    完。

  • 相关阅读:
    vue导出Excel表格(纯前端)
    Ubuntu16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano
    python高级特性
    顺序容器
    感知机和支持向量机
    IO库
    字符串、向量、数组、迭代器

    c++函数
    C++语句
  • 原文地址:https://www.cnblogs.com/gaowengang/p/12697176.html
Copyright © 2011-2022 走看看