🎉 We're happy to announce new public releases 🎉

  • TriCore v6.2r2 Inspector v1.0r9 - A family of tools that provide an automated method for identifying toolset issues in compiled output code
Contact us to get access

Section is not assigned to an LSL group as expected

02-Feb-2026

This article and the provided examples are for the TriCore toolset. Note that you can use a similar approach for our other products as well.

When you use an LSL group to select sections, for example, for a dedicated placement in memory, a section might not be assigned as expected. This may be due to the wrong space selection in the section_layout in the LSL file.


Possible solution

Although group names are optional, consider using them as a best practice, since the group name is displayed in the .map file when the assignment is successful. Consider the section_layout example:

section_layout :vtc:linear
{
// group entry to place a non-initialized far addressed data section in LMURAM memory
group MY_DATA ( ordered, run_addr=mem:mpe:lmuram )
{
select ".bss.file_1.my_var_2";
}
}


The generated .map file displays the sections as shown below.


+ Space mpe:vtc:linear (MAU = 8bit)
+----------------------------------------------------------------------------------------------------------------------------+
| Chip | Group | Section | Size (MAU) | Space addr | Chip addr | Alignment |
|============================================================================================================================|
|
...
| mpe:lmuram | MY_DATA | .bss.file_1.my_var_2 (170) | 0x00000004 | 0x90000000 | 0x0 | 0x00000002 |


If you do not specify a group name, the section might be placed in the group’s range by accident and this will most likely change after you have made modifications to the project’s C source files. It is important to keep in mind that the section_layout entry determines which sections will be selected.

Consider the example:

section_layout :vtc:linear
{
group MY_DATA ( ordered, run_addr=mem:mpe:lmuram )
{
select ".zbss.file_1.my_var_1";
}
}

This will not work because the .zbss section is near-addressable (abs18) whereas the section_layout entry is for the linear (far-addressable) range. See Chapter 7.9.5. The Architecture Definition in the TriCore Toolset User Guide which includes a table about the address space relations.

To correct this error, you need to adapt the section_layout entry as shown below:

section_layout :vtc:abs18
{
// group entry to place a non-initialized near addressable data section
// in LMURAM memory
group MY_NEAR_DATA ( ordered, run_addr=mem:mpe:lmuram )
{
select ".zbss.file_1.my_var_1";
}
}

The generated .map file presents the sections as follows:


+ Space mpe:vtc:abs18 (MAU = 8bit)
+----------------------------------------------------------------------------------------------------------------------------+
| Chip | Group | Section | Size (MAU) | Space addr | Chip addr | Alignment |
|============================================================================================================================|
|
| mpe:lmuram | MY_NEAR_DATA | .zbss.file_1.my_var_1 (169) | 0x00000004 | 0x90000000 | 0x0 | 0x00000002 |

The zip file section_placement_failure_example includes a buildable example using a command line invocation.


More resources

Was this answer helpful?