add -n parameter to stmloader to prevent sending reboot sequence in case STM32 was already in bootloader mode (by fiendie)
git-svn-id: https://afrodevices.googlecode.com/svn/trunk/baseflight@266 7c89a4a9-59b9-e629-4cfe-3a2d53b20e61
This commit is contained in:
parent
4c0fe94072
commit
f5616f1437
|
@ -11,4 +11,4 @@ all:
|
||||||
-Wall
|
-Wall
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f stmloader
|
rm -f stmloader; rm -rf stmloader.dSYM
|
||||||
|
|
|
@ -35,10 +35,11 @@ serialStruct_t *s;
|
||||||
char port[256];
|
char port[256];
|
||||||
unsigned int baud;
|
unsigned int baud;
|
||||||
unsigned char overrideParity;
|
unsigned char overrideParity;
|
||||||
|
unsigned char noSendR;
|
||||||
char firmFile[256];
|
char firmFile[256];
|
||||||
|
|
||||||
void loaderUsage(void) {
|
void loaderUsage(void) {
|
||||||
fprintf(stderr, "usage: loader <-h> <-p device_file> <-b baud_rate> <-f firmware_file> <-o>\n");
|
fprintf(stderr, "usage: loader <-h> <-p device_file> <-b baud_rate> <-f firmware_file> <-o> <-n>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int loaderOptions(int argc, char **argv) {
|
unsigned int loaderOptions(int argc, char **argv) {
|
||||||
|
@ -47,6 +48,7 @@ unsigned int loaderOptions(int argc, char **argv) {
|
||||||
strncpy(port, DEFAULT_PORT, sizeof(port));
|
strncpy(port, DEFAULT_PORT, sizeof(port));
|
||||||
baud = DEFAULT_BAUD;
|
baud = DEFAULT_BAUD;
|
||||||
overrideParity = 0;
|
overrideParity = 0;
|
||||||
|
noSendR = 0;
|
||||||
strncpy(firmFile, FIRMWARE_FILENAME, sizeof(firmFile));
|
strncpy(firmFile, FIRMWARE_FILENAME, sizeof(firmFile));
|
||||||
|
|
||||||
/* options descriptor */
|
/* options descriptor */
|
||||||
|
@ -55,7 +57,8 @@ unsigned int loaderOptions(int argc, char **argv) {
|
||||||
{ "port", required_argument, NULL, 'p' },
|
{ "port", required_argument, NULL, 'p' },
|
||||||
{ "baud", required_argument, NULL, 's' },
|
{ "baud", required_argument, NULL, 's' },
|
||||||
{ "firm_file", required_argument, NULL, 'f' },
|
{ "firm_file", required_argument, NULL, 'f' },
|
||||||
{ "overide_party",no_argument, NULL, 'o' },
|
{ "override_parity", no_argument, NULL, 'o' },
|
||||||
|
{ "no_send_r", no_argument, NULL, 'n' },
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -77,6 +80,9 @@ unsigned int loaderOptions(int argc, char **argv) {
|
||||||
case 'o':
|
case 'o':
|
||||||
overrideParity = 1;
|
overrideParity = 1;
|
||||||
break;
|
break;
|
||||||
|
case 'n':
|
||||||
|
noSendR = 1;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
loaderUsage();
|
loaderUsage();
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -109,7 +115,7 @@ int main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
printf("Upgrading STM on port %s from %s...\n", port, firmFile);
|
printf("Upgrading STM on port %s from %s...\n", port, firmFile);
|
||||||
stmLoader(s, fw, overrideParity);
|
stmLoader(s, fw, overrideParity, noSendR);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -175,7 +175,7 @@ char *stmHexLoader(serialStruct_t *s, FILE *fp) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity) {
|
void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity, unsigned char noSendR) {
|
||||||
char c;
|
char c;
|
||||||
unsigned char b1, b2, b3;
|
unsigned char b1, b2, b3;
|
||||||
unsigned char i, n;
|
unsigned char i, n;
|
||||||
|
@ -185,6 +185,7 @@ void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity) {
|
||||||
if (!overrideParity)
|
if (!overrideParity)
|
||||||
serialEvenParity(s);
|
serialEvenParity(s);
|
||||||
|
|
||||||
|
if(!noSendR) {
|
||||||
top:
|
top:
|
||||||
printf("Sending R to place Baseflight in bootloader, press a key to continue");
|
printf("Sending R to place Baseflight in bootloader, press a key to continue");
|
||||||
serialFlush(s);
|
serialFlush(s);
|
||||||
|
@ -192,6 +193,7 @@ void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity) {
|
||||||
serialWrite(s, &c, 1);
|
serialWrite(s, &c, 1);
|
||||||
getchar();
|
getchar();
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
serialFlush(s);
|
serialFlush(s);
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,6 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
|
|
||||||
extern void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity);
|
extern void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity, unsigned char noSendR);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue