On Fri, Mar 11, 2011 at 5:16 PM, Eric Decker <[email protected]> wrote:

>
>
> On Fri, Mar 11, 2011 at 1:54 PM, Xiaohui Liu <[email protected]> wrote:
>
>> Thanks for the reply.
>>
>>
>> On Fri, Mar 11, 2011 at 4:25 PM, Eric Decker <[email protected]> wrote:
>>
>>>
>>> You don't specify what platform you are building for.   Please do so in
>>> the future it will make
>>> it easier to answer your question.
>>>
>>> I am working on TelosB.
>>
>>
>>> Most embedded processors include RAM and Flash based ROM on chip.   When
>>> compiling the toolchain
>>> will tell you how much space it thinks your program has taken up in code
>>> space (ROM, really flash) and
>>> how much in RAM.
>>>
>>> On Fri, Mar 11, 2011 at 12:23 PM, Xiaohui Liu <[email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> When I build my application, it says
>>>> 47652 bytes in ROM
>>>> 9426 bytes in RAM.
>>>> What exactly consists of the content in ROM and RAM?
>>>>
>>>
>>>
>>>> Where are global variables stored, ROM or RAM?
>>>>
>>>
>>> if a global variable is listed as "const" it goes in ROM.
>>>
>>> What variables are "const"? Do you mean using keyword "const" when
>> declaring the variable?
>>
>
> yes.  If a global variable is declared const it gets put into rom.
>

What about global variables not declared as "const"? Where are they stored?

>
> If a parameter to a function or a local variable is declared const it
> simply tells the compiler not
> to allow any writes to that object.
>
>
>>
>> If a global variable is initilized it goes into ".data" and there is a
>>> block of ROM that contains all the initilized data values.
>>> On start up this block is copied into the .data section that actually
>>> lives in RAM.
>>>
>>> If a global variable isn't initilized then it goes into the ".bss"
>>> section.   It gets zero'd on start up.  The name is ancient and comes
>>> from an old old old (maybe before you were born, gosh that's fun to say)
>>> IBM assembler directive.   BAL (Basic Assembly Language).
>>>
>>>
>>>> What is .bss?
>>>>
>>>
>>> Google is your friend.   I did a simple google search for "what is .bss"
>>> and got the answer.   But that doesn't answer the question
>>>  in the context you are asking.  I don't know what to point you at.  This
>>> is stuff I've picked up over the years.  Probably by asking someone.   Also
>>> I was in on this stuff when it was happening the first time.   Sorry I don't
>>> have a better answer.
>>>
>>>
>>>> What is the resulting .ihex file?
>>>>
>>>
>>> I don't know what you are trying to ask.  I don't understand the
>>> question.
>>>
>> I mean what is in the main.ihex generated? What is the file for?
>>
>
> Beats me.  It is an artifact of the makefile.
>
> Perhaps I should remove it.   I am currently doing major work on cleaning
> up the msp430 part of the tree.
>
> None of the tools currently need it for what they do.  All of the current
> tools that I know of use the elf
> output directly.  But I'll check into that.
>
>
>>
>>>
>>>
>>>> According to this 
>>>> thread<http://mail.millennium.berkeley.edu/pipermail/tinyos-help/2008-August/035680.html>,
>>>> data and global variables are in RAM, what are the "data" here, can anyone
>>>> give some examples of such data?
>>>>
>>>
>>> That thread talks about the micaz which is an Atmel processor.  Is that
>>> the processor you are building for?
>>>
>>> No, I'm building for msp430.
>>
>
> Okay.  So you should then keep in mind that thread referes to the Atmel
> processors and doesn't really apply to what we
> are taking about.
>
>
>>  "data" refers to initilized data.  See above.  Other global variables
>>> get put into bss and is zero'd.
>>>
>>> If you want to see the layout of your program you can use one of the
>>> toolchain programs.  For the msp430 these are
>>> msp430-nm and msp430-objdump.   Play with them and see what is there.
>>>
>>>
>>>>
>>>> When a program is downloaded into a mote, where is it stored?
>>>>
>>>
>>> The code is flashed into .....   the flash.   This is the ROM.    And
>>> then typically there is a reset vector that determines
>>> the first PC (PC= program counter, not personal computer, in this
>>> context) and the program begins to execute.   What
>>> happens next depends on the instructions but typically bss will get
>>> zero'd and data will get copied down from ROM into
>>> the appropriate RAM area.
>>>
>>> If power is lost, yes the RAM gets lost.
>>>
>>>
>>>>  Is data stored in RAM? If yes, will it be lost if mote is powered off
>>>> just like all data in memory is lost when a PC is turned off?
>>>>
>>>> The controller fetches code instructions from ROM and data from RAM when
>>>> executing a program, is this understanding right?
>>>>
>>>
>>> Depends on the instruction being executed.
>>>
>>> I would recommend you find a reasonable introduction to how computers
>>> work at the lower layer.  I don't know one off the top
>>> of my head.   Try a google search for "How do CPUs work".
>>>
>>>
>>>>
>>>> Thanks for your clarification. I wish I could organize these random
>>>> questions in a more systematic manner.
>>>>
>>>
>>> See how much you can figure out on your own first.  Do as much homework
>>> as you can first.   But keep in mind
>>> getting pointed in the right direction can be very very helpful too so
>>> keep it balanced.
>>>
>>> eric
>>>
>>>
>>>> --
>>>> -Xiaohui Liu
>>>>
>>>> _______________________________________________
>>>> Tinyos-help mailing list
>>>> [email protected]
>>>> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>>>>
>>>
>>>
>>>
>>> --
>>> Eric B. Decker
>>> Senior (over 50 :-) Researcher
>>>
>>>
>>>
>>
>>
>> --
>> -Xiaohui Liu
>>
>
>
>
> --
> Eric B. Decker
> Senior (over 50 :-) Researcher
>
>
>


-- 
-Xiaohui Liu
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to