13.07.2015 Views

TASKING VX-toolset for ARM User Guide

TASKING VX-toolset for ARM User Guide

TASKING VX-toolset for ARM User Guide

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>TASKING</strong> <strong>VX</strong>-<strong>toolset</strong> <strong>for</strong> <strong>ARM</strong> <strong>User</strong> <strong>Guide</strong>Stacks and heaps• The stack keyword defines a stack in the address space and assigns a name to it. The architecturedefinition must contain at least one stack definition. Each stack of a core architecture must have aunique name. See also the stack keyword in Section 16.8.3, Creating or Modifying Special Sections.The stack is described in terms of a minimum size (min_size) and the direction in which the stackgrows (grows). This can be either from low_to_high addresses (stack grows upwards, this is thedefault) or from high_to_low addresses (stack grows downwards). The min_size is required.By default, the linker tries to maximize the size of the stacks and heaps. After locating all sections, thelargest remaining gap in the space is used completely <strong>for</strong> the stacks and heaps. If you specify thekeyword fixed, you can disable this so-called 'balloon behavior'. The size is also fixed if you used astack or heap in the software layout definition in a restricted way. For example when you override astack with another size or select a stack in an ordered group with other sections.The id keyword matches stack in<strong>for</strong>mation generated by the compiler with a stack name specified inLSL. This value assigned to this keyword is strongly related to the compiler’s output, so users are notsupposed to change this configuration.Optionally you can specify an alignment <strong>for</strong> the stack with the argument align. This alignment mustbe equal or larger than the alignment that you specify <strong>for</strong> the address space itself.• The heap keyword defines a heap in the address space and assigns a name to it. The definition of aheap is similar to the definition of a stack. See also the heap keyword in Section 16.8.3, Creating orModifying Special Sections.Stacks and heaps are only generated by the linker if the corresponding linker labels are referenced in theobject files.See Section 16.8, Semantics of the Section Layout Definition, <strong>for</strong> in<strong>for</strong>mation on creating and placingstack sections.Copy tables• The copytable keyword defines a copy table in the address space. The content of the copy table iscreated by the linker and contains the start address and size of all sections that should be initializedby the startup code. You must define exactly one copy table in one of the address spaces (<strong>for</strong> a core).Optionally you can specify an alignment <strong>for</strong> the copy table with the argument align. This alignmentmust be equal or larger than the alignment that you specify <strong>for</strong> the address space itself. If smaller, thealignment <strong>for</strong> the address space is used.The copy_unit argument specifies the size in MAUs of in<strong>for</strong>mation chunks that are copied. If you donot specify the copy unit, the MAU size of the address space itself is used.The dest argument specifies the destination address space that the code uses <strong>for</strong> the copy table. Thelinker uses this in<strong>for</strong>mation to generate the correct addresses in the copy table.The memory into wherethe sections must be copied at run-time, must be accessible from this destination space.Sections generated <strong>for</strong> the copy table may get a page restriction with the address space's page size,by adding the page argument.822

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!