We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 66147

2014.x FreeRTOS will not boot at low temperature


This issue occurs with the 2014.x version of FreeRTOS and manifests as processor lockup on ~30% of the devices when running at low temp.

The issue is related to FreeRTOS not initializing the SPSR which is a register not affected by reset, so its un-initialized state varies based on conditions.

The SPSRs are UNKNOWN on reset. Per the ARMv7 Architecture Reference Manual, DDI 0406C.c ID05414, Pg. B1-1148. SPSR settles to non-zero at cold and zero at warm temperatures.

The assembly instruction fails under the following conditions:

- Returning from a FreeRTOS function hangs the system.

  • Function hand-written in Assembly by FreeRTOS
  • The CPU is put in elevated (IRQ) mode during function

-  The CPU incorrectly set to Big Endian mode.

  • Only at cold temperatures (between 0-12C)


Newer versions of FreeRTOS address the issue.

FreeRTOS v7.0.2 did not initialize SPSR before read-modify-write. There is no official FreeRTOS port for the Cortex-A9 in FreeRTOS V7.0.2. The first official port appeared in V8.0.0.

The first Xilinx Supported and tested FreeRTOS port is version 8.2.1.

Note: Xilinx software uses CPSR instead of SPSR so the issue is not seen for those cases.

Xilinx Recommendation:

If using FreeRTOS versions prior to v8.1.2, search all code for any SPSR commands and Modify/Initialize the SPSR bits.

AR# 66147
Date Created 12/07/2015
Last Updated 01/06/2016
Status Active
Type Known Issues
  • Zynq-7000
  • Vivado Design Suite - 2014.1
  • Vivado Design Suite - 2014.2
  • Vivado Design Suite - 2014.3
  • More
  • Vivado Design Suite - 2014.4
  • Vivado Design Suite - 2014.4.1
  • Less