文件系统挂载断言机制,只能在 系统APP里初始化并要延时500ms才能挂载系统

发布于 2020-07-22 08:38:17
int rt_hw_sdio_init(void)
{
    struct stm32_sdio_des sdio_des;
    SD_HandleTypeDef hsd;
    hsd.Instance = SDCARD_INSTANCE;
    {
        rt_uint32_t tmpreg = 0x00U;
#if defined(SOC_SERIES_STM32F1)
        /* enable DMA clock && Delay after an RCC peripheral clock enabling*/
        SET_BIT(RCC->AHBENR, sdio_config.dma_rx.dma_rcc);
        tmpreg = READ_BIT(RCC->AHBENR, sdio_config.dma_rx.dma_rcc);
#elif defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) || defined(SOC_SERIES_STM32L4)
        SET_BIT(RCC->AHB1ENR, sdio_config.dma_rx.dma_rcc);
        /* Delay after an RCC peripheral clock enabling */
        tmpreg = READ_BIT(RCC->AHB1ENR, sdio_config.dma_rx.dma_rcc);
#endif
        UNUSED(tmpreg); /* To avoid compiler warnings */
    }
    HAL_NVIC_SetPriority(SDIO_IRQn, 2, 0);
    HAL_NVIC_EnableIRQ(SDIO_IRQn);
    HAL_SD_MspInit(&hsd);

    sdio_des.clk_get = stm32_sdio_clock_get;
    sdio_des.hw_sdio = (struct stm32_sdio *)SDCARD_INSTANCE;
    sdio_des.rxconfig = DMA_RxConfig;
    sdio_des.txconfig = DMA_TxConfig;

    host = sdio_host_create(&sdio_des);
    if (host == RT_NULL)
    {
        LOG_E("host create fail");
        return -1;
    }

    return 0;
}
INIT_DEVICE_EXPORT(rt_hw_sdio_init);




static int dfs_file_init(void)
{
    if (0 == dfs_mount("sd0", "/", "elm", 0, 0))
    {
        rt_kprintf(" \n");
        rt_kprintf("SD card mount successful.\n");
        return 0;
    }
    else
    {
        rt_kprintf(" \n");
        rt_kprintf("SD card mount failed.\n");
        return -1;
    }
}

INIT_ENV_EXPORT(dfs_file_init);

这样的情况下,会出现
(dev != RT_NULL) assertion failed at function:rt_device_control, line number:423

查看更多

关注者
0
被浏览
380
2 个回答
来一颗糖
来一颗糖 2020-08-14

正常!需要等里面的一个 mmc 探测线程成功识别到 SD 卡后,才会有 sd0 设备!没识别前,是没有 sd0 设备的!!!

qq_还没想好
qq_还没想好 2020-08-14

试试 mmcsd_wait_cd_changed 这个函数

    if (MMCSD_HOST_PLUGED != mmcsd_wait_cd_changed(RT_TICK_PER_SECOND * 8))
    {
        DEBUG_TRACE("MMCSD_HOST_PLUGED timeout!");
        return 0;
    }

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览