F29H85x-SDK  26.00.00
 
Memory Allocation

Memory Allocation modules are available under the "Memory Configuration" section in Sysconfig.
Use 'Codestart Address' field to place the CPU1 codestart at a specific address (This will override any auto-assigned address if present). To auto-assign the vector address, set this field to 0x0.

Memory Allocation overview
Note
This profile is valid only when used independent of the System Security module. When System Security is added, the memory region and section configurations are done according to the parameters defined by the SSU settings, which is part of the System Security Configuration profile.

Memory Region

This module is used to create named memory ranges, which will be listed under the MEMORY directive of the linker cmd file. In the Global Parameters, the Flash BANKMODE configuration is specified. Note that this is only used for allocation purposes and does not actually perform any BANKMODE related setup on the device. For this configuration, please use the Flash Plugin provided with CCS.

BANKMODE selection

Configurations

For each Memory Region, user specifies:

  • Memory Type : Whether the region is created in RAM or Flash memory
  • Size : In multiples of 4kB blocks
  • Type : Used to designate a region as "Code" (containing executable program code) or "Data" (data region for RO or RW access).
  • WS Requirement : In case of a RAM region, user can also prioritize a region to assign it a 0 wait-state (WS) region in RAM memory. This range varies for each CPU and region type - combination.
  • Share with other cores : In case of a RAM region, a memory region can be shared with other cores. A region with the same start and end addresses will be automatically created (if possible) on the selected cores

Memory Region configuration parameters

Different sections of RAM and Flash have different access settings based on BANKMODE, core, wait state optimization etc. The tool will automatically allocate an optimal memory region based on user input and add it to the linker file. In case a region cannot be allocated (for instance, a 0 WS region is mandated but not available, or required memory is not available), the tool will throw an error and with the corresponding root cause.

In order to bypass the automatic allocation and specify the exact address for a region, enable the Customize this Memory Region? checkbox. Here, user can enter the Start Address (4KB aligned). User can also specify an alternative MEMORY region alias for the current APR. In case of a memory region added via the System Security module, there is also an option to specify a SECTION alias for the current region, which will replace the normally auto-generated SECTION name corresponding to that APR. Note that these options may be restricted or disabled for certain special memory regions (such as CERT).

Customizing a region

Linker MEMORY entry for a custom region

Summary Table View

The Memory Region Summary view table in Sysconfig can be used for a concise visualization of all created memory regions on each individual CPU context, as well as information regarding available unused memory.

Memory Region Summary table

In some cases, like when a region is shared to another core, the Memory Region on the shared core is created "implicitly", i.e. not available directly under the Memory Region instance list. Such regions can also be inspected by opening this summary view.

Shared Memory Region - Created on CPU1

Shared Memory Region - Shared with on CPU3

Sections

This module is used for creating output sections, and the constituent input sections, which will be listed under the SECTIONS directive of the linker cmd file.

Currently, each output section can be assigned to exactly 1 Memory Region without splitting. It can also be assigned to be run from a different (single) Memory Region. Additional linker configurations like alignment, constant padding, and other special symbols are also available in the module.

Zero/more input sections can be added for each output section. For each input section, user can specify the library name, object file and the specific input section name. If any of these are left blank, all relevant matches for that field will be assigned to the section (See below image).

Input & Output Sections

In case no input sections are added, the output section name itself is used to locate and match input sections.

Certain "special" input sections are configured as follows:

  • codestart section is automatically assigned to the first Flash (or if it doesn't exist, then RAM) code memory region found. To change this assignment, simply create an Output Section named 'codestart' and assign to the required Load Memory. Note that this section will always be assigned to the starting address of the selected Memory Region.
  • cert section is automatically added if any Flash Memory Regions are detected. This region is mandatory for CPU1 and optional for CPU3. An option is provided to include or exclude cert for CPU3.
  • nmivector section can be placed at a specific address (for CPU2 & CPU3 only) by configuring the same in Global Parameters in the Memory Regions module.
  • resetvector section can be placed at a specific address (for CPU2 & CPU3 only) by configuring the same in Global Parameters in the Memory Regions module.

Generated Files

Generated Files

The tool generates the linker.cmd file based on the selected options in the GUI, which can be found in the "C29 Security" category. For user-defined Sections, entries will only show up when that specific section has a valid “Load Memory” entry selected

linker.cmd