Browse Source

Fix: ChibiOS V2 doesn't support dma cache handling at all

remotes/origin_old/release/v2.9
inmarket 5 years ago
parent
commit
fdaf636b5f
  1. 11
      src/gfile/gfile_fatfs_diskio_chibios.c
  2. 11
      src/gfile/gfile_petitfs_diskio_chibios.c

11
src/gfile/gfile_fatfs_diskio_chibios.c

@ -40,9 +40,14 @@
// specified data structure is aligned on a cache line boundary - not a good assumption.
// Solution: We increase the size provided to ChibiOS so that it does it properly.
// This assumes of course that we know the size of the cpu cache line.
#define CPU_CACHE_LINE_SIZE 32
#define CACHE_FLUSH(buf, sz) dmaBufferFlush((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
#define CACHE_INVALIDATE(buf, sz) dmaBufferInvalidate((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
#if CH_KERNEL_MAJOR > 2
#define CPU_CACHE_LINE_SIZE 32
#define CACHE_FLUSH(buf, sz) dmaBufferFlush((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
#define CACHE_INVALIDATE(buf, sz) dmaBufferInvalidate((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
#else
#define CACHE_FLUSH(buf, sz)
#define CACHE_INVALIDATE(buf, sz)
#endif
/* Initialize a Drive */
DSTATUS disk_initialize (

11
src/gfile/gfile_petitfs_diskio_chibios.c

@ -35,9 +35,14 @@
// specified data structure is aligned on a cache line boundary - not a good assumption.
// Solution: We increase the size provided to ChibiOS so that it does it properly.
// This assumes of course that we know the size of the cpu cache line.
#define CPU_CACHE_LINE_SIZE 32
#define CACHE_FLUSH(buf, sz) dmaBufferFlush((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
#define CACHE_INVALIDATE(buf, sz) dmaBufferInvalidate((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
#if CH_KERNEL_MAJOR > 2
#define CPU_CACHE_LINE_SIZE 32
#define CACHE_FLUSH(buf, sz) dmaBufferFlush((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
#define CACHE_INVALIDATE(buf, sz) dmaBufferInvalidate((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
#else
#define CACHE_FLUSH(buf, sz)
#define CACHE_INVALIDATE(buf, sz)
#endif
/*-----------------------------------------------------------------------*/
/* Initialize a Drive */

Loading…
Cancel
Save