1

我想从我的 MMC 上的 FAT 中读取一个文件(675 字节)。我使用在 spl.c 中调用的函数 file_fat_read()。我的代码如下所示。

读取较小的文件不是问题。但是,读取较大的文件会返回以下错误并停止引导设备(PandaBoard OMAP 4460):

dlmalloc.c:2084: malloc_extend_top: Assertion '((unsigned long)((char*)top + top_size) & (pagesz - 1)) == 0' failed.

我的问题是:这个文件是否太大而无法读取,还是我以错误的方式调用 file_fat_read()?

我的代码:

/* Function to read Helper Data from MMC */
void readHelperData(char *filename, int length){
    s32 err;
    uint8_t i = 0;

    printf("\n[D] - Reading Helper Data\r\n\n");
    err = file_fat_read(filename, helperData, length);
    if(err > 0){
            printf("[D] - Received Helper Data (%d bytes):\n", err);
            for(i = 0; i < err; i++){
                if((i%9==0)&&i>0)   printf("\n");
                    printf("0x%02x ", helperData[i]);
            }
    }else{
            printf("[E] - Error reading Helper Data file %s from MMC\n", filename);
    }
    puts("");   
}

void board_init_r(gd_t *id, ulong dummy)
{
    u32 boot_device;
    debug(">>spl:board_init_r()\n");

    mem_malloc_init(CONFIG_SYS_SPL_MALLOC_START, CONFIG_SYS_SPL_MALLOC_SIZE);

    #ifdef CONFIG_SPL_BOARD_INIT
    spl_board_init();
    #endif
    printf("\nReconstruction mode\n\n");

    /* Encoding steps for reconstruction phase */
    readMeasurement((char*)0x40300000, 675, measurement);
    boot_device = omap_boot_device();
    printf("boot device - %d\n", boot_device);
    spl_mmc_load_image(1);
    readHelperData("test.dat", 15);
}
4

0 回答 0