void rt_hw_sd_mmc_init() { if (sd_mmc_spi_internal_init()) { rt_uint8_t *sector = rt_malloc(MMC_SECTOR_SIZE); sd_mmc_spi_read_open(0); if (sd_mmc_spi_read_sector_to_ram(sector)) { if (dfs_filesystem_get_partition(&sd_mmc_partition, sector, 0) != RT_EOK) { sd_mmc_partition.offset = 0; sd_mmc_partition.size = 0; } } else { sd_mmc_partition.offset = 0; sd_mmc_partition.size = 0; } sd_mmc_spi_read_close(); rt_free(sector); rt_device_register(&sd_mmc_device, "sd0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE | RT_DEVICE_FLAG_STANDALONE); } else { rt_kprintf("Failed to initialize SD/MMC card.\n"); } }
void sd_mmc_spi_mem_init(void) { sd_mmc_spi_internal_init(); // Restart Init of SD/MMC card after previous first init }