CMSIS-DSP: Corrected compilation warnings
More compilation tests done with AC5pull/19/head
parent
dc0be10d4e
commit
2e12da1043
@ -0,0 +1,77 @@
|
|||||||
|
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-a5 -xc
|
||||||
|
;**************************************************
|
||||||
|
; Copyright (c) 2017 ARM Ltd. All rights reserved.
|
||||||
|
;**************************************************
|
||||||
|
|
||||||
|
; Scatter-file for RTX Example on Versatile Express
|
||||||
|
|
||||||
|
; This scatter-file places application code, data, stack and heap at suitable addresses in the memory map.
|
||||||
|
|
||||||
|
; This platform has 2GB SDRAM starting at 0x80000000.
|
||||||
|
|
||||||
|
#include "mem_ARMCA5.h"
|
||||||
|
|
||||||
|
SDRAM __ROM_BASE __ROM_SIZE ; load region size_region
|
||||||
|
{
|
||||||
|
VECTORS __ROM_BASE __ROM_SIZE ; load address = execution address
|
||||||
|
{
|
||||||
|
* (RESET, +FIRST) ; Vector table and other startup code
|
||||||
|
* (InRoot$$Sections) ; All (library) code that must be in a root region
|
||||||
|
* (+RO-CODE) ; Application RO code (.text)
|
||||||
|
* (+RO-DATA) ; Application RO data (.constdata)
|
||||||
|
}
|
||||||
|
|
||||||
|
RW_DATA __RAM_BASE __RW_DATA_SIZE
|
||||||
|
{ * (+RW) } ; Application RW data (.data)
|
||||||
|
|
||||||
|
ZI_DATA (__RAM_BASE+
|
||||||
|
__RW_DATA_SIZE) __ZI_DATA_SIZE
|
||||||
|
{ * (+ZI) } ; Application ZI data (.bss)
|
||||||
|
|
||||||
|
ARM_LIB_HEAP (__RAM_BASE
|
||||||
|
+__RW_DATA_SIZE
|
||||||
|
+__ZI_DATA_SIZE) EMPTY __HEAP_SIZE ; Heap region growing up
|
||||||
|
{ }
|
||||||
|
|
||||||
|
ARM_LIB_STACK (__RAM_BASE
|
||||||
|
+__RAM_SIZE
|
||||||
|
-__FIQ_STACK_SIZE
|
||||||
|
-__IRQ_STACK_SIZE
|
||||||
|
-__SVC_STACK_SIZE
|
||||||
|
-__ABT_STACK_SIZE
|
||||||
|
-__UND_STACK_SIZE) EMPTY -__STACK_SIZE ; Stack region growing down
|
||||||
|
{ }
|
||||||
|
|
||||||
|
UND_STACK (__RAM_BASE
|
||||||
|
+__RAM_SIZE
|
||||||
|
-__FIQ_STACK_SIZE
|
||||||
|
-__IRQ_STACK_SIZE
|
||||||
|
-__SVC_STACK_SIZE
|
||||||
|
-__ABT_STACK_SIZE) EMPTY -__UND_STACK_SIZE ; UND mode stack
|
||||||
|
{ }
|
||||||
|
|
||||||
|
ABT_STACK (__RAM_BASE
|
||||||
|
+__RAM_SIZE
|
||||||
|
-__FIQ_STACK_SIZE
|
||||||
|
-__IRQ_STACK_SIZE
|
||||||
|
-__SVC_STACK_SIZE) EMPTY -__ABT_STACK_SIZE ; ABT mode stack
|
||||||
|
{ }
|
||||||
|
|
||||||
|
SVC_STACK (__RAM_BASE
|
||||||
|
+__RAM_SIZE
|
||||||
|
-__FIQ_STACK_SIZE
|
||||||
|
-__IRQ_STACK_SIZE) EMPTY -__SVC_STACK_SIZE ; SVC mode stack
|
||||||
|
{ }
|
||||||
|
|
||||||
|
IRQ_STACK (__RAM_BASE
|
||||||
|
+__RAM_SIZE
|
||||||
|
-__FIQ_STACK_SIZE) EMPTY -__IRQ_STACK_SIZE ; IRQ mode stack
|
||||||
|
{ }
|
||||||
|
|
||||||
|
FIQ_STACK (__RAM_BASE
|
||||||
|
+__RAM_SIZE) EMPTY -__FIQ_STACK_SIZE ; FIQ mode stack
|
||||||
|
{ }
|
||||||
|
|
||||||
|
TTB __TTB_BASE EMPTY __TTB_SIZE ; Level-1 Translation Table for MMU
|
||||||
|
{ }
|
||||||
|
}
|
||||||
@ -0,0 +1,101 @@
|
|||||||
|
/**************************************************************************//**
|
||||||
|
* @file mem_ARMCA5.h
|
||||||
|
* @brief Memory base and size definitions (used in scatter file)
|
||||||
|
* @version V1.1.0
|
||||||
|
* @date 15. May 2019
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2009-2019 Arm Limited. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MEM_ARMCA5_H
|
||||||
|
#define __MEM_ARMCA5_H
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
User Stack & Heap size definition
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*--------------------- ROM Configuration ------------------------------------
|
||||||
|
//
|
||||||
|
// <h> ROM Configuration
|
||||||
|
// <i> For compatibility with MMU config the sections must be multiple of 1MB
|
||||||
|
// <o0> ROM Base Address <0x0-0xFFFFFFFF:0x100000>
|
||||||
|
// <o1> ROM Size (in Bytes) <0x0-0xFFFFFFFF:0x100000>
|
||||||
|
// </h>
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define __ROM_BASE 0x80000000
|
||||||
|
#define __ROM_SIZE 0x00400000
|
||||||
|
|
||||||
|
/*--------------------- RAM Configuration -----------------------------------
|
||||||
|
// <h> RAM Configuration
|
||||||
|
// <i> For compatibility with MMU config the sections must be multiple of 1MB
|
||||||
|
// <o0> RAM Base Address <0x0-0xFFFFFFFF:0x100000>
|
||||||
|
// <o1> RAM Total Size (in Bytes) <0x0-0xFFFFFFFF:0x100000>
|
||||||
|
// <h> Data Sections
|
||||||
|
// <o2> RW_DATA Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
// <o3> ZI_DATA Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
// </h>
|
||||||
|
// <h> Stack / Heap Configuration
|
||||||
|
// <o4> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
// <o5> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
// <h> Exceptional Modes
|
||||||
|
// <o6> UND Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
// <o7> ABT Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
// <o8> SVC Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
// <o9> IRQ Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
// <o10> FIQ Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
// </h>
|
||||||
|
// </h>
|
||||||
|
// </h>
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
//#define __RAM_BASE 0x80200000#
|
||||||
|
#define __RAM_BASE 0x80600000
|
||||||
|
#define __RAM_SIZE 0x00700000
|
||||||
|
|
||||||
|
#define __RW_DATA_SIZE 0x00200000
|
||||||
|
#define __ZI_DATA_SIZE 0x00200000
|
||||||
|
|
||||||
|
#define __STACK_SIZE 0x00007000
|
||||||
|
#define __HEAP_SIZE 0x00200000
|
||||||
|
|
||||||
|
#define __UND_STACK_SIZE 0x00000100
|
||||||
|
#define __ABT_STACK_SIZE 0x00000100
|
||||||
|
#define __SVC_STACK_SIZE 0x00000100
|
||||||
|
#define __IRQ_STACK_SIZE 0x00000100
|
||||||
|
#define __FIQ_STACK_SIZE 0x00000100
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*--------------------- TTB Configuration ------------------------------------
|
||||||
|
//
|
||||||
|
// <h> TTB Configuration
|
||||||
|
// <i> The TLB L1 contains 4096 32-bit entries and must be 16kB aligned
|
||||||
|
// <i> The TLB L2 entries are placed after the L1 in the MMU config
|
||||||
|
// <o0> TTB Base Address <0x0-0xFFFFFFFF:0x4000>
|
||||||
|
// <o1> TTB Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
// </h>
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define __TTB_BASE 0x80500000
|
||||||
|
#define __TTB_SIZE 0x00005000
|
||||||
|
|
||||||
|
#endif /* __MEM_ARMCA5_H */
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* @file system_ARMCA5.h
|
||||||
|
* @brief CMSIS Device System Header File for Arm Cortex-A5 Device Series
|
||||||
|
* @version V1.00
|
||||||
|
* @date 10. January 2018
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2009-2018 Arm Limited. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __SYSTEM_ARMCA5_H
|
||||||
|
#define __SYSTEM_ARMCA5_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Setup the microcontroller system.
|
||||||
|
|
||||||
|
Initialize the System and update the SystemCoreClock variable.
|
||||||
|
*/
|
||||||
|
extern void SystemInit (void);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Update SystemCoreClock variable.
|
||||||
|
|
||||||
|
Updates the SystemCoreClock with current core Clock retrieved from cpu registers.
|
||||||
|
*/
|
||||||
|
extern void SystemCoreClockUpdate (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Create Translation Table.
|
||||||
|
|
||||||
|
Creates Memory Management Unit Translation Table.
|
||||||
|
*/
|
||||||
|
extern void MMU_CreateTranslationTable(void);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __SYSTEM_ARMCA5_H */
|
||||||
@ -0,0 +1,138 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* @file startup_ARMCA5.c
|
||||||
|
* @brief CMSIS Device System Source File for Arm Cortex-A5 Device Series
|
||||||
|
* @version V1.00
|
||||||
|
* @date 10. January 2018
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2009-2018 Arm Limited. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ARMCA5.h>
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Definitions
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define USR_MODE 0x10 // User mode
|
||||||
|
#define FIQ_MODE 0x11 // Fast Interrupt Request mode
|
||||||
|
#define IRQ_MODE 0x12 // Interrupt Request mode
|
||||||
|
#define SVC_MODE 0x13 // Supervisor mode
|
||||||
|
#define ABT_MODE 0x17 // Abort mode
|
||||||
|
#define UND_MODE 0x1B // Undefined Instruction mode
|
||||||
|
#define SYS_MODE 0x1F // System mode
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Internal References
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void Vectors (void) __attribute__ ((naked, section("RESET")));
|
||||||
|
void Reset_Handler (void) __attribute__ ((naked));
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Exception / Interrupt Handler
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void Undef_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||||
|
void SVC_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||||
|
void PAbt_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||||
|
void DAbt_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||||
|
void IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||||
|
void FIQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Exception / Interrupt Vector Table
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void Vectors(void) {
|
||||||
|
__ASM volatile(
|
||||||
|
"LDR PC, =Reset_Handler \n"
|
||||||
|
"LDR PC, =Undef_Handler \n"
|
||||||
|
"LDR PC, =SVC_Handler \n"
|
||||||
|
"LDR PC, =PAbt_Handler \n"
|
||||||
|
"LDR PC, =DAbt_Handler \n"
|
||||||
|
"NOP \n"
|
||||||
|
"LDR PC, =IRQ_Handler \n"
|
||||||
|
"LDR PC, =FIQ_Handler \n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Reset Handler called on controller reset
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void Reset_Handler(void) {
|
||||||
|
__ASM volatile(
|
||||||
|
|
||||||
|
// Mask interrupts
|
||||||
|
"CPSID if \n"
|
||||||
|
|
||||||
|
// Put any cores other than 0 to sleep
|
||||||
|
"MRC p15, 0, R0, c0, c0, 5 \n" // Read MPIDR
|
||||||
|
"ANDS R0, R0, #3 \n"
|
||||||
|
"goToSleep: \n"
|
||||||
|
"WFINE \n"
|
||||||
|
"BNE goToSleep \n"
|
||||||
|
|
||||||
|
// Reset SCTLR Settings
|
||||||
|
"MRC p15, 0, R0, c1, c0, 0 \n" // Read CP15 System Control register
|
||||||
|
"BIC R0, R0, #(0x1 << 12) \n" // Clear I bit 12 to disable I Cache
|
||||||
|
"BIC R0, R0, #(0x1 << 2) \n" // Clear C bit 2 to disable D Cache
|
||||||
|
"BIC R0, R0, #0x1 \n" // Clear M bit 0 to disable MMU
|
||||||
|
"BIC R0, R0, #(0x1 << 11) \n" // Clear Z bit 11 to disable branch prediction
|
||||||
|
"BIC R0, R0, #(0x1 << 13) \n" // Clear V bit 13 to disable hivecs
|
||||||
|
"MCR p15, 0, R0, c1, c0, 0 \n" // Write value back to CP15 System Control register
|
||||||
|
"ISB \n"
|
||||||
|
|
||||||
|
// Configure ACTLR
|
||||||
|
"MRC p15, 0, r0, c1, c0, 1 \n" // Read CP15 Auxiliary Control Register
|
||||||
|
"ORR r0, r0, #(1 << 1) \n" // Enable L2 prefetch hint (UNK/WI since r4p1)
|
||||||
|
"MCR p15, 0, r0, c1, c0, 1 \n" // Write CP15 Auxiliary Control Register
|
||||||
|
|
||||||
|
// Set Vector Base Address Register (VBAR) to point to this application's vector table
|
||||||
|
"LDR R0, =Vectors \n"
|
||||||
|
"MCR p15, 0, R0, c12, c0, 0 \n"
|
||||||
|
|
||||||
|
// Setup Stack for each exceptional mode
|
||||||
|
"CPS #0x11 \n"
|
||||||
|
"LDR SP, =Image$$FIQ_STACK$$ZI$$Limit \n"
|
||||||
|
"CPS #0x12 \n"
|
||||||
|
"LDR SP, =Image$$IRQ_STACK$$ZI$$Limit \n"
|
||||||
|
"CPS #0x13 \n"
|
||||||
|
"LDR SP, =Image$$SVC_STACK$$ZI$$Limit \n"
|
||||||
|
"CPS #0x17 \n"
|
||||||
|
"LDR SP, =Image$$ABT_STACK$$ZI$$Limit \n"
|
||||||
|
"CPS #0x1B \n"
|
||||||
|
"LDR SP, =Image$$UND_STACK$$ZI$$Limit \n"
|
||||||
|
"CPS #0x1F \n"
|
||||||
|
"LDR SP, =Image$$ARM_LIB_STACK$$ZI$$Limit \n"
|
||||||
|
|
||||||
|
// Call SystemInit
|
||||||
|
"BL SystemInit \n"
|
||||||
|
|
||||||
|
// Unmask interrupts
|
||||||
|
"CPSIE if \n"
|
||||||
|
|
||||||
|
// Call __main
|
||||||
|
"BL __main \n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Default Handler for Exceptions / Interrupts
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void Default_Handler(void) {
|
||||||
|
while(1);
|
||||||
|
}
|
||||||
@ -0,0 +1,75 @@
|
|||||||
|
#! armcc -E
|
||||||
|
; command above MUST be in first line (no comment above!)
|
||||||
|
|
||||||
|
/*
|
||||||
|
;-------- <<< Use Configuration Wizard in Context Menu >>> -------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "mem_ARMCM0.h"
|
||||||
|
|
||||||
|
/*--------------------- Flash Configuration ----------------------------------
|
||||||
|
; <h> Flash Configuration
|
||||||
|
; <o0> Flash Base Address <0x0-0xFFFFFFFF:8>
|
||||||
|
; <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define __ROM_BASE 0x00000000
|
||||||
|
#define __ROM_SIZE 0x00200000
|
||||||
|
|
||||||
|
/*--------------------- Embedded RAM Configuration ---------------------------
|
||||||
|
; <h> RAM Configuration
|
||||||
|
; <o0> RAM Base Address <0x0-0xFFFFFFFF:8>
|
||||||
|
; <o1> RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define __RAM_BASE 0x20000000
|
||||||
|
#define __RAM_SIZE 0x00200000
|
||||||
|
|
||||||
|
/*--------------------- Stack / Heap Configuration ---------------------------
|
||||||
|
; <h> Stack / Heap Configuration
|
||||||
|
; <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define __STACK_SIZE STACK_SIZE
|
||||||
|
#define __HEAP_SIZE HEAP_SIZE
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
User Stack & Heap boundery definition
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define __STACK_TOP (__RAM_BASE + __RAM_SIZE) /* starts at end of RAM */
|
||||||
|
#define __HEAP_BASE (AlignExpr(+0, 8)) /* starts after RW_RAM section, 8 byte aligned */
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Scatter File Definitions definition
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define __RO_BASE __ROM_BASE
|
||||||
|
#define __RO_SIZE __ROM_SIZE
|
||||||
|
|
||||||
|
#define __RW_BASE (__RAM_BASE )
|
||||||
|
#define __RW_SIZE (__RAM_SIZE - __STACK_SIZE - __HEAP_SIZE)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
LR_ROM __RO_BASE __RO_SIZE { ; load region size_region
|
||||||
|
ER_ROM __RO_BASE __RO_SIZE { ; load address = execution address
|
||||||
|
*.o (RESET, +First)
|
||||||
|
*(InRoot$$Sections)
|
||||||
|
.ANY (+RO)
|
||||||
|
.ANY (+XO)
|
||||||
|
}
|
||||||
|
|
||||||
|
RW_RAM __RW_BASE __RW_SIZE { ; RW data
|
||||||
|
.ANY (+RW +ZI)
|
||||||
|
}
|
||||||
|
|
||||||
|
#if __HEAP_SIZE > 0
|
||||||
|
ARM_LIB_HEAP __HEAP_BASE EMPTY __HEAP_SIZE { ; Reserve empty region for heap
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ARM_LIB_STACK __STACK_TOP EMPTY -__STACK_SIZE { ; Reserve empty region for stack
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
/**************************************************************************//**
|
||||||
|
* @file mem_ARMCM7.h
|
||||||
|
* @brief Memory base and size definitions (used in scatter file)
|
||||||
|
* @version V1.1.0
|
||||||
|
* @date 15. May 2019
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2009-2019 Arm Limited. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MEM_ARMCM0_H
|
||||||
|
#define __MEM_ARMCM0_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define STACK_SIZE 0x00003000
|
||||||
|
#define HEAP_SIZE 0x00100000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MEM_ARMCM0_H */
|
||||||
@ -0,0 +1,168 @@
|
|||||||
|
;/**************************************************************************//**
|
||||||
|
; * @file startup_ARMCM7.s
|
||||||
|
; * @brief CMSIS Core Device Startup File for
|
||||||
|
; * ARMCM7 Device
|
||||||
|
; * @version V5.4.0
|
||||||
|
; * @date 12. December 2018
|
||||||
|
; ******************************************************************************/
|
||||||
|
;/*
|
||||||
|
; * Copyright (c) 2009-2018 Arm Limited. All rights reserved.
|
||||||
|
; *
|
||||||
|
; * SPDX-License-Identifier: Apache-2.0
|
||||||
|
; *
|
||||||
|
; * Licensed under the Apache License, Version 2.0 (the License); you may
|
||||||
|
; * not use this file except in compliance with the License.
|
||||||
|
; * You may obtain a copy of the License at
|
||||||
|
; *
|
||||||
|
; * www.apache.org/licenses/LICENSE-2.0
|
||||||
|
; *
|
||||||
|
; * Unless required by applicable law or agreed to in writing, software
|
||||||
|
; * distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||||||
|
; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
; * See the License for the specific language governing permissions and
|
||||||
|
; * limitations under the License.
|
||||||
|
; */
|
||||||
|
|
||||||
|
;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
|
||||||
|
|
||||||
|
#include "mem_ARMCM0.h"
|
||||||
|
|
||||||
|
;<h> Stack Configuration
|
||||||
|
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
;</h>
|
||||||
|
|
||||||
|
Stack_Size EQU STACK_SIZE
|
||||||
|
|
||||||
|
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||||
|
__stack_limit
|
||||||
|
Stack_Mem SPACE Stack_Size
|
||||||
|
__initial_sp
|
||||||
|
|
||||||
|
|
||||||
|
;<h> Heap Configuration
|
||||||
|
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
;</h>
|
||||||
|
|
||||||
|
Heap_Size EQU HEAP_SIZE
|
||||||
|
|
||||||
|
IF Heap_Size != 0 ; Heap is provided
|
||||||
|
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||||
|
__heap_base
|
||||||
|
Heap_Mem SPACE Heap_Size
|
||||||
|
__heap_limit
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
|
||||||
|
PRESERVE8
|
||||||
|
THUMB
|
||||||
|
|
||||||
|
|
||||||
|
; Vector Table Mapped to Address 0 at Reset
|
||||||
|
|
||||||
|
AREA RESET, DATA, READONLY
|
||||||
|
EXPORT __Vectors
|
||||||
|
EXPORT __Vectors_End
|
||||||
|
EXPORT __Vectors_Size
|
||||||
|
|
||||||
|
__Vectors DCD __initial_sp ; Top of Stack
|
||||||
|
DCD Reset_Handler ; Reset Handler
|
||||||
|
DCD NMI_Handler ; -14 NMI Handler
|
||||||
|
DCD HardFault_Handler ; -13 Hard Fault Handler
|
||||||
|
DCD MemManage_Handler ; -12 MPU Fault Handler
|
||||||
|
DCD BusFault_Handler ; -11 Bus Fault Handler
|
||||||
|
DCD UsageFault_Handler ; -10 Usage Fault Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SVC_Handler ; -5 SVCall Handler
|
||||||
|
DCD DebugMon_Handler ; -4 Debug Monitor Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PendSV_Handler ; -2 PendSV Handler
|
||||||
|
DCD SysTick_Handler ; -1 SysTick Handler
|
||||||
|
|
||||||
|
; Interrupts
|
||||||
|
DCD Interrupt0_Handler ; 0 Interrupt 0
|
||||||
|
DCD Interrupt1_Handler ; 1 Interrupt 1
|
||||||
|
DCD Interrupt2_Handler ; 2 Interrupt 2
|
||||||
|
DCD Interrupt3_Handler ; 3 Interrupt 3
|
||||||
|
DCD Interrupt4_Handler ; 4 Interrupt 4
|
||||||
|
DCD Interrupt5_Handler ; 5 Interrupt 5
|
||||||
|
DCD Interrupt6_Handler ; 6 Interrupt 6
|
||||||
|
DCD Interrupt7_Handler ; 7 Interrupt 7
|
||||||
|
DCD Interrupt8_Handler ; 8 Interrupt 8
|
||||||
|
DCD Interrupt9_Handler ; 9 Interrupt 9
|
||||||
|
|
||||||
|
SPACE (214 * 4) ; Interrupts 10 .. 224 are left out
|
||||||
|
__Vectors_End
|
||||||
|
__Vectors_Size EQU __Vectors_End - __Vectors
|
||||||
|
|
||||||
|
|
||||||
|
AREA |.text|, CODE, READONLY
|
||||||
|
|
||||||
|
; Reset Handler
|
||||||
|
|
||||||
|
Reset_Handler PROC
|
||||||
|
EXPORT Reset_Handler [WEAK]
|
||||||
|
IMPORT SystemInit
|
||||||
|
IMPORT __main
|
||||||
|
|
||||||
|
LDR R0, =SystemInit
|
||||||
|
BLX R0
|
||||||
|
LDR R0, =__main
|
||||||
|
BX R0
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
|
||||||
|
; Macro to define default exception/interrupt handlers.
|
||||||
|
; Default handler are weak symbols with an endless loop.
|
||||||
|
; They can be overwritten by real handlers.
|
||||||
|
MACRO
|
||||||
|
Set_Default_Handler $Handler_Name
|
||||||
|
$Handler_Name PROC
|
||||||
|
EXPORT $Handler_Name [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
MEND
|
||||||
|
|
||||||
|
|
||||||
|
; Default exception/interrupt handler
|
||||||
|
|
||||||
|
Set_Default_Handler NMI_Handler
|
||||||
|
Set_Default_Handler HardFault_Handler
|
||||||
|
Set_Default_Handler MemManage_Handler
|
||||||
|
Set_Default_Handler BusFault_Handler
|
||||||
|
Set_Default_Handler UsageFault_Handler
|
||||||
|
Set_Default_Handler SVC_Handler
|
||||||
|
Set_Default_Handler DebugMon_Handler
|
||||||
|
Set_Default_Handler PendSV_Handler
|
||||||
|
Set_Default_Handler SysTick_Handler
|
||||||
|
|
||||||
|
Set_Default_Handler Interrupt0_Handler
|
||||||
|
Set_Default_Handler Interrupt1_Handler
|
||||||
|
Set_Default_Handler Interrupt2_Handler
|
||||||
|
Set_Default_Handler Interrupt3_Handler
|
||||||
|
Set_Default_Handler Interrupt4_Handler
|
||||||
|
Set_Default_Handler Interrupt5_Handler
|
||||||
|
Set_Default_Handler Interrupt6_Handler
|
||||||
|
Set_Default_Handler Interrupt7_Handler
|
||||||
|
Set_Default_Handler Interrupt8_Handler
|
||||||
|
Set_Default_Handler Interrupt9_Handler
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
|
||||||
|
|
||||||
|
; User setup Stack & Heap
|
||||||
|
|
||||||
|
IF :LNOT::DEF:__MICROLIB
|
||||||
|
IMPORT __use_two_region_memory
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
EXPORT __stack_limit
|
||||||
|
EXPORT __initial_sp
|
||||||
|
IF Heap_Size != 0 ; Heap is provided
|
||||||
|
EXPORT __heap_base
|
||||||
|
EXPORT __heap_limit
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
END
|
||||||
Loading…
Reference in New Issue