Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
6 years ago.
ARM Cortex-M4 (Nuvoton NUC472) not booting with External RAM on EBI Interface
Hi,
We are working on ARM Cortex-M4 (Nuvoton NUC472) based SoC as per our requirement.We are facing one critical issue like board is not booting when we enabled and used extrenal RAM on EBI.
We have ported following BSP package with below toolchain for NUC472.
BSP version : 3.03.000 (Downloaded from https://github.com/OpenNuvoton/NUC472_442BSP) Tool-chain Version : arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors 6-2017-q2-update) 6.3.1 20170620 (release).
We have created bare framework with above BSP and we are able to start the board with existing ld script provided in BSP with internal RAM support.
Now, We have added the support for external RAM of 512KB on EBI in linker script as per our requirement to move few libraries into external RAM.So, We have added one test library and placed in external ram to validate and test external RAM with our bare build. But, Board does not starts if we make any variable as extern to use from library which is placed into external RAM.
It is working fine If we are putting that library into internal RAM then board gets up and running without any stuck up issue.
Please find following CFLAGS and LDFLAGS options which we are using into our compilation support.
Quote:
CFLAGS : -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -g2 -Wall -c -DNUC442RI8AE -DFPU_USED -std=c99 -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -fno-short-enums
LDFLAGS :
-Wl,gc-sections
-Wl,-static
-Xlinker no-enum-size-warning
-Xlinker wrap=_malloc_r
-Xlinker wrap=_free_r
-Xlinker wrap=_calloc_r
-Xlinker wrap=_realloc_r
-Wl,start-group
-lgcc -lc -lm -lnosys
-Wl,end-group
Please find following list of libraries which we have moved into external RAM
test library FreeRTOS Heap Memory
Please find attached sample multi RAM linker script (for reference) /media/uploads/Ritesh236/gcc_arm_ext_ram.c and our own sample linker script /media/uploads/Ritesh236/multi-ram.c which we have used into our example
Also, Please find below code execution flow of our sample project on which external RAM on EBI is not working
1) On Board Boot Up, Linker script is calling Reset_Handler from which _start is called 2) after that main function will be called from main.c file of BSP 3) Then it will create Hardware Setup, EBI Init, Data Copy and init heap section 4) After that we have created one sample task to test freeRTOS functionality
So, check above details with linker script and let me know if need any more details from my side regarding same.