/* * 写nand接口 * mtd : mtd device * off : loggic offset in this file,need * len : data len write to flash ,len <= mtd->erasesize * ptr : the data need to write */ u32 nv_mtd_write(struct nv_flash_file_header_stru* ffp,FSZ off,u32 len,u8* ptr) { u32 ret; u32 offset = 0; /*传进来的偏移相对于文件头的逻辑偏移*/ struct mtd_info* mtd = ffp->mtd; ret = nv_sec_off_count(ffp,off,&offset); if(ret != NAND_OK) { nv_printf("%s\n",mtd->name); return ret; } if ( NV_FILE_SYS_NV == ffp->flash_type ) { ret = (u32)bsp_nand_write_dload((char*)mtd->name,offset,ptr,len); } else { ret = (u32)bsp_nand_write((char*)mtd->name,offset,ptr,len); } if(ret) { nv_printf("%s\n",mtd->name); return ret; } return ret; }
/* * 读nand接口 * mtd : mtd device * off : loggic offset in this file,need * len : data len write to flash ,len <= mtd->erasesize * ptr : the data need to write */ u32 nv_mtd_read(struct nv_emmc_file_header_stru* fd,FSZ off,u32 len,u8* ptr) { u32 ret; u32 offset = 0; /*传进来的偏移相对于文件头的逻辑偏移*/ struct mtd_info* mtd = fd->mtd; ret = nv_sec_off_count(fd,off,&offset); if(ret != NAND_OK) { return ret; } ret = (u32)bsp_nand_read((char*)mtd->name,offset,ptr,len,NULL); return ret; }