Trace installed
This commit is contained in:
+1
-1
@@ -48,7 +48,7 @@ void debugPrintf(const char * format, ...)
|
||||
static struct TraceElement traceBuffer[TRACE_BUFFER_LEN];
|
||||
static uint8_t traceBufferPos;
|
||||
extern Fifo<uint8_t, 512> serial2TxFifo;
|
||||
gtime_t filltm(gtime_t *t, struct gtm *tp);
|
||||
gtime_t filltm(const gtime_t *t, struct gtm *tp);
|
||||
|
||||
void trace_event(enum TraceEvent event, uint32_t data)
|
||||
{
|
||||
|
||||
+12
-3
@@ -101,8 +101,11 @@ enum TraceEvent {
|
||||
sd_disk_ioctl_MMC_GET_SDSTAT_1,
|
||||
sd_disk_ioctl_MMC_GET_SDSTAT_2,
|
||||
sd_spi_reset,
|
||||
sd_wait_read,
|
||||
sd_wait_write,
|
||||
sd_irq,
|
||||
|
||||
ff_f_write_validate = 30,
|
||||
ff_f_write_validate = 40,
|
||||
ff_f_write_flag,
|
||||
ff_f_write_clst,
|
||||
ff_f_write_sync_window,
|
||||
@@ -112,20 +115,26 @@ enum TraceEvent {
|
||||
ff_f_write_disk_read,
|
||||
ff_f_write_move_window,
|
||||
|
||||
audio_getNextFilledBuffer_skip = 50,
|
||||
audio_getNextFilledBuffer_skip = 60,
|
||||
};
|
||||
|
||||
struct TraceElement {
|
||||
gtime_t time;
|
||||
uint8_t time_ms;
|
||||
event_t event;
|
||||
enum TraceEvent event;
|
||||
uint32_t data;
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
void trace_event(enum TraceEvent event, uint32_t data);
|
||||
void trace_event_i(enum TraceEvent event, uint32_t data);
|
||||
const struct TraceElement * getTraceElement(uint16_t idx);
|
||||
void dumpTraceBuffer();
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#define TRACE_EVENT(condition, event, data) if (condition) { trace_event(event, data); }
|
||||
#define TRACEI_EVENT(condition, event, data) if (condition) { trace_event_i(event, data); }
|
||||
|
||||
@@ -217,8 +217,8 @@ bool menuStatsTraces(event_t event)
|
||||
lcdDrawNumber(STATS_TRACES_EVENT_POS, y, te->event, LEADING0|LEFT, 3);
|
||||
// data
|
||||
lcdDrawSizedText(STATS_TRACES_DATA_POS, y, "0x", 2);
|
||||
lcdDrawHexNumber(STATS_TRACES_DATA_POS + 20, y, (uint16_t)(te->data >> 16));
|
||||
lcdDrawHexNumber(STATS_TRACES_DATA_POS+ 60, y, (uint16_t)(te->data & 0xFFFF));
|
||||
lcdDrawHexNumber(lcdNextPos, y, (uint16_t)(te->data >> 16));
|
||||
lcdDrawHexNumber(lcdNextPos, y, (uint16_t)(te->data & 0xFFFF));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -161,6 +161,7 @@ void usbSerialPutc(uint8_t c)
|
||||
if (txDataLen >= APP_RX_DATA_SIZE) {
|
||||
txDataLen -= APP_RX_DATA_SIZE;
|
||||
}
|
||||
// TODO timeout exit
|
||||
} while (txDataLen >= (APP_RX_DATA_SIZE - CDC_DATA_MAX_PACKET_SIZE));
|
||||
|
||||
APP_Rx_Buffer[APP_Rx_ptr_in] = c;
|
||||
@@ -172,7 +173,7 @@ void usbSerialPutc(uint8_t c)
|
||||
}
|
||||
else {
|
||||
APP_Rx_ptr_in++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -207,9 +207,9 @@ typedef enum
|
||||
static uint32_t CardType = SDIO_STD_CAPACITY_SD_CARD_V1_1;
|
||||
static uint32_t CSD_Tab[4], CID_Tab[4], RCA = 0;
|
||||
// static uint8_t SDSTATUS_Tab[16];
|
||||
__IO uint32_t StopCondition = 0;
|
||||
__IO uint8_t StopCondition = 0;
|
||||
__IO SD_Error TransferError = SD_OK;
|
||||
__IO uint32_t TransferEnd = 0, DMAEndOfTransfer = 0;
|
||||
__IO uint8_t TransferEnd = 0, DMAEndOfTransfer = 0;
|
||||
SD_CardInfo SDCardInfo;
|
||||
|
||||
SDIO_InitTypeDef SDIO_InitStructure;
|
||||
@@ -225,7 +225,7 @@ static SD_Error CmdResp6Error(uint8_t cmd, uint16_t *prca);
|
||||
static SD_Error SDEnWideBus(FunctionalState NewState);
|
||||
// static SD_Error IsCardProgramming(uint8_t *pstatus);
|
||||
static SD_Error FindSCR(uint16_t rca, uint32_t *pscr);
|
||||
uint8_t convert_from_bytes_to_power_of_two(uint16_t NumberOfBytes);
|
||||
// uint8_t convert_from_bytes_to_power_of_two(uint16_t NumberOfBytes);
|
||||
|
||||
SD_Error SD_PowerON(void);
|
||||
SDCardState SD_GetState(void);
|
||||
@@ -1265,7 +1265,7 @@ OPTIMIZE("O0") SD_Error SD_ReadBlock(uint8_t *readbuff, uint32_t ReadAddr, uint1
|
||||
|
||||
SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
|
||||
SDIO_DataInitStructure.SDIO_DataLength = BlockSize;
|
||||
SDIO_DataInitStructure.SDIO_DataBlockSize = (uint32_t) 9 << 4;
|
||||
SDIO_DataInitStructure.SDIO_DataBlockSize = SDIO_DataBlockSize_512b;
|
||||
SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToSDIO;
|
||||
SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
|
||||
SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable;
|
||||
@@ -1338,9 +1338,9 @@ OPTIMIZE("O0") SD_Error SD_ReadMultiBlocks(uint8_t *readbuff, uint32_t ReadAddr,
|
||||
return(errorstatus);
|
||||
}
|
||||
|
||||
SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
|
||||
SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT; // TODO consider setting shorter timeout
|
||||
SDIO_DataInitStructure.SDIO_DataLength = NumberOfBlocks * BlockSize;
|
||||
SDIO_DataInitStructure.SDIO_DataBlockSize = (uint32_t) 9 << 4;
|
||||
SDIO_DataInitStructure.SDIO_DataBlockSize = SDIO_DataBlockSize_512b;
|
||||
SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToSDIO;
|
||||
SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
|
||||
SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable;
|
||||
@@ -1379,12 +1379,13 @@ OPTIMIZE("O0") SD_Error SD_WaitReadOperation(void)
|
||||
|
||||
timeout = SD_DATATIMEOUT;
|
||||
|
||||
while ((DMAEndOfTransfer == 0x00) && (TransferEnd == 0) && (TransferError == SD_OK) && (timeout > 0))
|
||||
while (!DMAEndOfTransfer && !TransferEnd && (TransferError == SD_OK) && (timeout > 0))
|
||||
{
|
||||
timeout--;
|
||||
}
|
||||
TRACE_SD_CARD_EVENT((timeout == 0), sd_wait_read, (TransferError << 8) + (DMAEndOfTransfer << 1) + TransferEnd);
|
||||
|
||||
DMAEndOfTransfer = 0x00;
|
||||
DMAEndOfTransfer = 0;
|
||||
|
||||
timeout = SD_DATATIMEOUT;
|
||||
|
||||
@@ -1392,6 +1393,7 @@ OPTIMIZE("O0") SD_Error SD_WaitReadOperation(void)
|
||||
{
|
||||
timeout--;
|
||||
}
|
||||
TRACE_SD_CARD_EVENT((timeout == 0), sd_wait_read, -1);
|
||||
|
||||
if (StopCondition == 1)
|
||||
{
|
||||
@@ -1482,7 +1484,7 @@ OPTIMIZE("O0") SD_Error SD_WriteBlock(uint8_t *writebuff, uint32_t WriteAddr, ui
|
||||
|
||||
SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
|
||||
SDIO_DataInitStructure.SDIO_DataLength = BlockSize;
|
||||
SDIO_DataInitStructure.SDIO_DataBlockSize = (uint32_t) 9 << 4;
|
||||
SDIO_DataInitStructure.SDIO_DataBlockSize = SDIO_DataBlockSize_512b;
|
||||
SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToCard;
|
||||
SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
|
||||
SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable;
|
||||
@@ -1590,7 +1592,7 @@ OPTIMIZE("O0") SD_Error SD_WriteMultiBlocks(uint8_t *writebuff, uint32_t WriteAd
|
||||
|
||||
SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
|
||||
SDIO_DataInitStructure.SDIO_DataLength = NumberOfBlocks * BlockSize;
|
||||
SDIO_DataInitStructure.SDIO_DataBlockSize = (uint32_t) 9 << 4;
|
||||
SDIO_DataInitStructure.SDIO_DataBlockSize = SDIO_DataBlockSize_512b;
|
||||
SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToCard;
|
||||
SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
|
||||
SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable;
|
||||
@@ -1615,12 +1617,13 @@ OPTIMIZE("O0") SD_Error SD_WaitWriteOperation(void)
|
||||
|
||||
timeout = SD_DATATIMEOUT;
|
||||
|
||||
while ((DMAEndOfTransfer == 0x00) && (TransferEnd == 0) && (TransferError == SD_OK) && (timeout > 0))
|
||||
while (!DMAEndOfTransfer && !TransferEnd && (TransferError == SD_OK) && (timeout > 0))
|
||||
{
|
||||
timeout--;
|
||||
}
|
||||
TRACE_SD_CARD_EVENT((timeout == 0), sd_wait_write, (TransferError << 8) + (DMAEndOfTransfer << 1) + TransferEnd);
|
||||
|
||||
DMAEndOfTransfer = 0x00;
|
||||
DMAEndOfTransfer = 0;
|
||||
|
||||
timeout = SD_DATATIMEOUT;
|
||||
|
||||
@@ -1628,6 +1631,7 @@ OPTIMIZE("O0") SD_Error SD_WaitWriteOperation(void)
|
||||
{
|
||||
timeout--;
|
||||
}
|
||||
TRACE_SD_CARD_EVENT((timeout == 0), sd_wait_write, -1);
|
||||
|
||||
if (StopCondition == 1)
|
||||
{
|
||||
@@ -1998,7 +2002,7 @@ OPTIMIZE("O0") void SD_ProcessDMAIRQ(void)
|
||||
{
|
||||
if(DMA2->LISR & SD_SDIO_DMA_FLAG_TCIF)
|
||||
{
|
||||
DMAEndOfTransfer = 0x01;
|
||||
DMAEndOfTransfer = 1;
|
||||
DMA_ClearFlag(SD_SDIO_DMA_STREAM, SD_SDIO_DMA_FLAG_TCIF|SD_SDIO_DMA_FLAG_FEIF);
|
||||
}
|
||||
}
|
||||
@@ -2737,22 +2741,23 @@ OPTIMIZE("O0") static SD_Error FindSCR(uint16_t rca, uint32_t *pscr)
|
||||
* @param NumberOfBytes: number of bytes.
|
||||
* @retval None
|
||||
*/
|
||||
OPTIMIZE("O0") uint8_t convert_from_bytes_to_power_of_two(uint16_t NumberOfBytes)
|
||||
{
|
||||
uint8_t count = 0;
|
||||
// OPTIMIZE("O0") uint8_t convert_from_bytes_to_power_of_two(uint16_t NumberOfBytes)
|
||||
// {
|
||||
// uint8_t count = 0;
|
||||
|
||||
while (NumberOfBytes != 1)
|
||||
{
|
||||
NumberOfBytes >>= 1;
|
||||
count++;
|
||||
}
|
||||
return(count);
|
||||
}
|
||||
// while (NumberOfBytes != 1)
|
||||
// {
|
||||
// NumberOfBytes >>= 1;
|
||||
// count++;
|
||||
// }
|
||||
// return(count);
|
||||
// }
|
||||
|
||||
void SDIO_IRQHandler(void)
|
||||
{
|
||||
DEBUG_INTERRUPT(INT_SDIO);
|
||||
SD_ProcessIRQ();
|
||||
SD_Error err = SD_ProcessIRQ();
|
||||
TRACE_SD_CARD_EVENT((err != SD_OK), sd_irq, err);
|
||||
}
|
||||
|
||||
void SD_SDIO_DMA_IRQHANDLER(void)
|
||||
|
||||
Reference in New Issue
Block a user