Skip to main content
DNeet.1
Associate III
November 3, 2020
Solved

unknown type name '__RAM_FUNC'; did you mean '__ARM_FP'?

  • November 3, 2020
  • 2 replies
  • 3289 views

I trying to port STM32CubeExpansion_LRWAN_V1.3.1 for the evaluation board B-L475E-IOT01A2. I managed to whittle the errors down to 2. In both cases i am getting

unknown type name '__RAM_FUNC'; did you mean '__ARM_FP'?

in a HAL file stm32l4xx_hal_flash_ramfunc.h generated by STM32CubeIDE. What does this error mean?

The crazy thing is that __RAM_FUNC gets defined in stm32l4xx_hal_def.h, and stm32l4xx_hal_def.h is included in stm32l4xx_hal_flash_ramfunc.h, but somehow the compiler fails to register this??

#if defined ( __CC_ARM  ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))

/* ARM Compiler V4/V5 and V6

  --------------------------

  RAM functions are defined using the toolchain options.

  Functions that are executed in RAM should reside in a separate source module.

  Using the 'Options for File' dialog you can simply change the 'Code / Const'

  area of a module to a memory space in physical RAM.

  Available memory areas are declared in the 'Target' tab of the 'Options for Target'

  dialog.

*/

#define __RAM_FUNC

#elif defined ( __ICCARM__ )

/* ICCARM Compiler

  ---------------

  RAM functions are defined using a specific toolchain keyword "__ramfunc".

*/

#define __RAM_FUNC __ramfunc

#elif defined  ( __GNUC__ )

/* GNU Compiler

  ------------

 RAM functions are defined using a specific toolchain attribute

  "__attribute__((section(".RamFunc")))".

*/

#define __RAM_FUNC __attribute__((section(".RamFunc")))

#endif

This topic has been closed for replies.
Best answer by Ozone

> The crazy thing is that __RAM_FUNC gets defined in stm32l4xx_hal_def.h, and stm32l4xx_hal_def.h is included in stm32l4xx_hal_flash_ramfunc.h, but somehow the compiler fails to register this??

Not necessarily.

There is no un-conditional # else branch, if your toolchain does not support it (falls into one of the # if / # elif branches), it remains undefined.

For a start, you could conditionally define it to nothing (like the __CC_ARM branch), and drop the RAM function feature.

It is rarely a functional requirement, often only for performance.

2 replies

Ozone
OzoneAnswer
Principal
November 3, 2020

> The crazy thing is that __RAM_FUNC gets defined in stm32l4xx_hal_def.h, and stm32l4xx_hal_def.h is included in stm32l4xx_hal_flash_ramfunc.h, but somehow the compiler fails to register this??

Not necessarily.

There is no un-conditional # else branch, if your toolchain does not support it (falls into one of the # if / # elif branches), it remains undefined.

For a start, you could conditionally define it to nothing (like the __CC_ARM branch), and drop the RAM function feature.

It is rarely a functional requirement, often only for performance.

DNeet.1
DNeet.1Author
Associate III
November 3, 2020

Thanks, I will try that. For now I just deleted the code which caused the bugs, however it keeps being regenerated by the IDE

Technical Moderator
November 3, 2020

Hi @DNeet.1​ ,

Please mark the post as a Best Answer if it solved your problem, so that this thread will be marked as solved

Imen

When your question is answered, please close this topic by clicking "Accept as Solution".Thanks Imen