Răsfoiți Sursa

Fix for writes with sector sizes larger than 512 bytes

Michael McMaster 4 ani în urmă
părinte
comite
67bcf767d8

+ 4 - 0
lib/SCSI2SD/CHANGELOG

@@ -1,3 +1,7 @@
+?               6.4.13
+    - Fix SCSI writes with sector sizes larger than 512.
+
+
 20210810        6.4.12
     - Fix USB disconnect issue when no SD card is installed.
 

+ 1 - 1
lib/SCSI2SD/src/firmware/config.c

@@ -36,7 +36,7 @@
 
 #include <string.h>
 
-static const uint16_t FIRMWARE_VERSION = 0x064C;
+static const uint16_t FIRMWARE_VERSION = 0x064D;
 
 // Optional static config
 extern uint8_t* __fixed_config;

+ 12 - 2
lib/SCSI2SD/src/firmware/disk.c

@@ -893,11 +893,21 @@ void scsiDiskPoll()
                 // use sg_dd from sg_utils3 tools to test.
 
                 uint32_t rem = totalSDSectors - i;
-                uint32_t sectors = rem < maxSectors ? rem : maxSectors;
+                uint32_t sectors;
+                if (rem <= maxSectors)
+                {
+                    sectors = rem;
+                }
+                else
+                {
+                    sectors = maxSectors;
+                    while (sectors % sdPerScsi) sectors--;
+                }
+                
 
                 if (useSlowDataCount)
                 {
-                    scsiSetDataCount(sectors * bytesPerSector);
+                    scsiSetDataCount((sectors / sdPerScsi) * bytesPerSector);
                 }
 
                 for (int scsiSector = i; scsiSector < i + sectors; ++scsiSector)