diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2014-02-09 16:04:32 +0100 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2014-02-09 16:04:32 +0100 |
commit | 773f70a9df376745523bf78f29d6747c8878c01d (patch) | |
tree | f63d9f6c2d4bb3bb3018b230ae9f42f89ff85c7a /src/drivers/px4io/px4io_uploader.cpp | |
parent | ac326beaaae7b38d65ad6d7d13f00dfeaa6ae520 (diff) | |
parent | f52f15c7914983ea1569e584e516d53d21cdde56 (diff) | |
download | px4-firmware-773f70a9df376745523bf78f29d6747c8878c01d.tar.gz px4-firmware-773f70a9df376745523bf78f29d6747c8878c01d.tar.bz2 px4-firmware-773f70a9df376745523bf78f29d6747c8878c01d.zip |
Merged origin/master into pubsub_cleanup
Diffstat (limited to 'src/drivers/px4io/px4io_uploader.cpp')
-rw-r--r-- | src/drivers/px4io/px4io_uploader.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/drivers/px4io/px4io_uploader.cpp b/src/drivers/px4io/px4io_uploader.cpp index 41f93a8ee..dd8abbac5 100644 --- a/src/drivers/px4io/px4io_uploader.cpp +++ b/src/drivers/px4io/px4io_uploader.cpp @@ -51,6 +51,7 @@ #include <poll.h> #include <termios.h> #include <sys/stat.h> +#include <nuttx/arch.h> #include <crc32.h> @@ -120,8 +121,15 @@ PX4IO_Uploader::upload(const char *filenames[]) cfsetspeed(&t, 115200); tcsetattr(_io_fd, TCSANOW, &t); - /* look for the bootloader */ - ret = sync(); + /* look for the bootloader for 150 ms */ + for (int i = 0; i < 15; i++) { + ret = sync(); + if (ret == OK) { + break; + } else { + usleep(10000); + } + } if (ret != OK) { /* this is immediately fatal */ @@ -226,6 +234,11 @@ PX4IO_Uploader::upload(const char *filenames[]) close(_fw_fd); close(_io_fd); _io_fd = -1; + + // sleep for enough time for the IO chip to boot. This makes + // forceupdate more reliably startup IO again after update + up_udelay(100*1000); + return ret; } |