linker: arm: add stm32 ccm sections

The STM32 has special Core Coupled Memory, ccm for short, that can
only be accessed through the CPU and can not be use for DMA.

The following 3 sections have been added.
- ccm_bss for zero initialized data
- ccm_data for initialized data
- ccm_noinit for uninitialized data

Signed-off-by: Erwin Rol <erwin@erwinrol.com>
This commit is contained in:
Erwin Rol 2017-10-05 01:20:21 +02:00 committed by Kumar Gala
commit 581446d8cd
4 changed files with 63 additions and 0 deletions

View file

@ -235,6 +235,19 @@ extern char _vector_end[];
/* end address of image, used by newlib for the heap */
extern char _end[];
#ifdef CONFIG_CCM_BASE_ADDRESS
extern char __ccm_data_rom_start[];
extern char __ccm_start[];
extern char __ccm_data_start[];
extern char __ccm_data_end[];
extern char __ccm_bss_start[];
extern char __ccm_bss_end[];
extern char __ccm_noinit_start[];
extern char __ccm_noinit_end[];
extern char __ccm_end[];
#endif /* CONFIG_CCM_BASE_ADDRESS */
#endif /* ! _ASMLANGUAGE */
#endif /* _LINKERDEFS_H */

View file

@ -20,6 +20,9 @@
#if defined(CONFIG_ARM)
#define __kinetis_flash_config_section __in_section_unique(KINETIS_FLASH_CONFIG)
#define __ti_ccfg_section _GENERIC_SECTION(TI_CCFG)
#define __ccm_data_section _GENERIC_SECTION(_CCM_DATA_SECTION_NAME)
#define __ccm_bss_section _GENERIC_SECTION(_CCM_BSS_SECTION_NAME)
#define __ccm_noinit_section _GENERIC_SECTION(_CCM_NOINIT_SECTION_NAME)
#endif /* CONFIG_ARM */
#endif /* !_ASMLANGUAGE */

View file

@ -51,6 +51,11 @@
#if defined(CONFIG_ARM)
#define KINETIS_FLASH_CONFIG kinetis_flash_config
#define TI_CCFG .ti_ccfg
#define _CCM_DATA_SECTION_NAME ccm_data
#define _CCM_BSS_SECTION_NAME ccm_bss
#define _CCM_NOINIT_SECTION_NAME ccm_noinit
#endif
#include <linker/section_tags.h>