newbie questions about memory allocation

OP #1173263
Hi everibody, thanks for reading..

im newbie with GNU-ARM and i want to compile my first project and test
it in my machine, ARM7, so i need personalize the makefile, i searched
other makefiles to learn how to do one, and after read many of them, i
found that the changes on memory allocation, "always"(in the projects
that i see, always) are here:

------------------------+
FIQ_STACK_SIZE = 0x0100;|
IRQ_STACK_SIZE = 0x0100;|
ABT_STACK_SIZE = 0x0100;|  <---- all of this block remains unchangeable
but i
UND_STACK_SIZE = 0x0100;|        have my doubts :S
SVC_STACK_SIZE = 0x0400;|
------------------------+

MEMORY
{
  ram : org = 0x20000000, len = 64k <---OK, only this changed
}


:S, my memory machine specs are:
-----------------------------------------------start
here--------------------
SRAM :
0x080FFFFF 0x08081000 user AP <---- here i must put my app
0x08080FFF 0x08080000 PM      <---- application manager, i must not
touch it
0x0807FFFF 0x08070000 Stack
0x0806FFFF 0x08040000 System buffer
0x0803FFFF 0x08022000 OS
0x08021FFF 0x08000000 System used



FLASH:
0x003FFFFF 0x00210000 User’s AP <---here too, this is the source, in the
other
                                    ocurrence i store the variables i
think.
0x0020FFFF 0x00200000 PM        <---- application manager, i must not
touch it
0x001FFFFF 0x000B0000 Font & Buffer
0x000AFFFF 0x00080000 System F/W
0x0007FFFF 0x00010000 OS
0x0000FFFF 0x00000000 System used
--------------------------------------------------ends
here-------------------


so i dont know what to do, the argument above in:

MEMORY
{
  ram : org = 0x20000000, len = 64k
}

only specs one memory... i have 2... and one is sram, and other flash...

what must i to do?

Thanks for reading, whatever info is very useful for me please post your
answer, im really afraid about the lost of time :(
Moderator #1173264
Sergio d. Reyes wrote:
> MEMORY
> {
>   ram : org = 0x20000000, len = 64k
> }
>
> only specs one memory... i have 2... and one is sram, and other flash...
>
> what must i to do?

include a the 2nd section in the linker script, i.e.

MEMORY
{
  flash : org = 0xXXXXXXXX, len = 0xXXXXXX
  ram   : org = 0x20000000, len = 64k
}

and use the ">flash" at the end of a linker-section (i.e. .text) to
select the memory-section. But you should give some more details. Do you
want your user-application to run from flash or RAM? For "run from
flash" you can use the approach described above. Keep in mind that that
non-zero initial values of variable have to be copied from Flash to RAM
and the address-range which holds the variable which are expected to
init with zero most be filled with zeros (usualy done in the
startup-code). If the user-app should run from RAM (implied by "here i
must put my app") it's a little different since you have to copy the
code from a "persistent" storage (flash) to the memory where it should
be executed (RAM) too. Maybe this is done by a "loader" from your OS,
but wíthout further information it's difficult to help. Anyway, search
for the GNU binutils-manuals and read the linker-manual (ld), it
explains how to place sections at specific LMAs/VMAs.

Reply

A question of your own? This thread is over 18 years old. Ask it in a thread of its own – more people read along there, and it gets answered more often and sooner.

Start a new thread

A fix, an addition or feedback on this thread? Then reply here.

Formatting
  • [c]C-Code[/c]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]
  • [[Title]] – link to an article
  • Link to another post: right-click its post ID (#8078628), copy the address, paste it into the text

More about formatting

Post long source code as an attachment, not in the text.

Already registered? Log in

Not shown to anyone. We send you a link; your post appears once you confirm it there.

By submitting you create a free account and accept the terms of use.