Преглед изворни кода

Fixes RP2040 buffer reallocation overrun problem (#642)

Fix running out of memory on a device that repeatedly closes and opens an endpoint. This is a workaround at the moment. A better solution would be to implement reclaiming usb buffer memory when closing an endpoint (i.e. implement dcd_edpt_close).
ndinsmore пре 5 година
родитељ
комит
09868434cd
1 измењених фајлова са 6 додато и 2 уклоњено
  1. 6 2
      src/portable/raspberrypi/rp2040/dcd_rp2040.c

+ 6 - 2
src/portable/raspberrypi/rp2040/dcd_rp2040.c

@@ -164,8 +164,12 @@ static void _hw_endpoint_init(struct hw_endpoint *ep, uint8_t ep_addr, uint wMax
             ep->endpoint_control = &usb_dpram->ep_ctrl[num-1].out;
         }
 
-        // Now alloc a buffer and fill in endpoint control register
-        _hw_endpoint_alloc(ep);
+        // Now if it hasn't already been done
+        //alloc a buffer and fill in endpoint control register
+        if(!(ep->configured))
+        {
+            _hw_endpoint_alloc(ep);
+        }
     }
 
     ep->configured = true;