--- a/src/eric7/MicroPython/Devices/CircuitPythonDevices.py Tue Mar 14 16:58:36 2023 +0100 +++ b/src/eric7/MicroPython/Devices/CircuitPythonDevices.py Wed Mar 15 12:07:57 2023 +0100 @@ -343,6 +343,9 @@ self.tr("Show CircuitPython Versions"), self.showCircuitPythonVersions ) self.__cpyMenu.addSeparator() + self.__bootloaderAct = self.__cpyMenu.addAction( + self.tr("Activate Bootloader"), self.__activateBootloader + ) self.__flashCpyAct = self.__cpyMenu.addMenu(self.__flashMenu) self.__cpyMenu.addSeparator() self.__cpyMenu.addMenu(self.__libraryMenu) @@ -405,6 +408,7 @@ self.__flashCpyAct.setEnabled(not linkConnected) self.__resetAct.setEnabled(connected) + self.__bootloaderAct.setEnabled(connected) menu.addMenu(self.__cpyMenu) @@ -464,6 +468,19 @@ dlg.exec() @pyqtSlot() + def __activateBootloader(self): + """ + Private slot to switch the board into 'bootloader' mode. + """ + if self.microPython.isConnected(): + self.microPython.deviceInterface().execute( + "import microcontroller as mc\n" + "mc.on_next_reset(mc.RunMode.BOOTLOADER)\n" + "mc.reset()\n", + mode=self._submitMode, + ) + + @pyqtSlot() def __showTeensyFlashInstructions(self): """ Private slot to show a message box because Teensy does not support @@ -1512,7 +1529,6 @@ os.remove(filename) return True, "" - # TODO: not implemented yet ################################################################## ## Methods below implement Bluetooth related methods