itm / wsn-device-drivers

Drivers for Wireless Sensor Network Devices
Other
6 stars 4 forks source link

Flashing fails for iSense node #5

Closed danbim closed 13 years ago

danbim commented 13 years ago

I tried to flash an isense node using the flash utitlity from http://github.com/itm/wsn-device-utils/. It failed with the following errors:

java -jar wsn-device-utils-0.3-SNAPSHOT-flash.jar isense /dev/ttyUSB2 vlinks.bin 
myJarPath=file:/home/testbeduzl/wsn-device-utils-0.3-SNAPSHOT-flash.jar
oneJarPath=file:/home/testbeduzl/wsn-device-utils-0.3-SNAPSHOT-flash.jar
Experimental:  JNI_OnLoad called.
RXTX Warning:  Removing stale lock file. /var/lock/LCK..ttyUSB2
2011-05-12 09:37:49,271 | pool-1-thread-1           | DeviceFlasherCLI$1        | INFO  | Starting flash operation...
2011-05-12 09:37:49,294 | pool-1-thread-1           | DeviceFlasherCLI$1        | INFO  | Progress: 0%
2011-05-12 09:37:49,496 | pool-1-thread-1           | DeviceFlasherCLI$1        | INFO  | Progress: 1%
2011-05-12 09:37:49,698 | pool-1-thread-1           | DeviceFlasherCLI$1        | INFO  | Progress: 2%
2011-05-12 09:37:49,900 | pool-1-thread-1           | DeviceFlasherCLI$1        | INFO  | Progress: 3%
2011-05-12 09:37:49,910 | pool-1-thread-1           | DeviceFlasherCLI$1        | INFO  | Progress: 4%
2011-05-12 09:37:49,913 | pool-1-thread-1           | DeviceFlasherCLI$1        | INFO  | Progress: 6%
2011-05-12 09:37:49,917 | pool-1-thread-1           | AbstractOperation         | ERROR | Exception during operation execution
de.uniluebeck.itm.wsn.drivers.core.exception.InvalidChecksumException
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicDevice.receiveBootLoaderReply(JennicDevice.java:281)
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicGetChipTypeOperation.getChipType(JennicGetChipTypeOperation.java:54)
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicGetChipTypeOperation.execute(JennicGetChipTypeOperation.java:106)
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicGetChipTypeOperation.execute(JennicGetChipTypeOperation.java:14)
    at de.uniluebeck.itm.wsn.drivers.core.operation.AbstractOperation.executeSubOperation(AbstractOperation.java:178)
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicProgramOperation.execute(JennicProgramOperation.java:78)
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicProgramOperation.execute(JennicProgramOperation.java:12)
    at de.uniluebeck.itm.wsn.drivers.core.operation.AbstractOperation.call(AbstractOperation.java:116)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
    2011-05-12 09:37:49,921 | pool-1-thread-1           | DeviceFlasherCLI$1        | ERROR | Flashing node failed with  Exception:     de.uniluebeck.itm.wsn.drivers.core.exception.InvalidChecksumException
de.uniluebeck.itm.wsn.drivers.core.exception.InvalidChecksumException
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicDevice.receiveBootLoaderReply(JennicDevice.java:281)
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicGetChipTypeOperation.getChipType(JennicGetChipTypeOperation.java:54)
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicGetChipTypeOperation.execute(JennicGetChipTypeOperation.java:106)
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicGetChipTypeOperation.execute(JennicGetChipTypeOperation.java:14)
    at de.uniluebeck.itm.wsn.drivers.core.operation.AbstractOperation.executeSubOperation(AbstractOperation.java:178)
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicProgramOperation.execute(JennicProgramOperation.java:78)
    at de.uniluebeck.itm.wsn.drivers.jennic.JennicProgramOperation.execute(JennicProgramOperation.java:12)
    at de.uniluebeck.itm.wsn.drivers.core.operation.AbstractOperation.call(AbstractOperation.java:116)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
mlegenhausen commented 13 years ago

Try again to flash or reconnect the device. I had the same error, but it was not deterministic. I will take a look again.

mlegenhausen commented 13 years ago

Problem currently only occurs on Linux 32bit Systems.

mlegenhausen commented 13 years ago

Problem solved. The fix was simple. I added a connection.flush() after the program mode was entered. It seems that Linux buffers the data before the programming mode was entered windows does this not.