1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-25 01:05:10 +03:00

Compilation fix. Massstorage won't use disk cache anymore

This commit is contained in:
Bertrand Songis 2016-07-31 08:10:46 +02:00
parent 67ebadc9e0
commit 4b2315f56b
9 changed files with 60 additions and 66 deletions

View file

@ -24,9 +24,6 @@
#if defined(SIMU) && !defined(SIMU_DISKIO)
#define __disk_read(...) (RES_OK)
#define __disk_write(...) (RES_OK)
#else
extern DRESULT __disk_read (BYTE pdrv, BYTE* buff, DWORD sector, UINT count);
extern DRESULT __disk_write (BYTE pdrv, const BYTE* buff, DWORD sector, UINT count);
#endif
#if 0 // set to 1 to enable traces
@ -37,8 +34,8 @@
DiskCache diskCache;
DiskCacheBlock::DiskCacheBlock()
: startSector(0),
DiskCacheBlock::DiskCacheBlock():
startSector(0),
endSector(0)
{
}
@ -79,8 +76,8 @@ bool DiskCacheBlock::empty() const
return (endSector == 0);
}
DiskCache::DiskCache()
: lastBlock(0)
DiskCache::DiskCache():
lastBlock(0)
{
stats.noHits = 0;
stats.noMisses = 0;
@ -102,7 +99,7 @@ DRESULT DiskCache::read(BYTE drv, BYTE * buff, DWORD sector, UINT count)
}
// if block + cache block size is beyond the end of the disk, then read it directly without using cache
if (sector+DISK_CACHE_BLOCK_SECTORS >= SDCardInfo.CardCapacity / SDCardInfo.CardBlockSize) {
if (sector+DISK_CACHE_BLOCK_SECTORS >= sdGetNoSectors()) {
TRACE_DISK_CACHE("\t\t cache would be beyond end of disk(%u)", this, (uint32_t)sector);
return __disk_read(drv, buff, sector, count);
}

View file

@ -13,4 +13,4 @@ endmacro(add_lua_export_target)
add_lua_export_target(taranis -DCPUARM -DPCBTARANIS -DLUA -DVIRTUALINPUTS)
add_lua_export_target(taranis_x9e -DCPUARM -DPCBTARANIS -DPCBX9E -DLUA -DVIRTUALINPUTS)
add_lua_export_target(horus -DCPUARM -DPCBHORUS -DLUA -DVIRTUALINPUTS -I${RADIO_SRC_DIRECTORY}/gui/horus)
add_lua_export_target(horus -DCPUARM -DPCBHORUS -DLUA -DVIRTUALINPUTS -I${RADIO_SRC_DIRECTORY}/gui/480x272)

View file

@ -326,7 +326,7 @@ uint32_t sdGetNoSectors()
uint32_t sdGetSize()
{
return (sdGetNoSectors() * 512) / 1000000;
return (sdGetNoSectors() * BLOCK_SIZE) / 1000000;
}
uint32_t sdGetFreeSectors()

View file

@ -229,7 +229,8 @@ int8_t STORAGE_Read (uint8_t lun,
}
#endif
return (disk_read(0, buf, blk_addr, blk_len) == RES_OK) ? 0 : -1;
// read without cache
return (__disk_read(0, buf, blk_addr, blk_len) == RES_OK) ? 0 : -1;
}
/**
* @brief Write data to the medium
@ -251,7 +252,8 @@ int8_t STORAGE_Write (uint8_t lun,
}
#endif
return (disk_write(0, buf, blk_addr, blk_len) == RES_OK) ? 0 : -1;
// write without cache
return (__disk_write(0, buf, blk_addr, blk_len) == RES_OK) ? 0 : -1;
}
/**

View file

@ -100,24 +100,33 @@ void delay_ms(uint32_t ms);
void getCPUUniqueID(char * s);
// SD driver
#define BLOCK_SIZE 512 /* Block Size in Bytes */
#if !defined(SIMU) || defined(SIMU_DISKIO)
uint32_t sdIsHC(void);
uint32_t sdGetSpeed(void);
#define SD_IS_HC() (sdIsHC())
#define SD_GET_SPEED() (sdGetSpeed())
#define SD_GET_FREE_BLOCKNR() (sdGetFreeSectors())
#define SD_CARD_PRESENT() (~SD_PRESENT_GPIO->IDR & SD_PRESENT_GPIO_PIN)
void sdInit(void);
void sdDone(void);
#define sdPoll10ms()
#define sdMountPoll()
uint32_t sdMounted(void);
uint32_t sdIsHC(void);
uint32_t sdGetSpeed(void);
#define SD_IS_HC() (sdIsHC())
#define SD_GET_SPEED() (sdGetSpeed())
#define SD_GET_FREE_BLOCKNR() (sdGetFreeSectors())
#define SD_CARD_PRESENT() (~SD_PRESENT_GPIO->IDR & SD_PRESENT_GPIO_PIN)
void sdInit(void);
void sdDone(void);
#define sdPoll10ms()
#define sdMountPoll()
uint32_t sdMounted(void);
#else
#define SD_IS_HC() (0)
#define SD_GET_SPEED() (0)
#define sdInit()
#define sdDone()
#define SD_CARD_PRESENT() true
#define SD_IS_HC() (0)
#define SD_GET_SPEED() (0)
#define sdInit()
#define sdDone()
#define SD_CARD_PRESENT() true
#endif
#if defined(DISK_CACHE)
#include "diskio.h"
DRESULT __disk_read(BYTE drv, BYTE * buff, DWORD sector, UINT count);
DRESULT __disk_write(BYTE drv, const BYTE * buff, DWORD sector, UINT count);
#else
#define __disk_read disk_read
#define __disk_write disk_write
#endif
// Flash Write driver

