From: Michael McMaster Date: Tue, 16 Feb 2021 13:26:27 +0000 (+1000) Subject: Timer fixes X-Git-Tag: v6.4.0~6^2~5 X-Git-Url: http://git.codesrc.com/gitweb.cgi?a=commitdiff_plain;h=fcdc4e0a085e76eb019e645466324daacecbd523;p=SCSI2SD-V6.git Timer fixes --- diff --git a/src/firmware/main.c b/src/firmware/main.c index e42bb183..087e9531 100755 --- a/src/firmware/main.c +++ b/src/firmware/main.c @@ -114,6 +114,7 @@ void mainLoop() sdPoll(); #endif + // TODO test if USB transfer is in progress if (unlikely(scsiDev.phase == BUS_FREE)) { if (unlikely(s2s_elapsedTime_ms(lastSDPoll) > 200)) diff --git a/src/firmware/time.h b/src/firmware/time.h index 1926b2ee..9a7dccde 100755 --- a/src/firmware/time.h +++ b/src/firmware/time.h @@ -24,7 +24,13 @@ uint32_t s2s_getTime_ms(void); // Returns milliseconds since init uint32_t s2s_diffTime_ms(uint32_t start, uint32_t end); uint32_t s2s_elapsedTime_ms(uint32_t since); +#ifdef STM32F2xx #define s2s_cpu_freq 108000000LL +#endif +#ifdef STM32F4xx +#define s2s_cpu_freq 180000000LL +#endif + #define s2s_delay_ms(delay) s2s_delay_clocks((delay) * (s2s_cpu_freq / 1000)) #define s2s_delay_us(delay) s2s_delay_clocks((delay) * (s2s_cpu_freq / 1000000)) void s2s_delay_clocks(uint32_t delay); diff --git a/src/firmware/usb_device/usbd_msc_scsi.c b/src/firmware/usb_device/usbd_msc_scsi.c index 16ed8352..63ddca6d 100755 --- a/src/firmware/usb_device/usbd_msc_scsi.c +++ b/src/firmware/usb_device/usbd_msc_scsi.c @@ -491,13 +491,13 @@ static int8_t SCSI_Read10(USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *para return -1; } - hmsc->scsi_blk_addr = (params[2] << 24) | \ - (params[3] << 16) | \ - (params[4] << 8) | \ - params[5]; + hmsc->scsi_blk_addr = ((uint32_t)params[2] << 24) | \ + ((uint32_t)params[3] << 16) | \ + ((uint32_t)params[4] << 8) | \ + (uint32_t)params[5]; - hmsc->scsi_blk_len = (params[7] << 8) | \ - params[8]; + hmsc->scsi_blk_len = ((uint32_t)params[7] << 8) | \ + (uint32_t)params[8]; @@ -573,12 +573,12 @@ static int8_t SCSI_Write10 (USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *pa } - hmsc->scsi_blk_addr = (params[2] << 24) | \ - (params[3] << 16) | \ - (params[4] << 8) | \ - params[5]; - hmsc->scsi_blk_len = (params[7] << 8) | \ - params[8]; + hmsc->scsi_blk_addr = ((uint32_t)params[2] << 24) | \ + ((uint32_t)params[3] << 16) | \ + ((uint32_t)params[4] << 8) | \ + (uint32_t)params[5]; + hmsc->scsi_blk_len = ((uint32_t)params[7] << 8) | \ + (uint32_t)params[8]; /* check if LBA address is in the right range */ if(SCSI_CheckAddressRange(pdev,