Эх сурвалжийг харах

src: Add CYW43_RESOURCE_VERIFY_DOWNLOAD option to enable verification.

So this can be controlled by the port.

Signed-off-by: Damien George <dpgeorge@georgerobotics.com.au>
Damien George 2 жил өмнө
parent
commit
84b4569178

+ 5 - 0
src/cyw43_config.h

@@ -83,6 +83,11 @@
 #define CYW43_RESOURCE_ATTRIBUTE __attribute__((aligned(4)))
 #endif
 
+// Whether the download of resources should be verified.
+#ifndef CYW43_RESOURCE_VERIFY_DOWNLOAD
+#define CYW43_RESOURCE_VERIFY_DOWNLOAD (0)
+#endif
+
 // Timing and timeout configuration.
 
 #ifndef CYW43_IOCTL_TIMEOUT_US

+ 17 - 6
src/cyw43_ll.c

@@ -69,7 +69,6 @@ extern bool enable_spi_packet_dumping;
 #include CYW43_CHIPSET_FIRMWARE_INCLUDE_FILE
 
 #define CYW43_CLM_ADDR (fw_data + ALIGN_UINT(CYW43_WIFI_FW_LEN, 512))
-#define VERIFY_FIRMWARE_DOWNLOAD (0)
 
 #define ALIGN_UINT(val, align) (((val) + (align) - 1) & ~((align) - 1))
 
@@ -94,10 +93,13 @@ static inline void cyw43_put_le32(uint8_t *buf, uint32_t x) {
     buf[3] = x >> 24;
 }
 
-#if VERIFY_FIRMWARE_DOWNLOAD
+#if CYW43_RESOURCE_VERIFY_DOWNLOAD
 static void cyw43_xxd(size_t len, const uint8_t *buf) {
     for (int i = 0; i < len; ++i) {
         CYW43_PRINTF(" %02x", buf[i]);
+        if (i % 32 == 31) {
+            CYW43_PRINTF("\n");
+        }
     }
     CYW43_PRINTF("\n");
 }
@@ -391,7 +393,7 @@ static int cyw43_download_resource(cyw43_int_t *self, uint32_t addr, size_t raw_
         CYW43_DEBUG("%s\n", &b[fw_end - 3 - found]);
     }
 
-    #if VERIFY_FIRMWARE_DOWNLOAD
+    #if CYW43_VERBOSE_DEBUG
     uint32_t t_start = cyw43_hal_ticks_us();
     #endif
 
@@ -417,17 +419,22 @@ static int cyw43_download_resource(cyw43_int_t *self, uint32_t addr, size_t raw_
         }
     }
 
-    #if VERIFY_FIRMWARE_DOWNLOAD
+    #if CYW43_VERBOSE_DEBUG
     uint32_t t_end = cyw43_hal_ticks_us();
     uint32_t dt = t_end - t_start;
     CYW43_VDEBUG("done dnload; dt = %u us; speed = %u kbytes/sec\n", (unsigned int)dt, (unsigned int)(len * 1000 / dt));
     #endif
 
-    #if VERIFY_FIRMWARE_DOWNLOAD
+    #if CYW43_RESOURCE_VERIFY_DOWNLOAD
+
     // Verification of 380k takes about 40ms using a 512-byte transfer size
     const size_t verify_block_size = CYW43_BUS_MAX_BLOCK_SIZE;
     uint8_t buf[verify_block_size];
+
+    #if CYW43_VERBOSE_DEBUG
     t_start = cyw43_hal_ticks_us();
+    #endif
+
     for (size_t offset = 0; offset < len; offset += verify_block_size) {
         size_t sz = verify_block_size;
         if (offset + sz > len) {
@@ -445,11 +452,15 @@ static int cyw43_download_resource(cyw43_int_t *self, uint32_t addr, size_t raw_
             return CYW43_FAIL_FAST_CHECK(-CYW43_EIO);
         }
     }
+
+    #if CYW43_VERBOSE_DEBUG
     t_end = cyw43_hal_ticks_us();
     dt = t_end - t_start;
-    CYW43_DEBUG("done verify; dt = %u us; speed = %u kbytes/sec\n", (unsigned int)dt, (unsigned int)(len * 1000 / dt));
+    CYW43_VDEBUG("done verify; dt = %u us; speed = %u kbytes/sec\n", (unsigned int)dt, (unsigned int)(len * 1000 / dt));
     #endif
 
+    #endif // CYW43_RESOURCE_VERIFY_DOWNLOAD
+
     return 0;
 }
 

+ 2 - 0
tests/debug_print/test.exp

@@ -93,10 +93,12 @@ cyw43_sdio_transfer(cmd=52, arg=92001603)
 cyw43_sdio_transfer(cmd=52, arg=92001400)
 cyw43_sdio_transfer_cmd53(write=1, block_size=64, arg=9c000100, len=16384)
 cyw43_sdio_transfer_cmd53(write=1, block_size=64, arg=9c8000b0, len=11264)
+done dnload; dt = 1 us; speed = 224256000 kbytes/sec
 writing 768 bytes to 0x7fcfc
 cyw43_sdio_transfer(cmd=52, arg=92001607)
 cyw43_sdio_transfer(cmd=52, arg=92001480)
 cyw43_sdio_transfer_cmd53(write=1, block_size=64, arg=9cf9f80c, len=768)
+done dnload; dt = 1 us; speed = 768000 kbytes/sec
 cyw43_sdio_transfer_cmd53(write=1, block_size=4, arg=95fff804, len=4)
 cyw43_sdio_transfer(cmd=52, arg=92001818)
 cyw43_sdio_transfer(cmd=52, arg=92001600)