Keil Logo

ARMLINK: Linker Error L6216E


Information in this knowledgebase article applies to:

  • Keil MDK 5.24 or newer
  • ARM::CMSIS Pack 5.3.0 or newer
  • Keil RTX5

SYMPTOM

After updating the ARM::CMSIS Pack linking my project results in this error message:

file.axf: Error: L6216E: Cannot use base/limit symbols for non-contiguous section .bss.os.mutex.cb

CAUSE

This mostly occurs if a user manually configures the file memory assignment for RAM (“Zero Initialized Data” and “Other Data”) in a non-contiguous way.

Keil RTX5 distributed with CMSIS 5.3.0 introduces OS sections also for Arm Compiler 5. 

OS section is a table with memory regions for control blocks.

OS control blocks (threads, mutexes, …) and data should be put in contiguous memory. This enables the MPU isolation and protection with CMSIS-Zone. It also allows the display of objects in the Component Viewer.

Keil RTX5 places all OS RW/ZI variables into named RAM sections:

  • .bss.os* (ZI)
  • .data.os* (RW)

Those sections should be placed into contiguous memory. This needs to be taken into account when using custom linker scripts or when using auto-generated scripts and manually assigning memory on module level.

RESOLUTION

At your manual configuration of the file memory assignment for RAM, the resolution here is to respect the requirement of contiguous memory management.

MORE INFORMATION

Last Reviewed: Tuesday, February 2, 2021


Did this article provide the answer you needed?
 
Yes
No
Not Sure
 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.