View file

@ -110,14 +110,9 @@ uint32_t sdReadRetries = 0;
/*-----------------------------------------------------------------------*/
/* Read Sector(s) */
#if !defined(DISK_CACHE)
#define __disk_read disk_read
#define __disk_write disk_write
#endif
DRESULT __disk_read (
DRESULT __disk_read(
BYTE drv, /* Physical drive nmuber (0..) */
BYTE *buff, /* Data buffer to store read data */
BYTE * buff, /* Data buffer to store read data */
DWORD sector, /* Sector address (LBA) */
UINT count /* Number of sectors to read (1..255) */
)
@ -194,7 +189,7 @@ DRESULT __disk_read (
/* Write Sector(s) */
#if _READONLY == 0
DRESULT __disk_write (
DRESULT __disk_write(
BYTE drv, /* Physical drive nmuber (0..) */
const BYTE *buff, /* Data to be written */
DWORD sector, /* Sector address (LBA) */
@ -250,9 +245,6 @@ DRESULT __disk_write (
}
#endif /* _READONLY */
/*-----------------------------------------------------------------------*/
/* Miscellaneous Functions */

View file

@ -24,8 +24,6 @@
#include "board.h"
#define BLOCK_SIZE 512 /* Block Size in Bytes */
#ifdef __cplusplus
extern "C" {
#endif

View file

@ -1105,11 +1105,6 @@ DSTATUS disk_status (BYTE pdrv)
return (DSTATUS)0;
}
#if !defined(DISK_CACHE)
#define __disk_read disk_read
#define __disk_write disk_write
#endif
DRESULT __disk_read (BYTE pdrv, BYTE* buff, DWORD sector, UINT count)
{
if (diskImage == 0) return RES_NOTRDY;

View file

@ -159,26 +159,27 @@ void getCPUUniqueID(char * s);
// SD driver
#define BLOCK_SIZE 512 /* Block Size in Bytes */
#if !defined(SIMU) || defined(SIMU_DISKIO)
uint32_t sdIsHC(void);
uint32_t sdGetSpeed(void);
#define SD_IS_HC() (sdIsHC())
#define SD_GET_SPEED() (sdGetSpeed())
#define SD_GET_FREE_BLOCKNR() (sdGetFreeSectors())
uint32_t sdIsHC(void);
uint32_t sdGetSpeed(void);
#define SD_IS_HC() (sdIsHC())
#define SD_GET_SPEED() (sdGetSpeed())
#define SD_GET_FREE_BLOCKNR() (sdGetFreeSectors())
#else
#define SD_IS_HC() (0)
#define SD_GET_SPEED() (0)
#define SD_IS_HC() (0)
#define SD_GET_SPEED() (0)
#endif
#define __disk_read disk_read
#define __disk_write disk_write
#if defined(SIMU)
#define sdInit()
#define sdDone()
#define sdInit()
#define sdDone()
#else
void sdInit(void);
void sdDone(void);
void sdPoll10ms(void);
#define sdMountPoll()
uint32_t sdMounted(void);
#define SD_CARD_PRESENT() (~SD_GPIO_PRESENT->IDR & SD_GPIO_PIN_PRESENT)
void sdInit(void);
void sdDone(void);
void sdPoll10ms(void);
#define sdMountPoll()
uint32_t sdMounted(void);
#define SD_CARD_PRESENT() (~SD_GPIO_PRESENT->IDR & SD_GPIO_PIN_PRESENT)
#endif
// Flash Write driver