Merge branch 'master' into K20D50

pull/135/head
0xc0170 2013-12-26 09:05:11 +01:00
commit 15e246fc9f
8 changed files with 69 additions and 37 deletions

View File

@ -145,6 +145,7 @@ SECTIONS
. = ALIGN(4) ;
_ebss = .;
PROVIDE(end = .);
__end__ = .;
} > RamLoc8
PROVIDE(_pvHeapStart = .);

View File

@ -9,7 +9,7 @@ extern "C" {
void ResetISR (void);
WEAK void NMI_Handler (void);
WEAK void HardFault_Handler (void);
WEAK void SVCall_Handler (void);
WEAK void SVC_Handler (void);
WEAK void PendSV_Handler (void);
WEAK void SysTick_Handler (void);
WEAK void IntDefaultHandler (void);
@ -57,7 +57,7 @@ void (* const g_pfnVectors[])(void) = {
0,
0,
0,
SVCall_Handler,
SVC_Handler,
0,
0,
PendSV_Handler,
@ -113,6 +113,8 @@ extern unsigned int __data_section_table;
extern unsigned int __data_section_table_end;
extern unsigned int __bss_section_table_end;
extern "C" void software_init_hook(void) __attribute__((weak));
AFTER_VECTORS void ResetISR(void) {
unsigned int LoadAddr, ExeAddr, SectionLen;
unsigned int *SectionTableAddr;
@ -134,14 +136,18 @@ AFTER_VECTORS void ResetISR(void) {
}
SystemInit();
__libc_init_array();
main();
if (software_init_hook) // give control to the RTOS
software_init_hook(); // this will also call __libc_init_array
else {
__libc_init_array();
main();
}
while (1) {;}
}
AFTER_VECTORS void NMI_Handler (void) {while(1){}}
AFTER_VECTORS void HardFault_Handler(void) {while(1){}}
AFTER_VECTORS void SVCall_Handler (void) {while(1){}}
AFTER_VECTORS void SVC_Handler (void) {while(1){}}
AFTER_VECTORS void PendSV_Handler (void) {while(1){}}
AFTER_VECTORS void SysTick_Handler (void) {while(1){}}
AFTER_VECTORS void IntDefaultHandler(void) {while(1){}}

View File

@ -9,7 +9,7 @@ extern "C" {
void ResetISR (void);
WEAK void NMI_Handler (void);
WEAK void HardFault_Handler (void);
WEAK void SVCall_Handler (void);
WEAK void SVC_Handler (void);
WEAK void PendSV_Handler (void);
WEAK void SysTick_Handler (void);
WEAK void IntDefaultHandler (void);
@ -57,7 +57,7 @@ void (* const g_pfnVectors[])(void) = {
0,
0,
0,
SVCall_Handler,
SVC_Handler,
0,
0,
PendSV_Handler,
@ -113,6 +113,8 @@ extern unsigned int __data_section_table;
extern unsigned int __data_section_table_end;
extern unsigned int __bss_section_table_end;
extern "C" void software_init_hook(void) __attribute__((weak));
AFTER_VECTORS void ResetISR(void) {
unsigned int LoadAddr, ExeAddr, SectionLen;
unsigned int *SectionTableAddr;
@ -134,14 +136,18 @@ AFTER_VECTORS void ResetISR(void) {
}
SystemInit();
__libc_init_array();
main();
if (software_init_hook) // give control to the RTOS
software_init_hook(); // this will also call __libc_init_array
else {
__libc_init_array();
main();
}
while (1) {;}
}
AFTER_VECTORS void NMI_Handler (void) {while(1){}}
AFTER_VECTORS void HardFault_Handler(void) {while(1){}}
AFTER_VECTORS void SVCall_Handler (void) {while(1){}}
AFTER_VECTORS void SVC_Handler (void) {while(1){}}
AFTER_VECTORS void PendSV_Handler (void) {while(1){}}
AFTER_VECTORS void SysTick_Handler (void) {while(1){}}
AFTER_VECTORS void IntDefaultHandler(void) {while(1){}}

View File

@ -146,6 +146,7 @@ SECTIONS
. = ALIGN(4) ;
_ebss = .;
PROVIDE(end = .);
__end__ = .;
} > RamLoc32
PROVIDE(_pvHeapStart = .);

View File

@ -22,7 +22,7 @@ WEAK void HardFault_Handler (void);
WEAK void MemManage_Handler (void);
WEAK void BusFault_Handler (void);
WEAK void UsageFault_Handler(void);
WEAK void SVCall_Handler (void);
WEAK void SVC_Handler (void);
WEAK void DebugMon_Handler (void);
WEAK void PendSV_Handler (void);
WEAK void SysTick_Handler (void);
@ -75,7 +75,7 @@ void (* const g_pfnVectors[])(void) = {
0,
0,
0,
SVCall_Handler,
SVC_Handler,
DebugMon_Handler,
0,
PendSV_Handler,
@ -130,6 +130,8 @@ AFTER_VECTORS void bss_init(unsigned int start, unsigned int len) {
for (loop = 0; loop < len; loop = loop + 4) *pulDest++ = 0;
}
extern "C" void software_init_hook(void) __attribute__((weak));
AFTER_VECTORS void ResetISR(void) {
unsigned int LoadAddr, ExeAddr, SectionLen;
unsigned int *SectionTableAddr;
@ -149,8 +151,12 @@ AFTER_VECTORS void ResetISR(void) {
}
SystemInit();
__libc_init_array();
main();
if (software_init_hook) // give control to the RTOS
software_init_hook(); // this will also call __libc_init_array
else {
__libc_init_array();
main();
}
while (1) {;}
}
@ -159,7 +165,7 @@ AFTER_VECTORS void HardFault_Handler (void) {}
AFTER_VECTORS void MemManage_Handler (void) {}
AFTER_VECTORS void BusFault_Handler (void) {}
AFTER_VECTORS void UsageFault_Handler(void) {}
AFTER_VECTORS void SVCall_Handler (void) {}
AFTER_VECTORS void SVC_Handler (void) {}
AFTER_VECTORS void DebugMon_Handler (void) {}
AFTER_VECTORS void PendSV_Handler (void) {}
AFTER_VECTORS void SysTick_Handler (void) {}

View File

@ -156,6 +156,7 @@ SECTIONS
. = ALIGN(4) ;
_ebss = .;
PROVIDE(end = .);
__end__ = .;
} > RamLoc64
/* NOINIT section for RamPeriph32 */

View File

@ -259,6 +259,9 @@ extern unsigned int __bss_section_table_end;
// Sets up a simple runtime environment and initializes the C/C++
// library.
//*****************************************************************************
extern "C" void software_init_hook(void) __attribute__((weak));
__attribute__ ((section(".after_vectors")))
void
ResetISR(void) {
@ -319,21 +322,23 @@ ResetISR(void) {
//#ifdef __USE_CMSIS
SystemInit();
//#endif
if (software_init_hook) // give control to the RTOS
software_init_hook(); // this will also call __libc_init_array
else {
#if defined (__cplusplus)
//
// Call C++ library initialisation
//
__libc_init_array();
//
// Call C++ library initialisation
//
__libc_init_array();
#endif
#if defined (__REDLIB__)
// Call the Redlib library, which in turn calls main()
__main() ;
// Call the Redlib library, which in turn calls main()
__main() ;
#else
main();
main();
#endif
}
//
// main() shouldn't return, but if it does, we'll just enter an infinite loop
//

View File

@ -312,6 +312,9 @@ extern unsigned int __bss_section_table_end;
// library.
//
// *****************************************************************************
extern "C" void software_init_hook(void) __attribute__((weak));
void
ResetISR(void) {
@ -342,20 +345,23 @@ ResetISR(void) {
bss_init(ExeAddr, SectionLen);
}
#if defined(__cplusplus)
//
// Call C++ library initialisation
//
__libc_init_array();
#endif
#if defined(__REDLIB__)
// Call the Redlib library, which in turn calls main()
__main();
#else
main();
#endif
if (software_init_hook) // give control to the RTOS
software_init_hook(); // this will also call __libc_init_array
else {
#if defined(__cplusplus)
//
// Call C++ library initialisation
//
__libc_init_array();
#endif
#if defined(__REDLIB__)
// Call the Redlib library, which in turn calls main()
__main();
#else
main();
#endif
}
//
// main() shouldn't return, but if it does, we'll just enter an infinite loop
//