Fix bug in using nor flash storage without SD

This commit is contained in:
Michael McMaster 2021-03-22 13:48:51 +10:00
parent b6bac91911
commit 026583b1fd
8 changed files with 18 additions and 12 deletions

View File

@ -67,7 +67,7 @@ static int usbReady;
static void initBoardConfig(S2S_BoardConfig* config) {
memcpy(
config,
(
(const void*)(
CY_FLASH_BASE +
(CY_FLASH_SIZEOF_ARRAY * (size_t) SCSI_CONFIG_ARRAY) +
(CY_FLASH_SIZEOF_ROW * SCSI_CONFIG_BOARD_ROW)
@ -472,7 +472,7 @@ void debugPoll()
dbgHidBuffer[61] = sdCard.capacity;
dbgHidBuffer[62] = FIRMWARE_VERSION >> 8;
dbgHidBuffer[63] = FIRMWARE_VERSION;
dbgHidBuffer[63] = FIRMWARE_VERSION & 0xFF;
USBFS_LoadInEP(USB_EP_DEBUG, (uint8 *)&dbgHidBuffer, sizeof(dbgHidBuffer));
usbDebugEpState = USB_DATA_SENT;

View File

@ -576,8 +576,14 @@ void scsiDiskPoll()
// Wait for the next DMA interrupt. It's beneficial to halt the
// processor to give the DMA controller more memory bandwidth to
// work with.
int scsiBusy = 1;
int sdBusy = 1;
int scsiBusy;
int sdBusy;
{
uint8_t intr = CyEnterCriticalSection();
scsiBusy = scsiDMABusy();
sdBusy = isSDDevice && sdDMABusy();
CyExitCriticalSection(intr);
}
while (scsiBusy && sdBusy && isSDDevice)
{
uint8_t intr = CyEnterCriticalSection();

View File

@ -47,7 +47,7 @@ static void spiFlash_erase(S2S_Device* dev, uint32_t sectorNumber, uint32_t coun
static void spiFlash_read(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
static void spiFlash_readAsync(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
static int spiFlash_readAsyncPoll(S2S_Device* dev);
static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer);
SpiFlash spiFlash = {
{
@ -298,7 +298,7 @@ static void spiFlash_erase(S2S_Device* dev, uint32_t sectorNumber, uint32_t coun
nNOR_CS_Write(1); // Deselect
}
static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer)
static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer)
{
// SpiFlash* spiFlash = (SpiFlash*)dev;

View File

@ -24,7 +24,7 @@
#include "time.h"
#include "trace.h"
const char* Notice = "Copyright (C) 2015-2018 Michael McMaster <michael@codesrc.com>";
const char* Notice = "Copyright (C) 2015-2021 Michael McMaster <michael@codesrc.com>";
int main()
{

View File

@ -309,11 +309,11 @@ doTxSingleDMA(const uint8* data, uint32 count)
}
void
scsiWriteDMA(const uint8* data, uint32 count)
scsiWriteDMA(const uint8_t* data, uint32 count)
{
dmaSentCount = 0;
dmaTotalCount = count;
dmaBuffer = data;
dmaBuffer = (uint8_t*) data;
uint32_t singleCount = (count > MAX_DMA_BYTES) ? MAX_DMA_BYTES : count;
doTxSingleDMA(data, singleCount);

View File

@ -38,7 +38,7 @@ static void sd_erase(S2S_Device* dev, uint32_t sectorNumber, uint32_t count);
static void sd_read(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
static void sd_readAsync(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
static int sd_readAsyncPoll(S2S_Device* dev);
static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer);
// Global
@ -1139,7 +1139,7 @@ static int sd_readAsyncPoll(S2S_Device* dev)
}
static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer)
static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer)
{
// TODO
}

View File

@ -80,7 +80,7 @@ struct S2S_DeviceStruct
void (*read)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
void (*readAsync)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
int (*readAsyncPoll)(S2S_Device* dev);
void (*write)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
void (*write)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer);
MEDIA_STATE mediaState;
CONFIG_STOREDEVICE deviceType;