Hi. I understand all that has been said and I agree with it (it is obvious that two motes wouldn't share any memory on a real network and that should also happen on a simulation). What I was trying to say is that I was expecting that motes would share the same memory but that was only due to my limited understanding of nesC - I'm totally aware that having motes sharing memory isn't the expected behavior of a WSN.
But still, I can't figure it out where are the several motes instantiated in order to assure they use different stacks from each other. Is this happening inside _TOSSIMmodule.so? (Don't knowing how it works was what it took me to have that doubt.) Regards, Pedro Nunes On Sat, Jun 19, 2010 at 2:36 PM, Michael Schippling <[email protected]>wrote: > Just because the code is shared, doesn't mean that the data memory > is shared as well. > > Just a WAG on my part, but I would assume that TOSSIM runs each > mote instance on a different stack and sets each instance's "global" > memory area to different locations as well. In writing that last > phrase it occurred to me that there must be some memory foo happening > at compile time to make that happen... > > That said, I've had to jump through annoying hoops in order to share > global state across multiple TOS modules due to NESC name mangling. > I recently thought I might be able to do a real global variable in > a C library and link the TOS program to it, but that's water under > the bridge now. > > And there's nothing wrong with T1 that a few good kicks doesn't fix. > Usually.... > > MS > > > > Eric Decker wrote: > >> Nothing I've said is changed because of TOSSIM. TOSSIM simulates many >> different nodes and they are different nodes. >> >> So the control cells are still not shared. >> >> >> On Fri, Jun 18, 2010 at 7:09 PM, Pedro Nunes <[email protected] <mailto: >> [email protected]>> wrote: >> >> Hello, Eric. >> >> First of all, sorry for the misunderstanding -- I forgot to mention >> I was working with TOSSIM. >> >> I've been trying to find the piece of code responsible for >> instantiating the several motes used within a simulation. I was >> convinced that although we had N motes running on the simulator, >> they would all share the same modules and configurations and >> therefore the same data fields (which would be messy, I know). On >> the other hand, I knew from the start that that wasn't the correct >> behavior of WSN's and it was hard for me to believe that the >> simulator would really work that way. >> >> So my question is: how does TOSSIM handle the instantiation of N >> motes? And where does it do it? >> >> Kind regards, >> Pedro Nunes >> >> On Sat, Jun 19, 2010 at 2:59 AM, Eric Decker <[email protected] >> <mailto:[email protected]>> wrote: >> >> >> >> On Fri, Jun 18, 2010 at 4:37 AM, Pedro Nunes <[email protected] >> <mailto:[email protected]>> wrote: >> >> Hi all. >> >> I have a non-generic module with an uint8_t array inside. >> That module has a command like this: >> >> command SomeModule.setValue(int something) { >> array[sim_node()] = something; >> } >> >> I was expecting that this array would be "global" for all >> motes and they would share it >> >> >> I don't understand why you think "array" would be global within >> a mote let alone across motes. >> >> There is no nesc construct for declaring an object that is >> global across multiple entities. nesc is a language extension >> built on top of C that forces compartmentalization for systems >> design. It is only symantically relevant to a module. There >> are no constructs in nesc for sharing global objects across >> motes or for that matter across modules. The whole intent of >> nesc is to provide a structure that forces very well defined >> interfaces between components of a system. >> >> (although this is not what WSN's are supposed to do) -- but >> as far as I know about nesC, this was the expected behavior. >> >> >> not sure why you are concluding that. >> >> module globals are unique to a module. A module global is >> something like: >> >> module exampleP {} >> implementation { >> uint32_t blah; >> >> >> ... >> >> command SomeModule.setValue(uint32_t something) { >> blah = something; >> } >> } >> >> blah is global only to the module exampleP. It is not global to >> the mote nor across the network. >> >> >> Hopefully that clears things up. >> >> eric >> >> >> Instead, I got each mote having its own array without >> sharing its content with any other mote. >> >> Could anyone please enlight me with a logical explanation on >> why is this happening? >> >> Regards, >> Pedro Nunes >> >> _______________________________________________ >> Tinyos-help mailing list >> [email protected] >> <mailto:[email protected]> >> >> >> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help >> >> >> >> >> -- Eric B. Decker >> Senior (over 50 :-) Researcher >> >> >> >> >> >> >> -- >> Eric B. Decker >> Senior (over 50 :-) Researcher >> >> >> >> ------------------------------------------------------------------------ >> >> >> _______________________________________________ >> 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
