Le Wednesday 20 August 2008 12:47:07 Nicola Wegner, vous avez écrit : > Hi, > > I am a little confused about the ROM and RAM values that are printed > to the command line when I compile a application for micaz. > > When I have over 4KB of RAM usage my applications do not start any > more. In the micaz datasheet ( > http://www.xbow.com/Products/Product_pdf_files/Wireless_pdf/MICAZ_Datasheet >.pdf) I can not even find a value for the RAM size. Only the following > memory is listed: > 128K bytes Program Flash Memory > 512K bytes Measurement Serial Flash > 4 K bytes Configuration EEPROM > > Program Flash Memory is the ROM memory I think. I do not understand > why there is a EEPROM and Serial Flash memory. Is this perhaps a typo > and they mean RAM an not EEPROM? If not can anybody please tell me > what the RAM size for micaz is. >
no the documentation is right ... but incomplete! the atmega128 has - 128K bytes Program Flash Memory: basically it's where your program code is (and initial values of global variables ) . The value given by "ROM usage" when you compile an application is about this memory so an application with ROM usage above 128KB can't possibly work ... - 4 K bytes of SRAM: this is the internal SRAM (i.e. data memory ) available on the atmega128 (it's possible to have external SRAM but it's not the case on the micaz) . The value given as RAM when you build a tinyos application is the memory needed by your application in this SRAM for DATA and BSS sections (basically global variables allocated or not. IIRC, this does not includes HEAP size, but usually does not matter as dynamic allocation isn't commonly used under TinyOS ). But be very careful, this value does not includes stack usage. My guess is that it's not included simply because there is no straight forward way to get this value... (tool and details see [2] ). So this means that when you get a value close from 4KB at the end of compilation, your program is very likely to crash, because the stack will overflow on the BSS or DATA section (unless you have *zero* function calls ;) ). - 4 K bytes Configuration EEPROM : it's internal to the atmega 128, AFAK it's rarely used. The only "official" use I know is in the deluge bootloader : tinyos-2.x/tos/lib/tosboot/avr/InternalFlashC.nc it's used to store parameters between reboots (image to reprogram, node id ... ) - 512K bytes Measurement Serial Flash : this is the external (ie external to the atmega128, it's soldered on the pcb) flash chip accessed trough io ports i.e. used by the components like BlockStorageC ... HTH, Aurélien [2] http://www.cs.utah.edu/~regehr/stacktool/ _______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
