コード例 #1
0
s32 nv_emmc_read(u8* ptr, u32 size, u32 count, FILE* fp)
{
    u32 real_size = 0;
    u32 ret;
    struct nv_emmc_file_header_stru* fd = (struct nv_emmc_file_header_stru*)fp;
    u32 len = size*count;


    nv_file_debug(NV_FILE_READ_API,0,0,size,count);

    if((NULL == fd)||(fd->fp != fd))
    {
        return BSP_ERR_NV_INVALID_PARAM;
    }

    real_size = ((fd->seek+len) < fd->length)? len: (fd->length - fd->seek );

    ret = nv_mtd_read(fd,(fd->off+fd->seek),real_size,ptr);/*读取注意文件seek位置*/
    if(ret != NAND_OK)
    {
        nv_file_debug(NV_FILE_READ_API,2,(u32)ret,real_size,fd->emmc_type);
        printf("\n[%s]\n",__func__);
        nv_emmc_help(NV_FILE_READ_API);
        return -1;
    }
    fd->seek += real_size;
    return (s32)real_size;
}
s32 nv_flash_read(u8* ptr, u32 size, u32 count, FILE* fp)
{
    u32 real_size = 0;
    s32 ret = -1;
    struct nv_flash_file_header_stru* ffp = (struct nv_flash_file_header_stru*)fp;
    u32 len = size*count;


    nv_file_debug(NV_FILE_READ_API,0,0,size,count);

    if((NULL == ffp)||(ffp->fp != ffp))
    {
        return BSP_ERR_NV_INVALID_PARAM;
    }

    real_size = ((ffp->seek+len) < ffp->length)? len: (ffp->length - ffp->seek );

    ret = (s32)nv_mtd_read(ffp,(ffp->off+ffp->seek),real_size,ptr);/*读取注意文件seek位置*/
    if(ret != NAND_OK)
    {
        nv_file_debug(NV_FILE_READ_API,2,(u32)ret,real_size,ffp->flash_type);
        nv_mntn_record("\n[%s]\n",__func__);
        nv_flash_help(NV_FILE_READ_API);
        return -1;
    }
    ffp->seek += real_size;
    return (s32)real_size;
}