- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I try to improve our SDCard reading performance. I have tested the speed of sdcard that we will use on our project, and windows can write a big file to it with 10MB/sec and read back with around 20MB/sec. When I plug same card into DE1-SOC board, I can read only 1.58 MB/sec. And this is after enabling cache, mmu and use high speed setting for MMC interface. Here is my MMU and MMC settings:void mmu_init(void)
{
uint32_t *ttb1 = NULL;
/* Populate the page table with sections (1 MiB regions). */
ALT_MMU_MEM_REGION_t regions =
{
/* Memory area: 1 GiB */
{
.va = (void *)0x00000000,
.pa = (void *)0x00000000,
.size = 0x40000000,
.access = ALT_MMU_AP_FULL_ACCESS,
.attributes = ALT_MMU_ATTR_DEVICE_NS, // ALT_MMU_ATTR_WBA causes SD card fail at reading, why??
.shareable = ALT_MMU_TTB_S_NON_SHAREABLE,
.execute = ALT_MMU_TTB_XN_DISABLE,
.security = ALT_MMU_TTB_NS_SECURE
},
/* Device area: Everything else */
{
.va = (void *)0x40000000,
.pa = (void *)0x40000000,
.size = 0xc0000000,
.access = ALT_MMU_AP_FULL_ACCESS,
.attributes = ALT_MMU_ATTR_DEVICE_NS,
.shareable = ALT_MMU_TTB_S_NON_SHAREABLE,
.execute = ALT_MMU_TTB_XN_ENABLE,
.security = ALT_MMU_TTB_NS_SECURE
}
};
alt_mmu_init();
alt_mmu_va_space_storage_required(regions, sizeof(regions)/sizeof(regions));
alt_mmu_va_space_create(&ttb1, regions, sizeof(regions)/sizeof(regions), alt_pt_alloc, alt_pt_storage);
alt_mmu_va_space_enable(ttb1);
}
void init_mmc(void)
{
ALT_STATUS_CODE status = ALT_E_SUCCESS;
ALT_SDMMC_CARD_MISC_t card_misc_cfg;
print_debug("MMC Initialization.\n");
alt_globaltmr_int_is_enabled();
alt_sdmmc_init();
alt_sdmmc_card_pwr_on();
alt_sdmmc_card_identify(&Card_Info); // Card_Info.card_type == ALT_SDMMC_CARD_TYPE_SDHC
alt_sdmmc_card_bus_width_set(&Card_Info, ALT_SDMMC_BUS_WIDTH_4);
alt_sdmmc_fifo_param_set((ALT_SDMMC_FIFO_NUM_ENTRIES >> 3) - 1, (ALT_SDMMC_FIFO_NUM_ENTRIES >> 3), ALT_SDMMC_MULT_TRANS_TXMSIZE1);
alt_sdmmc_card_misc_get(&card_misc_cfg);
alt_sdmmc_dma_enable();
alt_sdmmc_card_speed_set(&Card_Info, (Card_Info.high_speed ? 2 : 1) * Card_Info.xfer_speed); // switch to high speed
}
What can I do to improve sdcard reading performance? (windows reads 13 times faster) Thanks.
Link Copied
0 Replies

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page