aboutsummaryrefslogtreecommitdiff
path: root/upgrade/main.c
diff options
context:
space:
mode:
authorGareth McMullin2012-03-18 15:15:00 +1300
committerGareth McMullin2012-03-18 15:15:00 +1300
commit87c14c294b984658ce3969494579b38fea42d1c3 (patch)
treef21815c0d6dfa52e0fe30987567e5d0e6d9729e4 /upgrade/main.c
parenta43cbf65c96d256c600e1a3dc0428fef343e51d6 (diff)
Fixed some issues in Windows DFU uploader.
Diffstat (limited to 'upgrade/main.c')
-rw-r--r--upgrade/main.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/upgrade/main.c b/upgrade/main.c
index bdb1b6b..651c753 100644
--- a/upgrade/main.c
+++ b/upgrade/main.c
@@ -21,6 +21,8 @@
#include <usb.h>
#include <string.h>
+#include <assert.h>
+
#include "dfu.h"
#include "stm32mem.h"
#include "bindata.h"
@@ -66,7 +68,7 @@ struct usb_device * find_dev(void)
if((dev->descriptor.idProduct == 0x5740) &&
!strcmp(man, "Black Sphere Technologies") &&
- !strcmp(prod, "Black Magic Probe"))
+ !strcmp(prod, "Black Magic Firmware Upgrade"))
return dev;
if((dev->descriptor.idProduct == 0xDF11) &&
@@ -98,7 +100,8 @@ usb_dev_handle * get_dfu_interface(struct usb_device *dev, uint16_t *interface)
//usb_set_configuration(handle, i);
usb_claim_interface(handle, j);
//usb_set_altinterface(handle, k);
- *interface = j;
+ //*interface = j;
+ *interface = iface->bInterfaceNumber;
return handle;
}
}
@@ -122,6 +125,9 @@ int main(void)
retry:
if(!(dev = find_dev()) || !(handle = get_dfu_interface(dev, &iface))) {
puts("FATAL: No compatible device found!\n");
+#ifdef WIN32
+ system("pause");
+#endif
return -1;
}
@@ -132,9 +138,9 @@ retry:
usb_release_interface(handle, iface);
usb_close(handle);
#ifdef WIN32
- Sleep(3000);
+ Sleep(5000);
#else
- sleep(1);
+ sleep(5);
#endif
goto retry;
}
@@ -145,7 +151,7 @@ retry:
for(offset = 0; offset < bindatalen; offset += 1024) {
printf("Progress: %d%%\r", (offset*100)/bindatalen);
fflush(stdout);
- stm32_mem_erase(handle, iface, LOAD_ADDRESS + offset);
+ assert(stm32_mem_erase(handle, iface, LOAD_ADDRESS + offset) == 0);
stm32_mem_write(handle, iface, (void*)&bindata[offset], 1024);
}
stm32_mem_manifest(handle, iface);
@@ -155,6 +161,10 @@ retry:
puts("All operations complete!\n");
+#ifdef WIN32
+ system("pause");
+#endif
+
return 0;
}