PostbyJune11»Tue Apr 18, 2023 1:35 am 板子:esp32-s3-korvo-2 版本:esp-idf-v4.4.4 运行example/storage/sd_card/sdmmc出现以下错误 E (384) sdmmc_sd: sdmmc_init_sd_if_cond: send_if_cond (1) returned 0x108 E (384) vfs_fat_sdmmc: sdmmc_card_init failed (0x108). ...
mmc_go_idle(host);//进入空闲状态,这个是规范里面有的,怎么进入规范里面也有说明mmc_send_if_cond(host, host->ocr_avail);//发送控制器兼容的电压/* * First we search for SDIO... *///判断是否为sdio接口的设备err = mmc_send_io_op_cond(host,0, &ocr);if(!err) {if(mmc_attach_sdio(host...
* Skip it if we already know that we do not support SDIO commands*/#ifdef MMC_STANDARD_PROBEif(!(host->caps2 &MMC_CAP2_NO_SDIO)) sdio_reset(host);mmc_go_idle(host);if(!(host->caps2 &MMC_CAP2_NO_SD))mmc_send_if_cond(host, host->ocr_avail);/*Order's important: probe SDIO...
sdio_reset(host);//进入IDLE状态mmc_go_idle(host);if(!(host->caps2 & MMC_CAP2_NO_SD)) {if(mmc_send_if_cond_pcie(host, host->ocr_avail))gotoout;if(mmc_card_sd_express(host))return0; }//调用attach, 优先级SDIO > SD > MMCif(!(host->caps2 & MMC_CAP2_NO_SDIO))if(!mmc_at...
static int mmc_rescan_try_freq(struct mmc_host *host, unsigned freq) { host->f_init = freq; mmc_power_up(host); // 给host做上电操作 mmc_hw_reset_for_init(host); // 硬件复位和初始化 mmc_go_idle(host); mmc_send_if_cond(host, host->ocr_avail); // 获取card的可用频率,存储到...
mmc_send_op_cond 发送CMD1指令,SEND_OP_COND 这里会设置card的工作电压寄存器OCR,并且通过busy位(bit31)来判断card的上电复位过程是否完成,如果没有完成的话需要重复发送。 完成之后,mmc card进入ready state。 mmc_all_send_cid 这里会发送CMD2指令,ALL_SEND_CID ...
1、⾸先,来明确⼀下我们需要分析的⽂件。我们重点是分析驱动程序的基本构架,MMC/SD 卡驱动程序位于 drivers/mmc ⽬录下,我们只列出我们分析过程涉及到的⼏个⽂件:Card/ block.c queue.c/queue.h core/ bus.c/bus.h core.c/core.h host.c/host.h mmc.c mmc_ops.c/mmc_ops.h (拿 MMC...
if(!err) { if (mmc_attach_sdio(host, ocr)) mmc_power_off(host); extend_wakelock = 1; goto out; } /* * ...然后普通的SD... */ err= mmc_send_app_op_cond(host, 0, &ocr); if(!err) { if (mmc_attach_sd(host, ocr)) ...
(structxxx_mmc_host),&pdev->dev);if(mmc==NULL){pr_err("alloc host failed\n");ret=-ENOMEM;gotoerr_alloc_host;}// pointer initializationhost=mmc_priv(mmc);host->mmc=mmc;host->id=pdev->id;/* Step 2: Initialize struct mmc_host */// 第2步:初始化mmc_host的结构成员mmc->ops=&...
esp_err_t sdmmc_send_cmd_send_if_cond(sdmmc_card_t* card, uint32_t ocr) { const uint8_t pattern = 0xaa; /* any pattern will do here */ sdmmc_command_t cmd = { .opcode = SD_SEND_IF_COND, .arg = (((ocr & SD_OCR_VOL_MASK) != 0) << 8) | pattern, .flags = ...