mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Add System Reset Command
* Add sys reset to USBDBG and IDE
This commit is contained in:
parent
6c7ad99152
commit
8467c67f06
@ -12,6 +12,7 @@
|
|||||||
#include "framebuffer.h"
|
#include "framebuffer.h"
|
||||||
#include "ff.h"
|
#include "ff.h"
|
||||||
#include "py/py_file.h"
|
#include "py/py_file.h"
|
||||||
|
#include "core_cm4.h"
|
||||||
#include "usbdbg.h"
|
#include "usbdbg.h"
|
||||||
|
|
||||||
#define USB_TX_BUF_SIZE (64)
|
#define USB_TX_BUF_SIZE (64)
|
||||||
@ -185,6 +186,10 @@ void usbdbg_control(void *buffer, uint8_t request, uint16_t length)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case USBDBG_SYS_RESET:
|
||||||
|
NVIC_SystemReset();
|
||||||
|
break;
|
||||||
|
|
||||||
default: /* error */
|
default: /* error */
|
||||||
cmd = USBDBG_NONE;
|
cmd = USBDBG_NONE;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -21,6 +21,7 @@ enum usbdbg_cmd {
|
|||||||
USBDBG_DESCRIPTOR_SAVE,
|
USBDBG_DESCRIPTOR_SAVE,
|
||||||
USBDBG_ATTR_READ,
|
USBDBG_ATTR_READ,
|
||||||
USBDBG_ATTR_WRITE,
|
USBDBG_ATTR_WRITE,
|
||||||
|
USBDBG_SYS_RESET,
|
||||||
};
|
};
|
||||||
void usbdbg_init();
|
void usbdbg_init();
|
||||||
int usbdbg_script_ready();
|
int usbdbg_script_ready();
|
||||||
|
|||||||
@ -452,6 +452,21 @@
|
|||||||
<property name="homogeneous">True</property>
|
<property name="homogeneous">True</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToolButton" id="reset_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="use_action_appearance">False</property>
|
||||||
|
<property name="label" translatable="yes">toolbutton5</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="stock_id">gtk-quit</property>
|
||||||
|
<signal name="clicked" handler="on_reset_clicked" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkSeparatorToolItem" id="separator1">
|
<object class="GtkSeparatorToolItem" id="separator1">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
@ -523,20 +538,6 @@
|
|||||||
<property name="homogeneous">True</property>
|
<property name="homogeneous">True</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
|
||||||
<object class="GtkToolButton" id="toolbutton6">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="use_action_appearance">False</property>
|
|
||||||
<property name="label" translatable="yes">toolbutton5</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="stock_id">gtk-apply</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkSeparatorToolItem" id="separator3">
|
<object class="GtkSeparatorToolItem" id="separator3">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
|||||||
@ -88,6 +88,7 @@ class OMVGtk:
|
|||||||
signals = {
|
signals = {
|
||||||
"on_top_window_destroy" : self.quit,
|
"on_top_window_destroy" : self.quit,
|
||||||
"on_connect_clicked" : self.connect_clicked,
|
"on_connect_clicked" : self.connect_clicked,
|
||||||
|
"on_reset_clicked" : self.reset_clicked,
|
||||||
"on_execute_clicked" : self.execute_clicked,
|
"on_execute_clicked" : self.execute_clicked,
|
||||||
"on_stop_clicked" : self.stop_clicked,
|
"on_stop_clicked" : self.stop_clicked,
|
||||||
"on_motion_notify" : self.motion_notify,
|
"on_motion_notify" : self.motion_notify,
|
||||||
@ -108,6 +109,7 @@ class OMVGtk:
|
|||||||
|
|
||||||
self.connected = False
|
self.connected = False
|
||||||
self.builder.get_object('connect_button').set_sensitive(True)
|
self.builder.get_object('connect_button').set_sensitive(True)
|
||||||
|
self.builder.get_object('reset_button').set_sensitive(False)
|
||||||
self.builder.get_object('exec_button').set_sensitive(False)
|
self.builder.get_object('exec_button').set_sensitive(False)
|
||||||
self.builder.get_object('stop_button').set_sensitive(False)
|
self.builder.get_object('stop_button').set_sensitive(False)
|
||||||
self.builder.get_object('zoomin_button').set_sensitive(False)
|
self.builder.get_object('zoomin_button').set_sensitive(False)
|
||||||
@ -147,6 +149,7 @@ class OMVGtk:
|
|||||||
|
|
||||||
self.connected = True
|
self.connected = True
|
||||||
self.builder.get_object('connect_button').set_sensitive(False)
|
self.builder.get_object('connect_button').set_sensitive(False)
|
||||||
|
self.builder.get_object('reset_button').set_sensitive(True)
|
||||||
self.builder.get_object('exec_button').set_sensitive(True)
|
self.builder.get_object('exec_button').set_sensitive(True)
|
||||||
self.builder.get_object('stop_button').set_sensitive(True)
|
self.builder.get_object('stop_button').set_sensitive(True)
|
||||||
self.builder.get_object('zoomin_button').set_sensitive(True)
|
self.builder.get_object('zoomin_button').set_sensitive(True)
|
||||||
@ -176,6 +179,7 @@ class OMVGtk:
|
|||||||
|
|
||||||
self.connected = False
|
self.connected = False
|
||||||
self.builder.get_object('connect_button').set_sensitive(True)
|
self.builder.get_object('connect_button').set_sensitive(True)
|
||||||
|
self.builder.get_object('reset_button').set_sensitive(False)
|
||||||
self.builder.get_object('exec_button').set_sensitive(False)
|
self.builder.get_object('exec_button').set_sensitive(False)
|
||||||
self.builder.get_object('stop_button').set_sensitive(False)
|
self.builder.get_object('stop_button').set_sensitive(False)
|
||||||
self.builder.get_object('zoomin_button').set_sensitive(False)
|
self.builder.get_object('zoomin_button').set_sensitive(False)
|
||||||
@ -187,6 +191,10 @@ class OMVGtk:
|
|||||||
def connect_clicked(self, widget):
|
def connect_clicked(self, widget):
|
||||||
self.connect()
|
self.connect()
|
||||||
|
|
||||||
|
def reset_clicked(self, widget):
|
||||||
|
if (self.connected):
|
||||||
|
openmv.reset()
|
||||||
|
|
||||||
def execute_clicked(self, widget):
|
def execute_clicked(self, widget):
|
||||||
buf = self.buffer.get_text(self.buffer.get_start_iter(), self.buffer.get_end_iter())
|
buf = self.buffer.get_text(self.buffer.get_start_iter(), self.buffer.get_end_iter())
|
||||||
# interrupt any running code
|
# interrupt any running code
|
||||||
|
|||||||
@ -33,6 +33,7 @@ __USBDBG_TEMPLATE_SAVE=8
|
|||||||
__USBDBG_DESCRIPTOR_SAVE=9
|
__USBDBG_DESCRIPTOR_SAVE=9
|
||||||
__USBDBG_ATTR_READ=10
|
__USBDBG_ATTR_READ=10
|
||||||
__USBDBG_ATTR_WRITE=11
|
__USBDBG_ATTR_WRITE=11
|
||||||
|
__USBDBG_SYS_RESET=12
|
||||||
|
|
||||||
ATTR_CONTRAST=0
|
ATTR_CONTRAST=0
|
||||||
ATTR_BRIGHTNESS=1
|
ATTR_BRIGHTNESS=1
|
||||||
@ -152,6 +153,13 @@ def set_attr(attr, value):
|
|||||||
def get_attr(attr):
|
def get_attr(attr):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
def reset():
|
||||||
|
try:
|
||||||
|
# This will timeout.
|
||||||
|
__dev.ctrl_transfer(0x41, __USBDBG_SYS_RESET, 0, __INTERFACE, None, __TIMEOUT)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv)!= 2:
|
if len(sys.argv)!= 2:
|
||||||
print 'usage: openmv.py <script>'
|
print 'usage: openmv.py <script>'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user