DRESULT disk_write ( BYTE drv, /* Physical drive nmuber (0..) */ const BYTE *buff, /* Data to be written */ DWORD sector, /* Sector address (LBA) */ BYTE count /* Number of sectors to write (1..255) */ ) { DRESULT res; int result; switch (drv) { case ATA : result = ATA_disk_write(buff, sector, count); // translate the reslut code here return res; case MMC : result = MMC_disk_write(buff, sector, count); // translate the reslut code here return res; case USB : result = USB_disk_write(buff, sector, count); // translate the reslut code here return res; } return RES_PARERR; }
DRESULT disk_write ( BYTE pdrv, /* Physical drive nmuber (0..) */ const BYTE *buff, /* Data to be written */ DWORD sector, /* Sector address (LBA) */ DWORD count /* Number of sectors to write (1..128) */ ) { // DRESULT res; int result; int start_block; #ifndef CONFIG_ALLWINNER switch (pdrv) { case ATA : // translate the arguments here result = ATA_disk_write(buff, sector, count); // translate the reslut code here return res; case MMC : // translate the arguments here result = MMC_disk_write(buff, sector, count); // translate the reslut code here return res; case USB : // translate the arguments here result = USB_disk_write(buff, sector, count); // translate the reslut code here return res; } return RES_PARERR; #else start_block = sunxi_partition_get_offset_byname(PART_NAME[pdrv]); if (!start_block) { printf("[disk_write] no the partition\n"); return RES_ERROR; } // printf("write part %s\n", PART_NAME[pdrv]); // result = sunxi_test_nand_write(sector+start_block,count,buff); result = sunxi_flash_write(sector+start_block,count,(void *)buff); if(!result){ printf("[%s] err in sector %lx count %x buff %x\n",__func__,sector,(unsigned int)count,(unsigned int)buff); return RES_ERROR; } return RES_OK; #endif }
DRESULT disk_write ( BYTE pdrv, /* Physical drive nmuber to identify the drive */ const BYTE *buff, /* Data to be written */ DWORD sector, /* Sector address in LBA */ UINT count /* Number of sectors to write */ ) { DRESULT res = RES_OK; int result; #if 0 switch (pdrv) { case ATA : // translate the arguments here result = ATA_disk_write(buff, sector, count); // translate the reslut code here return res; case MMC : // translate the arguments here result = MMC_disk_write(buff, sector, count); // translate the reslut code here return res; case USB : // translate the arguments here result = USB_disk_write(buff, sector, count); // translate the reslut code here return res; } #else result = (g_tFatDrvs[pdrv].DrvWrite)((BYTE*)buff, sector, count); if(0 == result) return res; // 成功 #endif return RES_PARERR; }
DRESULT disk_write ( BYTE pdrv, /* Physical drive nmuber to identify the drive */ const BYTE *buff, /* Data to be written */ DWORD sector, /* Sector address in LBA */ UINT count /* Number of sectors to write */ ) { DRESULT res; int result; switch (pdrv) { case ATA : // translate the arguments here result = ATA_disk_write(buff, sector, count); // translate the reslut code here return res; case MMC : // translate the arguments here result = MMC_disk_write(buff, sector, count); // translate the reslut code here return res; case USB : // translate the arguments here result = USB_disk_write(buff, sector, count); // translate the reslut code here return res; } return RES_PARERR; }