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:
timecop@gmail.com 2013-02-15 09:53:24 +00:00
parent 4c0fe94072
commit f5616f1437
4 changed files with 26 additions and 18 deletions

View File

@ -11,4 +11,4 @@ all:
-Wall
clean:
rm -f stmloader
rm -f stmloader; rm -rf stmloader.dSYM

View File

@ -35,10 +35,11 @@ serialStruct_t *s;
char port[256];
unsigned int baud;
unsigned char overrideParity;
unsigned char noSendR;
char firmFile[256];
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) {
@ -47,6 +48,7 @@ unsigned int loaderOptions(int argc, char **argv) {
strncpy(port, DEFAULT_PORT, sizeof(port));
baud = DEFAULT_BAUD;
overrideParity = 0;
noSendR = 0;
strncpy(firmFile, FIRMWARE_FILENAME, sizeof(firmFile));
/* options descriptor */
@ -55,7 +57,8 @@ unsigned int loaderOptions(int argc, char **argv) {
{ "port", required_argument, NULL, 'p' },
{ "baud", required_argument, NULL, 's' },
{ "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 }
};
@ -77,6 +80,9 @@ unsigned int loaderOptions(int argc, char **argv) {
case 'o':
overrideParity = 1;
break;
case 'n':
noSendR = 1;
break;
default:
loaderUsage();
return 0;
@ -109,7 +115,7 @@ int main(int argc, char **argv) {
}
else {
printf("Upgrading STM on port %s from %s...\n", port, firmFile);
stmLoader(s, fw, overrideParity);
stmLoader(s, fw, overrideParity, noSendR);
}
return 0;

View File

@ -175,7 +175,7 @@ char *stmHexLoader(serialStruct_t *s, FILE *fp) {
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;
unsigned char b1, b2, b3;
unsigned char i, n;
@ -185,6 +185,7 @@ void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity) {
if (!overrideParity)
serialEvenParity(s);
if(!noSendR) {
top:
printf("Sending R to place Baseflight in bootloader, press a key to continue");
serialFlush(s);
@ -192,6 +193,7 @@ void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity) {
serialWrite(s, &c, 1);
getchar();
printf("\n");
}
serialFlush(s);

View File

@ -22,6 +22,6 @@
#include <stdio.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