Keil Logo

ARMLINK: Linker error L6216E

Information in this knowledgebase article applies to:

  • MDK-ARM V5.24 or newer
  • ARM CMSIS V5.3.0 or newer
  • RTX5


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


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.

RTX5 distributed with CMSIS 5.3.0 introduces OS sections also for ARM Compiler V5. OS sections is a table with memory regions for control blocks.

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

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.


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


  • Refer to Arm Linker in the µVision User's Guide.

Last Reviewed: Friday, March 16, 2018

Did this article provide the answer you needed?
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.