I've committed the fix. Thanks, Fabrice. Janos
On Tue, Aug 24, 2010 at 10:40 AM, Fabrice Dossin <[email protected]> wrote: > Hi, > > Ok, I have finally found it (bug report) ! > > The problem was into Deluge initialization process. One of the first > task that Deluge does is to check if the images are valid. > It is checked by computing the CRC of each page and comparing it to > the transmitted CRCs. > > In DelugeMetadataP module, on line 127, there is a call to > BlockRead.computeCrc. > > call BlockRead.computeCrc[currentVolume](calcPageAddr(), > DELUGE_BYTES_PER_PAGE, 0); > > This call was returning an EINVAL error and without any error code > verification the Deluge module was just stopped into the CRC check > loop and storageReady event was never sent, neither the radio > initialized. > > The EINVAL is caused by the calcPageAddr() in the same module on line 75 : > > uint32_t calcPageAddr() > { > return DELUGE_IDENT_SIZE + DELUGE_CRC_BLOCK_SIZE + currentPage * > DELUGE_BYTES_PER_PAGE; > } > > The calculation of this sum is cast to an Integer since > DELUGE_BYTES_PER_PAGE is an integer. > When my current page equal to 30, there is an integer overflow and the > method returns 0xFFFF82E0 instead of 0x000082E0. > > A working fix for this could be casting DELUGE_BYTES_PER_PAGE to > uint32_t but there is maybe a cleaner fix (I am kind a beginner in C > and embedded systems). > > uint32_t calcPageAddr() > { > return DELUGE_IDENT_SIZE + DELUGE_CRC_BLOCK_SIZE + currentPage * > (uint32_t)DELUGE_BYTES_PER_PAGE; > } > > Regards, > Fabrice Dossin > > > On 23 August 2010 10:14, Fabrice Dossin <[email protected]> wrote: >> >> Yes, it is. As a proof when I flash my app on the mote as the golden image >> it works like a charm... >> I just need this to link it to my app, no ? >> components DelugeC; >> DelugeC.Leds -> LedsC; >> Regards, >> Fabrice >> >> >> On 21 August 2010 03:33, Chieh-Jan (Mike) Liang <[email protected]> wrote: >>> >>> Hi, >>> >>> Is your Blink app wired to DelugeC component? >>> >>> Mike >>> >>> On Aug 20, 2010, at 10:32 AM, Fabrice Dossin wrote: >>> >>> > Hi, >>> > >>> > I am currently investigating for integrating Deluge T2 into my app. >>> > I have a strange behavior : >>> > When I program the motes with my program as the golden image it does boot >>> > correctly and I can propagate a Blink image or another to the mesh. >>> > But when I flash the mote with Blink and propagate my app trough the air, >>> > my app never start... >>> > >>> > The Boot.booted event is sent but I never receive the startDone event >>> > from ActiveMessageC that is automatically started by Deluge. >>> > The program is blocked somewhere between these. >>> > If I manually activate ActiveMessage, Deluge never take my propagated >>> > images so it should be freezed somewhere into the deluge initialization >>> > process. >>> > >>> > Does someone have a clue for me on where to search ? >>> > I am developing on IRIS motes. >>> > >>> > Kind regards, >>> > Fabrice >>> > >>> > _______________________________________________ >>> > Tinyos-help mailing list >>> > [email protected] >>> > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help >>> >> > > _______________________________________________ > Tinyos-help mailing list > [email protected] > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > _______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
