The bulk of implementation in the current DFU arch is done in the ISR. This works well when the Flash device is memory mapped as these writes get done comparatively quickly. However, in case of platforms where the flash device is sitting on the SPI Bus, this was observed to cause an exception. This exception may be because there are multiple function calls consuming larger processing time inside the ISR. The ISR stack may also end up going deeper and risk stack corruption on devices with low RAM. To resolve this, we deferred flash write to a worker thread. Also, some handshaking was added to have synchronization with the host in accordance with the Host-Device DFU protocol. Signed-off-by: Savinay Dharmappa <savinay.dharmappa@intel.com> |
||
|---|---|---|
| .. | ||
| hid | ||
| netusb | ||
| bluetooth.c | ||
| cdc_acm.c | ||
| CMakeLists.txt | ||
| Kconfig | ||
| loopback.c | ||
| mass_storage.c | ||
| usb_dfu.c | ||