@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* This file is part of the CmBacktrace Library.
|
||||
*
|
||||
* Copyright (c) 2016, Armink, <armink.ztl@gmail.com>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* 'Software'), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Function: It is the configure head file for this library.
|
||||
* Created on: 2016-12-15
|
||||
*/
|
||||
|
||||
#ifndef _CMB_CFG_H_
|
||||
#define _CMB_CFG_H_
|
||||
|
||||
/* print line, must config by user */
|
||||
#define cmb_println(...) printf(__VA_ARGS__);printf("\r\n")
|
||||
/* enable OS platform */
|
||||
#define CMB_USING_OS_PLATFORM
|
||||
/* OS platform type, must config when CMB_USING_OS_PLATFORM is enable */
|
||||
#define CMB_OS_PLATFORM_TYPE CMB_OS_PLATFORM_UCOSII
|
||||
/* cpu platform type, must config by user */
|
||||
#define CMB_CPU_PLATFORM_TYPE CMB_CPU_ARM_CORTEX_M3
|
||||
/* enable dump stack information */
|
||||
#define CMB_USING_DUMP_STACK_INFO
|
||||
/* language of print information */
|
||||
#define CMB_PRINT_LANGUAGE CMB_PRINT_LANUUAGE_ENGLISH
|
||||
#endif /* _CMB_CFG_H_ */
|
||||
@@ -0,0 +1,406 @@
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*
|
||||
* BOARD SUPPORT PACKAGE
|
||||
*
|
||||
* ST Microelectronics STM32
|
||||
* with the
|
||||
* STM3210B-EVAL Evaluation Board
|
||||
*
|
||||
* Filename : bsp.c
|
||||
* Version : V1.00
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
#define BSP_MODULE
|
||||
|
||||
#include <bsp.h>
|
||||
#include <stdio.h>
|
||||
#include <ucos_ii.h>
|
||||
#include <cpu_core.h>
|
||||
#include <cm_backtrace.h>
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL TABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
#define DWT_CR *(CPU_REG32 *)0xE0001000
|
||||
#define DWT_CYCCNT *(CPU_REG32 *)0xE0001004
|
||||
#define DEM_CR *(CPU_REG32 *)0xE000EDFC
|
||||
#define DEM_CR_TRCENA (1 << 24)
|
||||
#define DWT_CR_CYCCNTENA (1 << 0)
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL GLOBAL VARIABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* RCC configuration
|
||||
*/
|
||||
static void RCC_Configuration(void)
|
||||
{
|
||||
//下面是给各模块开启时钟
|
||||
//启动GPIO
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | \
|
||||
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | \
|
||||
RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOG,
|
||||
ENABLE);
|
||||
|
||||
//启动AFIO
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
|
||||
//启动USART1时钟
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
|
||||
//启动USART2时钟
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
|
||||
//启动DMA时钟
|
||||
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
|
||||
/* Enable ADC1 and GPIOC clock */
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
|
||||
/* Enable WWDG clock */
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* NVIC Configuration
|
||||
*/
|
||||
static void NVIC_Configuration(void)
|
||||
{
|
||||
#if defined(VECT_TAB_RAM)
|
||||
// Set the Vector Table base location at 0x20000000
|
||||
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x00);
|
||||
#elif defined(VECT_TAB_FLASH)
|
||||
// Set the Vector Table base location at 0x08000000
|
||||
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);
|
||||
#elif defined(VECT_TAB_USER)
|
||||
// Set the Vector Table base location by user
|
||||
NVIC_SetVectorTable(NVIC_VectTab_FLASH, USER_VECTOR_TABLE);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* GPIO Configuration
|
||||
*/
|
||||
static void GPIO_Configuration(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOC, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOE, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOF, &GPIO_InitStructure);
|
||||
GPIO_Init(GPIOG, &GPIO_InitStructure);
|
||||
|
||||
/******************system run led*******************/
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
|
||||
/* USART1_TX */
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
/* USART1_RX */
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : USART1_Configuration
|
||||
* Description : USART1 Configuration
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void USART1_Configuration(void)
|
||||
{
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
|
||||
USART_InitStructure.USART_BaudRate = 115200;
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
||||
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
||||
USART_InitStructure.USART_Parity = USART_Parity_No;
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
|
||||
USART_Init(USART1, &USART_InitStructure);
|
||||
|
||||
USART_Cmd(USART1, ENABLE);
|
||||
|
||||
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : SysTick_Configuration
|
||||
* Description : Configures the SysTick for OS tick.
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void SysTick_Configuration(void)
|
||||
{
|
||||
RCC_ClocksTypeDef rcc_clocks;
|
||||
uint32_t cnts;
|
||||
|
||||
RCC_GetClocksFreq(&rcc_clocks);
|
||||
|
||||
#if (OS_VERSION >= 30000u)
|
||||
cnts = (rcc_clocks.HCLK_Frequency / OSCfg_TickRate_Hz); /* Determine nbr SysTick increments */
|
||||
#else
|
||||
cnts = (rcc_clocks.HCLK_Frequency / OS_TICKS_PER_SEC);
|
||||
#endif
|
||||
|
||||
SysTick_Config(cnts);
|
||||
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* CPU_TS_TmrInit()
|
||||
*
|
||||
* Description : Initialize & start CPU timestamp timer.
|
||||
*
|
||||
* Argument(s) : none.
|
||||
*
|
||||
* Return(s) : none.
|
||||
*
|
||||
* Caller(s) : CPU_TS_Init().
|
||||
*
|
||||
* This function is an INTERNAL CPU module function & MUST be implemented by application/
|
||||
* BSP function(s) [see Note #1] but MUST NOT be called by application function(s).
|
||||
*
|
||||
* Note(s) : (1) CPU_TS_TmrInit() is an application/BSP function that MUST be defined by the developer
|
||||
* if either of the following CPU features is enabled :
|
||||
*
|
||||
* (a) CPU timestamps
|
||||
* (b) CPU interrupts disabled time measurements
|
||||
*
|
||||
* See 'cpu_cfg.h CPU TIMESTAMP CONFIGURATION Note #1'
|
||||
* & 'cpu_cfg.h CPU INTERRUPTS DISABLED TIME MEASUREMENT CONFIGURATION Note #1a'.
|
||||
*
|
||||
* (2) (a) Timer count values MUST be returned via word-size-configurable 'CPU_TS_TMR'
|
||||
* data type.
|
||||
*
|
||||
* (1) If timer has more bits, truncate timer values' higher-order bits greater
|
||||
* than the configured 'CPU_TS_TMR' timestamp timer data type word size.
|
||||
*
|
||||
* (2) Since the timer MUST NOT have less bits than the configured 'CPU_TS_TMR'
|
||||
* timestamp timer data type word size; 'CPU_CFG_TS_TMR_SIZE' MUST be
|
||||
* configured so that ALL bits in 'CPU_TS_TMR' data type are significant.
|
||||
*
|
||||
* In other words, if timer size is not a binary-multiple of 8-bit octets
|
||||
* (e.g. 20-bits or even 24-bits), then the next lower, binary-multiple
|
||||
* octet word size SHOULD be configured (e.g. to 16-bits). However, the
|
||||
* minimum supported word size for CPU timestamp timers is 8-bits.
|
||||
*
|
||||
* See also 'cpu_cfg.h CPU TIMESTAMP CONFIGURATION Note #2'
|
||||
* & 'cpu_core.h CPU TIMESTAMP DATA TYPES Note #1'.
|
||||
*
|
||||
* (b) Timer SHOULD be an 'up' counter whose values increase with each time count.
|
||||
*
|
||||
* (c) When applicable, timer period SHOULD be less than the typical measured time
|
||||
* but MUST be less than the maximum measured time; otherwise, timer resolution
|
||||
* inadequate to measure desired times.
|
||||
*
|
||||
* See also 'CPU_TS_TmrRd() Note #2'.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#if (CPU_CFG_TS_TMR_EN == DEF_ENABLED)
|
||||
void CPU_TS_TmrInit (void)
|
||||
{
|
||||
RCC_ClocksTypeDef rcc_clocks;
|
||||
|
||||
RCC_GetClocksFreq(&rcc_clocks);
|
||||
|
||||
|
||||
DEM_CR |= (CPU_INT32U)DEM_CR_TRCENA; /* Enable Cortex-M3's DWT CYCCNT reg. */
|
||||
DWT_CYCCNT = (CPU_INT32U)0u;
|
||||
DWT_CR |= (CPU_INT32U)DWT_CR_CYCCNTENA;
|
||||
|
||||
CPU_TS_TmrFreqSet(rcc_clocks.HCLK_Frequency);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*$PAGE*/
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* CPU_TS_TmrRd()
|
||||
*
|
||||
* Description : Get current CPU timestamp timer count value.
|
||||
*
|
||||
* Argument(s) : none.
|
||||
*
|
||||
* Return(s) : Timestamp timer count (see Notes #2a & #2b).
|
||||
*
|
||||
* Caller(s) : CPU_TS_Init(),
|
||||
* CPU_TS_Get32(),
|
||||
* CPU_TS_Get64(),
|
||||
* CPU_IntDisMeasStart(),
|
||||
* CPU_IntDisMeasStop().
|
||||
*
|
||||
* This function is an INTERNAL CPU module function & MUST be implemented by application/
|
||||
* BSP function(s) [see Note #1] but SHOULD NOT be called by application function(s).
|
||||
*
|
||||
* Note(s) : (1) CPU_TS_TmrRd() is an application/BSP function that MUST be defined by the developer
|
||||
* if either of the following CPU features is enabled :
|
||||
*
|
||||
* (a) CPU timestamps
|
||||
* (b) CPU interrupts disabled time measurements
|
||||
*
|
||||
* See 'cpu_cfg.h CPU TIMESTAMP CONFIGURATION Note #1'
|
||||
* & 'cpu_cfg.h CPU INTERRUPTS DISABLED TIME MEASUREMENT CONFIGURATION Note #1a'.
|
||||
*
|
||||
* (2) (a) Timer count values MUST be returned via word-size-configurable 'CPU_TS_TMR'
|
||||
* data type.
|
||||
*
|
||||
* (1) If timer has more bits, truncate timer values' higher-order bits greater
|
||||
* than the configured 'CPU_TS_TMR' timestamp timer data type word size.
|
||||
*
|
||||
* (2) Since the timer MUST NOT have less bits than the configured 'CPU_TS_TMR'
|
||||
* timestamp timer data type word size; 'CPU_CFG_TS_TMR_SIZE' MUST be
|
||||
* configured so that ALL bits in 'CPU_TS_TMR' data type are significant.
|
||||
*
|
||||
* In other words, if timer size is not a binary-multiple of 8-bit octets
|
||||
* (e.g. 20-bits or even 24-bits), then the next lower, binary-multiple
|
||||
* octet word size SHOULD be configured (e.g. to 16-bits). However, the
|
||||
* minimum supported word size for CPU timestamp timers is 8-bits.
|
||||
*
|
||||
* See also 'cpu_cfg.h CPU TIMESTAMP CONFIGURATION Note #2'
|
||||
* & 'cpu_core.h CPU TIMESTAMP DATA TYPES Note #1'.
|
||||
*
|
||||
* (b) Timer SHOULD be an 'up' counter whose values increase with each time count.
|
||||
*
|
||||
* (1) If timer is a 'down' counter whose values decrease with each time count,
|
||||
* then the returned timer value MUST be ones-complemented.
|
||||
*
|
||||
* (c) (1) When applicable, the amount of time measured by CPU timestamps is
|
||||
* calculated by either of the following equations :
|
||||
*
|
||||
* (A) Time measured = Number timer counts * Timer period
|
||||
*
|
||||
* where
|
||||
*
|
||||
* Number timer counts Number of timer counts measured
|
||||
* Timer period Timer's period in some units of
|
||||
* (fractional) seconds
|
||||
* Time measured Amount of time measured, in same
|
||||
* units of (fractional) seconds
|
||||
* as the Timer period
|
||||
*
|
||||
* Number timer counts
|
||||
* (B) Time measured = ---------------------
|
||||
* Timer frequency
|
||||
*
|
||||
* where
|
||||
*
|
||||
* Number timer counts Number of timer counts measured
|
||||
* Timer frequency Timer's frequency in some units
|
||||
* of counts per second
|
||||
* Time measured Amount of time measured, in seconds
|
||||
*
|
||||
* (2) Timer period SHOULD be less than the typical measured time but MUST be less
|
||||
* than the maximum measured time; otherwise, timer resolution inadequate to
|
||||
* measure desired times.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#if (CPU_CFG_TS_TMR_EN == DEF_ENABLED)
|
||||
CPU_TS_TMR CPU_TS_TmrRd (void)
|
||||
{
|
||||
return ((CPU_TS_TMR)DWT_CYCCNT);
|
||||
}
|
||||
#endif
|
||||
|
||||
void BSP_IntDisAll (void)
|
||||
{
|
||||
CPU_IntDis();
|
||||
}
|
||||
|
||||
int fputc(int ch, FILE *f)
|
||||
{
|
||||
USART_SendData(USART1, (uint8_t) ch);
|
||||
/* Loop until the end of transmission */
|
||||
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
|
||||
{}
|
||||
return ch;
|
||||
}
|
||||
|
||||
int fgetc(FILE *f)
|
||||
{
|
||||
|
||||
while(!(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET))
|
||||
{
|
||||
}
|
||||
|
||||
return (USART_ReceiveData(USART1));
|
||||
}
|
||||
|
||||
void assert_failed(u8* file, u32 line)
|
||||
{
|
||||
/* User can add his own implementation to report the file name and line number,
|
||||
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
|
||||
/* Infinite loop */
|
||||
cm_backtrace_assert(__get_SP());
|
||||
printf("assert failed at %s:%d \n", file, line);
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
|
||||
void delay(uint32_t nCount)
|
||||
{
|
||||
for(; nCount!= 0; nCount--);
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* LOCAL CONFIGURATION ERRORS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* BSP_Init()
|
||||
*
|
||||
* Description : Initialize the Board Support Package (BSP).
|
||||
*
|
||||
* Argument(s) : none.
|
||||
*
|
||||
* Return(s) : none.
|
||||
*
|
||||
* Caller(s) : Application.
|
||||
*
|
||||
* Note(s) : (1) This function SHOULD be called before any other BSP function is called.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
void BSP_Init (void)
|
||||
{
|
||||
RCC_Configuration();
|
||||
NVIC_Configuration();
|
||||
USART1_Configuration();
|
||||
GPIO_Configuration();
|
||||
SysTick_Configuration();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
|
||||
#ifndef BSP_PRESENT
|
||||
#define BSP_PRESENT
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* EXTERNS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <stm32f10x_conf.h>
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DEFINES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
// <o> Internal SRAM memory size[Kbytes] <8-64>
|
||||
// <i>Default: 64
|
||||
#define STM32_SRAM_SIZE 64
|
||||
#define STM32_SRAM_END (SRAM_BASE + STM32_SRAM_SIZE * 1024)
|
||||
|
||||
#define VECT_TAB_FLASH /* use Flash to store vector table */
|
||||
|
||||
#define LED_RUN_ON GPIO_SetBits (GPIOB,GPIO_Pin_5) //RUN
|
||||
#define LED_RUN_OFF GPIO_ResetBits(GPIOB,GPIO_Pin_5) //RUN
|
||||
|
||||
/*********************************************************************************************************/
|
||||
/** MACRO'S */
|
||||
/***********************************************************************************************************/
|
||||
|
||||
|
||||
/***********************************************************************************************************/
|
||||
/* DATA TYPES */
|
||||
/***********************************************************************************************************/
|
||||
|
||||
|
||||
/**********************************************************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
**********************************************************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
void BSP_IntDisAll(void);
|
||||
void BSP_Init(void);
|
||||
void delay(uint32_t nCount);
|
||||
|
||||
void IWDG_Feed(void);
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INTERRUPT SERVICES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#endif /* End of module include. */
|
||||
@@ -0,0 +1,41 @@
|
||||
/*###ICF### Section handled by ICF editor, don't touch! ****/
|
||||
/*-Editor annotation file-*/
|
||||
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
|
||||
/*-Specials-*/
|
||||
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
|
||||
/* software version and hardware version store start address */
|
||||
define symbol __ICFEDIT_version_start__ = __ICFEDIT_intvec_start__ + 512;
|
||||
/*-Memory Regions-*/
|
||||
define symbol __ICFEDIT_region_ROM_start__ = __ICFEDIT_intvec_start__;
|
||||
define symbol __ICFEDIT_region_ROM_end__ = 0x0801FFFF;
|
||||
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
|
||||
define symbol __ICFEDIT_region_RAM_end__ = 0x20004FFF;
|
||||
/*-Sizes-*/
|
||||
define symbol __ICFEDIT_size_cstack__ = 0x800;
|
||||
define symbol __ICFEDIT_size_heap__ = 0x800;
|
||||
|
||||
/**** End of ICF editor section. ###ICF###*/
|
||||
|
||||
define memory mem with size = 4G;
|
||||
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
|
||||
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
|
||||
|
||||
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
|
||||
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
|
||||
|
||||
initialize by copy { readwrite };
|
||||
do not initialize { section .noinit };
|
||||
|
||||
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
|
||||
|
||||
place in ROM_region { readonly };
|
||||
place in RAM_region { readwrite,
|
||||
block CSTACK, block HEAP };
|
||||
|
||||
/* armink add for version storage */
|
||||
keep { section .version };
|
||||
place at address mem:__ICFEDIT_version_start__ { readonly section .version };
|
||||
|
||||
/* armink add for rtt finsh */
|
||||
keep { section FSymTab };
|
||||
keep { section VSymTab };
|
||||
@@ -0,0 +1,41 @@
|
||||
/*###ICF### Section handled by ICF editor, don't touch! ****/
|
||||
/*-Editor annotation file-*/
|
||||
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
|
||||
/*-Specials-*/
|
||||
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
|
||||
/* software version and hardware version store start address */
|
||||
define symbol __ICFEDIT_version_start__ = __ICFEDIT_intvec_start__ + 512;
|
||||
/*-Memory Regions-*/
|
||||
define symbol __ICFEDIT_region_ROM_start__ = __ICFEDIT_intvec_start__;
|
||||
define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
|
||||
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
|
||||
define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF;
|
||||
/*-Sizes-*/
|
||||
define symbol __ICFEDIT_size_cstack__ = 0x1000;
|
||||
define symbol __ICFEDIT_size_heap__ = 0x1000;
|
||||
|
||||
/**** End of ICF editor section. ###ICF###*/
|
||||
|
||||
define memory mem with size = 4G;
|
||||
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
|
||||
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
|
||||
|
||||
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
|
||||
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
|
||||
|
||||
initialize by copy { readwrite };
|
||||
do not initialize { section .noinit };
|
||||
|
||||
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
|
||||
|
||||
place in ROM_region { readonly };
|
||||
place in RAM_region { readwrite,
|
||||
block CSTACK, block HEAP };
|
||||
|
||||
/* armink add for version storage */
|
||||
keep { section .version };
|
||||
place at address mem:__ICFEDIT_version_start__ { readonly section .version };
|
||||
|
||||
/* armink add for rtt finsh */
|
||||
keep { section FSymTab };
|
||||
keep { section VSymTab };
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
#ifndef TYPES_H_
|
||||
#define TYPES_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
typedef int bool_t; /**< boolean type */
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
||||
#define success 0
|
||||
#define fail 1
|
||||
|
||||
|
||||
#ifndef disable
|
||||
#define disable 0
|
||||
#endif
|
||||
|
||||
#ifndef enable
|
||||
#define enable 1
|
||||
#endif
|
||||
|
||||
#endif /* TYPES_H_ */
|
||||
Reference in New Issue
Block a user