From 0adeec13b52e17b56b5cf4ac91356ba717a714d2 Mon Sep 17 00:00:00 2001 From: Terraneo Federico <fede.tft@hotmail.it> Date: Thu, 15 Aug 2013 01:03:28 +0200 Subject: [PATCH] Added new board: sony newman (smartwatch) --- chg.patch | 2858 +++++++++++++++++ .../cortexM3_stm32f2/common/CMSIS/stm32f2xx.h | 10 +- .../common/CMSIS/system_stm32f2xx.c | 11 + .../stm32f205rg_sony-newman/board_settings.h | 63 + .../core/stage_1_boot.cpp | 416 +++ .../interfaces-impl/bsp.cpp | 204 ++ .../interfaces-impl/bsp_impl.h | 48 + .../interfaces-impl/console.cpp | 51 + .../interfaces-impl/delays.cpp | 79 + .../interfaces-impl/hwmapping.h | 129 + .../stm32_1M+128k_rom.ld | 198 ++ miosix/config/Makefile.inc | 47 + .../temp/udev-rules/49-sony-newman-dfu.rules | 7 + miosix_np_2/nbproject/configurations.xml | 1142 +++++++ .../nbproject/private/configurations.xml | 108 +- miosix_np_2/nbproject/private/private.xml | 2 +- miosix_np_2/nbproject/project.xml | 4 + 17 files changed, 5348 insertions(+), 29 deletions(-) create mode 100644 chg.patch create mode 100644 miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h create mode 100644 miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/core/stage_1_boot.cpp create mode 100644 miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp create mode 100644 miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h create mode 100644 miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp create mode 100644 miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp create mode 100644 miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h create mode 100644 miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/stm32_1M+128k_rom.ld create mode 100644 miosix/temp/udev-rules/49-sony-newman-dfu.rules diff --git a/chg.patch b/chg.patch new file mode 100644 index 00000000..e7c4b4d8 --- /dev/null +++ b/chg.patch @@ -0,0 +1,2858 @@ +diff --git a/chg.patch b/chg.patch +new file mode 100644 +index 0000000..e69de29 +diff --git a/miosix/arch/cortexM3_stm32f2/common/CMSIS/stm32f2xx.h b/miosix/arch/cortexM3_stm32f2/common/CMSIS/stm32f2xx.h +index d203a85..8e3966b 100644 +--- a/miosix/arch/cortexM3_stm32f2/common/CMSIS/stm32f2xx.h ++++ b/miosix/arch/cortexM3_stm32f2/common/CMSIS/stm32f2xx.h +@@ -12,15 +12,15 @@ + * is using in the C source code, usually in main.c. This file contains: + * - Configuration section that allows to select: + * - The device used in the target application +- * - To use or not the peripheral�s drivers in application code(i.e. +- * code will be based on direct access to peripheral�s registers ++ * - To use or not the peripheral's drivers in application code(i.e. ++ * code will be based on direct access to peripheral's registers + * rather than drivers API), this option is controlled by + * "#define USE_STDPERIPH_DRIVER" + * - To change few application-specific parameters such as the HSE + * crystal frequency + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition +- * - Macros to access peripheral�s registers hardware ++ * - Macros to access peripheral's registers hardware + * + ****************************************************************************** + * @attention +@@ -991,7 +991,11 @@ typedef struct + * @{ + */ + ++#ifndef _BOARD_SONY_NEWMAN //By TFT: the smartwatch has a bootloader + #define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */ ++#else //_BOARD_SONY_NEWMAN ++#define FLASH_BASE ((uint32_t)0x08040000) ++#endif //_BOARD_SONY_NEWMAN + #define SRAM_BASE ((uint32_t)0x20000000) /*!< SRAM base address in the alias region */ + #define PERIPH_BASE ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */ + +diff --git a/miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.c b/miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.c +index 17aca42..fc37053 100644 +--- a/miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.c ++++ b/miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.c +@@ -365,6 +365,17 @@ static void SetSysClock(void) + + if (HSEStatus == (uint32_t)0x01) + { ++ #ifdef _BOARD_SONY_NEWMAN ++ //By TFT: We don't know how the clock is configured by the bootloader, ++ //so better switch to the HSE and disable the PLL. ++ unsigned int temp=RCC->CFGR; ++ temp &= ~RCC_CFGR_SW; /* Clear SW[1:0] bits */ ++ temp |= RCC_CFGR_SW_0; /* Enable HSE as system clock */ ++ RCC->CFGR=temp; ++ while((RCC->CFGR & RCC_CFGR_SWS)!=RCC_CFGR_SWS_0) ; ++ RCC->CR &= ~ RCC_CR_PLLON; ++ #endif //_BOARD_SONY_NEWMAN ++ + /* HCLK = SYSCLK / 1*/ + RCC->CFGR |= RCC_CFGR_HPRE_DIV1; + +diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h +new file mode 100644 +index 0000000..d97f651 +--- /dev/null ++++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h +@@ -0,0 +1,63 @@ ++/*************************************************************************** ++ * Copyright (C) 2013 by Terraneo Federico * ++ * * ++ * This program is free software; you can redistribute it and/or modify * ++ * it under the terms of the GNU General Public License as published by * ++ * the Free Software Foundation; either version 2 of the License, or * ++ * (at your option) any later version. * ++ * * ++ * This program is distributed in the hope that it will be useful, * ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of * ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * ++ * GNU General Public License for more details. * ++ * * ++ * As a special exception, if other files instantiate templates or use * ++ * macros or inline functions from this file, or you compile this file * ++ * and link it with other works to produce a work based on this file, * ++ * this file does not by itself cause the resulting work to be covered * ++ * by the GNU General Public License. However the source code for this * ++ * file must still be made available in accordance with the GNU General * ++ * Public License. This exception does not invalidate any other reasons * ++ * why a work based on this file might be covered by the GNU General * ++ * Public License. * ++ * * ++ * You should have received a copy of the GNU General Public License * ++ * along with this program; if not, see <http://www.gnu.org/licenses/> * ++ ***************************************************************************/ ++ ++#ifndef BOARD_SETTINGS_H ++#define BOARD_SETTINGS_H ++ ++namespace miosix { ++ ++/** ++ * \addtogroup Settings ++ * \{ ++ */ ++ ++/// Size of stack for main(). ++/// The C standard library is stack-heavy (iprintf requires 1.5KB) and the ++/// STM32F207ZG has 128KB of RAM so there is room for a big 4K stack. ++const unsigned int MAIN_STACK_SIZE=4*1024; ++ ++/// Frequency of tick (in Hz). The frequency of the STM32F207ZG timer in the ++/// Miosix board can be divided by 1000. This allows to use a 1KHz tick and ++/// the minimun Thread::sleep value is 1ms ++/// For the priority scheduler this is also the context switch frequency ++const unsigned int TICK_FREQ=1000; ++ ++///\internal Aux timer run @ 100KHz ++///Note that since the timer is only 16 bits this imposes a limit on the ++///burst measurement of 655ms. If due to a pause_kernel() or ++///disable_interrupts() section a thread runs for more than that time, a wrong ++///burst value will be measured ++const unsigned int AUX_TIMER_CLOCK=100000; ++const unsigned int AUX_TIMER_MAX=0xffff; ///<\internal Aux timer is 16 bits ++ ++/** ++ * \} ++ */ ++ ++} //namespace miosix ++ ++#endif /* BOARD_SETTINGS_H */ +diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/core/stage_1_boot.cpp b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/core/stage_1_boot.cpp +new file mode 100644 +index 0000000..669c52a +--- /dev/null ++++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/core/stage_1_boot.cpp +@@ -0,0 +1,416 @@ ++ ++#include "interfaces/arch_registers.h" ++#include "core/interrupts.h" //For the unexpected interrupt call ++#include <string.h> ++ ++/* ++ * startup.cpp ++ * STM32 C++ startup. ++ * NOTE: for stm32f2 devices ONLY. ++ * - supports interrupt handlers in C++ without extern "C" ++ * - global constructors are correctly called before main() ++ * Developed by Terraneo Federico, based on ST startup code. ++ * Additionally modified to boot Miosix. ++ */ ++ ++//Will be called at the end of stage 1 of boot, function is implemented in ++//stage_2_boot.cpp ++extern "C" void _init(); ++ ++/** ++ * Calls C++ global constructors ++ * \param start first function pointer to call ++ * \param end one past the last function pointer to call ++ * Declared "noinline" to optimize code size ++ */ ++static void call_constructors(unsigned long *start, unsigned long *end) __attribute__((noinline)); ++static void call_constructors(unsigned long *start, unsigned long *end) ++{ ++ for(unsigned long *i=start; i<end; i++) ++ { ++ void (*funcptr)(); ++ funcptr=reinterpret_cast<void (*)()>(*i); ++ funcptr(); ++ } ++} ++ ++/** ++ * Called by Reset_Handler, performs initialization and calls main. ++ * Never returns. ++ */ ++void program_startup() __attribute__((noreturn)); ++void program_startup() ++{ ++ //Cortex M3 core appears to get out of reset with interrupts already enabled ++ __disable_irq(); ++ ++ //These are defined in the linker script ++ extern unsigned char _etext asm("_etext"); ++ extern unsigned char _data asm("_data"); ++ extern unsigned char _edata asm("_edata"); ++ extern unsigned char _bss_start asm("_bss_start"); ++ extern unsigned char _bss_end asm("_bss_end"); ++ extern unsigned long __preinit_array_start asm("__preinit_array_start"); ++ extern unsigned long __preinit_array_end asm("__preinit_array_end"); ++ extern unsigned long __init_array_start asm("__init_array_start"); ++ extern unsigned long __init_array_end asm("__init_array_end"); ++ extern unsigned long _ctor_start asm("_ctor_start"); ++ extern unsigned long _ctor_end asm("_ctor_end"); ++ ++ //Initialize .data section, clear .bss section ++ unsigned char *etext=&_etext; ++ unsigned char *data=&_data; ++ unsigned char *edata=&_edata; ++ unsigned char *bss_start=&_bss_start; ++ unsigned char *bss_end=&_bss_end; ++ //The memcpy is usually enclosed in an #ifndef __ENABLE_XRAM, in other ++ //boards but in this case it is not, since the *_code_in_xram.ld linker ++ //script puts code in XRAM, but data in the internal one, so there's still ++ //the need to copy it in its final place ++ memcpy(data, etext, edata-data); ++ memset(bss_start, 0, bss_end-bss_start); ++ ++ //Initialize C++ global constructors ++ call_constructors(&__preinit_array_start, &__preinit_array_end); ++ call_constructors(&__init_array_start, &__init_array_end); ++ call_constructors(&_ctor_start, &_ctor_end); ++ ++ //Move on to stage 2 ++ _init(); ++ ++ //If main returns, reboot ++ NVIC_SystemReset(); ++ for(;;) ; ++} ++ ++/** ++ * Reset handler, called by hardware immediately after reset ++ */ ++void Reset_Handler() __attribute__((__interrupt__, noreturn)); ++void Reset_Handler() ++{ ++ /* ++ * SystemInit() is called *before* initializing .data and zeroing .bss ++ * Despite all startup files provided by ST do the opposite, there are three ++ * good reasons to do so: ++ * First, the CMSIS specifications say that SystemInit() must not access ++ * global variables, so it is actually possible to call it before ++ * Second, when running Miosix with the xram linker scripts .data and .bss ++ * are placed in the external RAM, so we *must* call SystemInit(), which ++ * enables xram, before touching .data and .bss ++ * Third, this is a performance improvement since the loops that initialize ++ * .data and zeros .bss now run with the CPU at full speed instead of 16MHz ++ * Note that it is called before switching stacks because the memory ++ * at _heap_end can be unavailable until the external RAM is initialized. ++ */ ++ SystemInit(); ++ ++ /* ++ * Initialize process stack and switch to it. ++ * This is required for booting Miosix, a small portion of the top of the ++ * heap area will be used as stack until the first thread starts. After, ++ * this stack will be abandoned and the process stack will point to the ++ * current thread's stack. ++ */ ++ asm volatile("ldr r0, =_heap_end \n\t" ++ "msr psp, r0 \n\t" ++ "movw r0, #2 \n\n" //Privileged, process stack ++ "msr control, r0 \n\t" ++ "isb \n\t":::"r0"); ++ ++ program_startup(); ++} ++ ++/** ++ * All unused interrupts call this function. ++ */ ++extern "C" void Default_Handler() ++{ ++ unexpectedInterrupt(); ++} ++ ++//System handlers ++void /*__attribute__((weak))*/ Reset_Handler(); //These interrupts are not ++void /*__attribute__((weak))*/ NMI_Handler(); //weak because they are ++void /*__attribute__((weak))*/ HardFault_Handler(); //surely defined by Miosix ++void /*__attribute__((weak))*/ MemManage_Handler(); ++void /*__attribute__((weak))*/ BusFault_Handler(); ++void /*__attribute__((weak))*/ UsageFault_Handler(); ++void /*__attribute__((weak))*/ SVC_Handler(); ++void /*__attribute__((weak))*/ DebugMon_Handler(); ++void /*__attribute__((weak))*/ PendSV_Handler(); ++void /*__attribute__((weak))*/ SysTick_Handler(); ++ ++//Interrupt handlers ++void __attribute__((weak)) WWDG_IRQHandler(); ++void __attribute__((weak)) PVD_IRQHandler(); ++void __attribute__((weak)) TAMP_STAMP_IRQHandler(); ++void __attribute__((weak)) RTC_WKUP_IRQHandler(); ++void __attribute__((weak)) FLASH_IRQHandler(); ++void __attribute__((weak)) RCC_IRQHandler(); ++void __attribute__((weak)) EXTI0_IRQHandler(); ++void __attribute__((weak)) EXTI1_IRQHandler(); ++void __attribute__((weak)) EXTI2_IRQHandler(); ++void __attribute__((weak)) EXTI3_IRQHandler(); ++void __attribute__((weak)) EXTI4_IRQHandler(); ++void __attribute__((weak)) DMA1_Stream0_IRQHandler(); ++void __attribute__((weak)) DMA1_Stream1_IRQHandler(); ++void __attribute__((weak)) DMA1_Stream2_IRQHandler(); ++void __attribute__((weak)) DMA1_Stream3_IRQHandler(); ++void __attribute__((weak)) DMA1_Stream4_IRQHandler(); ++void __attribute__((weak)) DMA1_Stream5_IRQHandler(); ++void __attribute__((weak)) DMA1_Stream6_IRQHandler(); ++void __attribute__((weak)) ADC_IRQHandler(); ++void __attribute__((weak)) CAN1_TX_IRQHandler(); ++void __attribute__((weak)) CAN1_RX0_IRQHandler(); ++void __attribute__((weak)) CAN1_RX1_IRQHandler(); ++void __attribute__((weak)) CAN1_SCE_IRQHandler(); ++void __attribute__((weak)) EXTI9_5_IRQHandler(); ++void __attribute__((weak)) TIM1_BRK_TIM9_IRQHandler(); ++void __attribute__((weak)) TIM1_UP_TIM10_IRQHandler(); ++void __attribute__((weak)) TIM1_TRG_COM_TIM11_IRQHandler(); ++void __attribute__((weak)) TIM1_CC_IRQHandler(); ++void __attribute__((weak)) TIM2_IRQHandler(); ++void __attribute__((weak)) TIM3_IRQHandler(); ++void __attribute__((weak)) TIM4_IRQHandler(); ++void __attribute__((weak)) I2C1_EV_IRQHandler(); ++void __attribute__((weak)) I2C1_ER_IRQHandler(); ++void __attribute__((weak)) I2C2_EV_IRQHandler(); ++void __attribute__((weak)) I2C2_ER_IRQHandler(); ++void __attribute__((weak)) SPI1_IRQHandler(); ++void __attribute__((weak)) SPI2_IRQHandler(); ++void __attribute__((weak)) USART1_IRQHandler(); ++void __attribute__((weak)) USART2_IRQHandler(); ++void __attribute__((weak)) USART3_IRQHandler(); ++void __attribute__((weak)) EXTI15_10_IRQHandler(); ++void __attribute__((weak)) RTC_Alarm_IRQHandler(); ++void __attribute__((weak)) OTG_FS_WKUP_IRQHandler(); ++void __attribute__((weak)) TIM8_BRK_TIM12_IRQHandler(); ++void __attribute__((weak)) TIM8_UP_TIM13_IRQHandler(); ++void __attribute__((weak)) TIM8_TRG_COM_TIM14_IRQHandler(); ++void __attribute__((weak)) TIM8_CC_IRQHandler(); ++void __attribute__((weak)) DMA1_Stream7_IRQHandler(); ++void __attribute__((weak)) FSMC_IRQHandler(); ++void __attribute__((weak)) SDIO_IRQHandler(); ++void __attribute__((weak)) TIM5_IRQHandler(); ++void __attribute__((weak)) SPI3_IRQHandler(); ++void __attribute__((weak)) UART4_IRQHandler(); ++void __attribute__((weak)) UART5_IRQHandler(); ++void __attribute__((weak)) TIM6_DAC_IRQHandler(); ++void __attribute__((weak)) TIM7_IRQHandler(); ++void __attribute__((weak)) DMA2_Stream0_IRQHandler(); ++void __attribute__((weak)) DMA2_Stream1_IRQHandler(); ++void __attribute__((weak)) DMA2_Stream2_IRQHandler(); ++void __attribute__((weak)) DMA2_Stream3_IRQHandler(); ++void __attribute__((weak)) DMA2_Stream4_IRQHandler(); ++void __attribute__((weak)) ETH_IRQHandler(); ++void __attribute__((weak)) ETH_WKUP_IRQHandler(); ++void __attribute__((weak)) CAN2_TX_IRQHandler(); ++void __attribute__((weak)) CAN2_RX0_IRQHandler(); ++void __attribute__((weak)) CAN2_RX1_IRQHandler(); ++void __attribute__((weak)) CAN2_SCE_IRQHandler(); ++void __attribute__((weak)) OTG_FS_IRQHandler(); ++void __attribute__((weak)) DMA2_Stream5_IRQHandler(); ++void __attribute__((weak)) DMA2_Stream6_IRQHandler(); ++void __attribute__((weak)) DMA2_Stream7_IRQHandler(); ++void __attribute__((weak)) USART6_IRQHandler(); ++void __attribute__((weak)) I2C3_EV_IRQHandler(); ++void __attribute__((weak)) I2C3_ER_IRQHandler(); ++void __attribute__((weak)) OTG_HS_EP1_OUT_IRQHandler(); ++void __attribute__((weak)) OTG_HS_EP1_IN_IRQHandler(); ++void __attribute__((weak)) OTG_HS_WKUP_IRQHandler(); ++void __attribute__((weak)) OTG_HS_IRQHandler(); ++void __attribute__((weak)) DCMI_IRQHandler(); ++void __attribute__((weak)) CRYP_IRQHandler(); ++void __attribute__((weak)) HASH_RNG_IRQHandler(); ++ ++//Stack top, defined in the linker script ++extern char _main_stack_top asm("_main_stack_top"); ++ ++//Interrupt vectors, must be placed @ address 0x00000000 ++//The extern declaration is required otherwise g++ optimizes it out ++extern void (* const __Vectors[])(); ++void (* const __Vectors[])() __attribute__ ((section(".isr_vector"))) = ++{ ++ reinterpret_cast<void (*)()>(&_main_stack_top),/* Stack pointer*/ ++ Reset_Handler, /* Reset Handler */ ++ NMI_Handler, /* NMI Handler */ ++ HardFault_Handler, /* Hard Fault Handler */ ++ MemManage_Handler, /* MPU Fault Handler */ ++ BusFault_Handler, /* Bus Fault Handler */ ++ UsageFault_Handler, /* Usage Fault Handler */ ++ 0, /* Reserved */ ++ 0, /* Reserved */ ++ 0, /* Reserved */ ++ 0, /* Reserved */ ++ SVC_Handler, /* SVCall Handler */ ++ DebugMon_Handler, /* Debug Monitor Handler */ ++ 0, /* Reserved */ ++ PendSV_Handler, /* PendSV Handler */ ++ SysTick_Handler, /* SysTick Handler */ ++ ++ /* External Interrupts */ ++ WWDG_IRQHandler, ++ PVD_IRQHandler, ++ TAMP_STAMP_IRQHandler, ++ RTC_WKUP_IRQHandler, ++ FLASH_IRQHandler, ++ RCC_IRQHandler, ++ EXTI0_IRQHandler, ++ EXTI1_IRQHandler, ++ EXTI2_IRQHandler, ++ EXTI3_IRQHandler, ++ EXTI4_IRQHandler, ++ DMA1_Stream0_IRQHandler, ++ DMA1_Stream1_IRQHandler, ++ DMA1_Stream2_IRQHandler, ++ DMA1_Stream3_IRQHandler, ++ DMA1_Stream4_IRQHandler, ++ DMA1_Stream5_IRQHandler, ++ DMA1_Stream6_IRQHandler, ++ ADC_IRQHandler, ++ CAN1_TX_IRQHandler, ++ CAN1_RX0_IRQHandler, ++ CAN1_RX1_IRQHandler, ++ CAN1_SCE_IRQHandler, ++ EXTI9_5_IRQHandler, ++ TIM1_BRK_TIM9_IRQHandler, ++ TIM1_UP_TIM10_IRQHandler, ++ TIM1_TRG_COM_TIM11_IRQHandler, ++ TIM1_CC_IRQHandler, ++ TIM2_IRQHandler, ++ TIM3_IRQHandler, ++ TIM4_IRQHandler, ++ I2C1_EV_IRQHandler, ++ I2C1_ER_IRQHandler, ++ I2C2_EV_IRQHandler, ++ I2C2_ER_IRQHandler, ++ SPI1_IRQHandler, ++ SPI2_IRQHandler, ++ USART1_IRQHandler, ++ USART2_IRQHandler, ++ USART3_IRQHandler, ++ EXTI15_10_IRQHandler, ++ RTC_Alarm_IRQHandler, ++ OTG_FS_WKUP_IRQHandler, ++ TIM8_BRK_TIM12_IRQHandler, ++ TIM8_UP_TIM13_IRQHandler, ++ TIM8_TRG_COM_TIM14_IRQHandler, ++ TIM8_CC_IRQHandler, ++ DMA1_Stream7_IRQHandler, ++ FSMC_IRQHandler, ++ SDIO_IRQHandler, ++ TIM5_IRQHandler, ++ SPI3_IRQHandler, ++ UART4_IRQHandler, ++ UART5_IRQHandler, ++ TIM6_DAC_IRQHandler, ++ TIM7_IRQHandler, ++ DMA2_Stream0_IRQHandler, ++ DMA2_Stream1_IRQHandler, ++ DMA2_Stream2_IRQHandler, ++ DMA2_Stream3_IRQHandler, ++ DMA2_Stream4_IRQHandler, ++ ETH_IRQHandler, ++ ETH_WKUP_IRQHandler, ++ CAN2_TX_IRQHandler, ++ CAN2_RX0_IRQHandler, ++ CAN2_RX1_IRQHandler, ++ CAN2_SCE_IRQHandler, ++ OTG_FS_IRQHandler, ++ DMA2_Stream5_IRQHandler, ++ DMA2_Stream6_IRQHandler, ++ DMA2_Stream7_IRQHandler, ++ USART6_IRQHandler, ++ I2C3_EV_IRQHandler, ++ I2C3_ER_IRQHandler, ++ OTG_HS_EP1_OUT_IRQHandler, ++ OTG_HS_EP1_IN_IRQHandler, ++ OTG_HS_WKUP_IRQHandler, ++ OTG_HS_IRQHandler, ++ DCMI_IRQHandler, ++ CRYP_IRQHandler, ++ HASH_RNG_IRQHandler, ++}; ++ ++#pragma weak WWDG_IRQHandler = Default_Handler ++#pragma weak PVD_IRQHandler = Default_Handler ++#pragma weak TAMP_STAMP_IRQHandler = Default_Handler ++#pragma weak RTC_WKUP_IRQHandler = Default_Handler ++#pragma weak FLASH_IRQHandler = Default_Handler ++#pragma weak RCC_IRQHandler = Default_Handler ++#pragma weak EXTI0_IRQHandler = Default_Handler ++#pragma weak EXTI1_IRQHandler = Default_Handler ++#pragma weak EXTI2_IRQHandler = Default_Handler ++#pragma weak EXTI3_IRQHandler = Default_Handler ++#pragma weak EXTI4_IRQHandler = Default_Handler ++#pragma weak DMA1_Stream0_IRQHandler = Default_Handler ++#pragma weak DMA1_Stream1_IRQHandler = Default_Handler ++#pragma weak DMA1_Stream2_IRQHandler = Default_Handler ++#pragma weak DMA1_Stream3_IRQHandler = Default_Handler ++#pragma weak DMA1_Stream4_IRQHandler = Default_Handler ++#pragma weak DMA1_Stream5_IRQHandler = Default_Handler ++#pragma weak DMA1_Stream6_IRQHandler = Default_Handler ++#pragma weak ADC_IRQHandler = Default_Handler ++#pragma weak CAN1_TX_IRQHandler = Default_Handler ++#pragma weak CAN1_RX0_IRQHandler = Default_Handler ++#pragma weak CAN1_RX1_IRQHandler = Default_Handler ++#pragma weak CAN1_SCE_IRQHandler = Default_Handler ++#pragma weak EXTI9_5_IRQHandler = Default_Handler ++#pragma weak TIM1_BRK_TIM9_IRQHandler = Default_Handler ++#pragma weak TIM1_UP_TIM10_IRQHandler = Default_Handler ++#pragma weak TIM1_TRG_COM_TIM11_IRQHandler = Default_Handler ++#pragma weak TIM1_CC_IRQHandler = Default_Handler ++#pragma weak TIM2_IRQHandler = Default_Handler ++#pragma weak TIM3_IRQHandler = Default_Handler ++#pragma weak TIM4_IRQHandler = Default_Handler ++#pragma weak I2C1_EV_IRQHandler = Default_Handler ++#pragma weak I2C1_ER_IRQHandler = Default_Handler ++#pragma weak I2C2_EV_IRQHandler = Default_Handler ++#pragma weak I2C2_ER_IRQHandler = Default_Handler ++#pragma weak SPI1_IRQHandler = Default_Handler ++#pragma weak SPI2_IRQHandler = Default_Handler ++#pragma weak USART1_IRQHandler = Default_Handler ++#pragma weak USART2_IRQHandler = Default_Handler ++#pragma weak USART3_IRQHandler = Default_Handler ++#pragma weak EXTI15_10_IRQHandler = Default_Handler ++#pragma weak RTC_Alarm_IRQHandler = Default_Handler ++#pragma weak OTG_FS_WKUP_IRQHandler = Default_Handler ++#pragma weak TIM8_BRK_TIM12_IRQHandler = Default_Handler ++#pragma weak TIM8_UP_TIM13_IRQHandler = Default_Handler ++#pragma weak TIM8_TRG_COM_TIM14_IRQHandler = Default_Handler ++#pragma weak TIM8_CC_IRQHandler = Default_Handler ++#pragma weak DMA1_Stream7_IRQHandler = Default_Handler ++#pragma weak FSMC_IRQHandler = Default_Handler ++#pragma weak SDIO_IRQHandler = Default_Handler ++#pragma weak TIM5_IRQHandler = Default_Handler ++#pragma weak SPI3_IRQHandler = Default_Handler ++#pragma weak UART4_IRQHandler = Default_Handler ++#pragma weak UART5_IRQHandler = Default_Handler ++#pragma weak TIM6_DAC_IRQHandler = Default_Handler ++#pragma weak TIM7_IRQHandler = Default_Handler ++#pragma weak DMA2_Stream0_IRQHandler = Default_Handler ++#pragma weak DMA2_Stream1_IRQHandler = Default_Handler ++#pragma weak DMA2_Stream2_IRQHandler = Default_Handler ++#pragma weak DMA2_Stream3_IRQHandler = Default_Handler ++#pragma weak DMA2_Stream4_IRQHandler = Default_Handler ++#pragma weak ETH_IRQHandler = Default_Handler ++#pragma weak ETH_WKUP_IRQHandler = Default_Handler ++#pragma weak CAN2_TX_IRQHandler = Default_Handler ++#pragma weak CAN2_RX0_IRQHandler = Default_Handler ++#pragma weak CAN2_RX1_IRQHandler = Default_Handler ++#pragma weak CAN2_SCE_IRQHandler = Default_Handler ++#pragma weak OTG_FS_IRQHandler = Default_Handler ++#pragma weak DMA2_Stream5_IRQHandler = Default_Handler ++#pragma weak DMA2_Stream6_IRQHandler = Default_Handler ++#pragma weak DMA2_Stream7_IRQHandler = Default_Handler ++#pragma weak USART6_IRQHandler = Default_Handler ++#pragma weak I2C3_EV_IRQHandler = Default_Handler ++#pragma weak I2C3_ER_IRQHandler = Default_Handler ++#pragma weak OTG_HS_EP1_OUT_IRQHandler = Default_Handler ++#pragma weak OTG_HS_EP1_IN_IRQHandler = Default_Handler ++#pragma weak OTG_HS_WKUP_IRQHandler = Default_Handler ++#pragma weak OTG_HS_IRQHandler = Default_Handler ++#pragma weak DCMI_IRQHandler = Default_Handler ++#pragma weak CRYP_IRQHandler = Default_Handler ++#pragma weak HASH_RNG_IRQHandler = Default_Handler +diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp +new file mode 100644 +index 0000000..8e1132f +--- /dev/null ++++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp +@@ -0,0 +1,204 @@ ++/*************************************************************************** ++ * Copyright (C) 2013 by Terraneo Federico * ++ * * ++ * This program is free software; you can redistribute it and/or modify * ++ * it under the terms of the GNU General Public License as published by * ++ * the Free Software Foundation; either version 2 of the License, or * ++ * (at your option) any later version. * ++ * * ++ * This program is distributed in the hope that it will be useful, * ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of * ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * ++ * GNU General Public License for more details. * ++ * * ++ * As a special exception, if other files instantiate templates or use * ++ * macros or inline functions from this file, or you compile this file * ++ * and link it with other works to produce a work based on this file, * ++ * this file does not by itself cause the resulting work to be covered * ++ * by the GNU General Public License. However the source code for this * ++ * file must still be made available in accordance with the GNU General * ++ * Public License. This exception does not invalidate any other reasons * ++ * why a work based on this file might be covered by the GNU General * ++ * Public License. * ++ * * ++ * You should have received a copy of the GNU General Public License * ++ * along with this program; if not, see <http://www.gnu.org/licenses/> * ++ ***************************************************************************/ ++ ++/*********************************************************************** ++* bsp.cpp Part of the Miosix Embedded OS. ++* Board support package, this file initializes hardware. ++************************************************************************/ ++ ++#include <cstdlib> ++#include "interfaces/bsp.h" ++#include "kernel/kernel.h" ++#include "interfaces/delays.h" ++#include "interfaces/portability.h" ++#include "interfaces/arch_registers.h" ++#include "config/miosix_settings.h" ++ ++namespace miosix { ++ ++// ++// Initialization ++// ++ ++void IRQbspInit() ++{ ++ //Enable all gpios ++ RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ++ | RCC_AHB1ENR_GPIOBEN ++ | RCC_AHB1ENR_GPIOCEN; ++ ++ using namespace oled; ++ OLED_nSS_Pin::mode(Mode::OUTPUT); ++ OLED_nSS_Pin::high(); ++ OLED_nSS_Pin::speed(Speed::_100MHz); //Without changing the default speed ++ OLED_SCK_Pin::mode(Mode::ALTERNATE); //OLED does not work! ++ OLED_SCK_Pin::alternateFunction(5); ++ OLED_SCK_Pin::speed(Speed::_100MHz); ++ OLED_MOSI_Pin::mode(Mode::ALTERNATE); ++ OLED_MOSI_Pin::alternateFunction(5); ++ OLED_MOSI_Pin::speed(Speed::_100MHz); ++ OLED_A0_Pin::mode(Mode::OUTPUT); ++ OLED_A0_Pin::low(); ++ OLED_A0_Pin::speed(Speed::_100MHz); ++ OLED_Reset_Pin::mode(Mode::OUTPUT); ++ OLED_Reset_Pin::low(); ++ OLED_Reset_Pin::speed(Speed::_50MHz); ++ OLED_V_ENABLE_Pin::mode(Mode::OUTPUT); ++ OLED_V_ENABLE_Pin::low(); ++ OLED_V_ENABLE_Pin::speed(Speed::_50MHz); ++ ++ using namespace touch; ++ Touch_Reset_Pin::mode(Mode::OUTPUT); ++ Touch_Reset_Pin::low(); ++ Touch_Reset_Pin::speed(Speed::_50MHz); ++ TOUCH_WKUP_INT_Pin::mode(Mode::INPUT); ++ ++ using namespace power; ++ BATT_V_ON_Pin::mode(Mode::OUTPUT); ++ BATT_V_ON_Pin::low(); ++ BATT_V_ON_Pin::speed(Speed::_50MHz); ++ BAT_V_Pin::mode(Mode::INPUT_ANALOG); ++ ENABLE_LIGHT_SENSOR_Pin::mode(Mode::OUTPUT); ++ ENABLE_LIGHT_SENSOR_Pin::low(); ++ ENABLE_LIGHT_SENSOR_Pin::speed(Speed::_50MHz); ++ LIGHT_SENSOR_ANALOG_OUT_Pin::mode(Mode::INPUT_ANALOG); ++ ENABLE_2V8_Pin::mode(Mode::OUTPUT); ++ ENABLE_2V8_Pin::low(); ++ ENABLE_2V8_Pin::speed(Speed::_50MHz); ++ HoldPower_Pin::mode(Mode::OPEN_DRAIN); ++ HoldPower_Pin::high(); ++ HoldPower_Pin::speed(Speed::_50MHz); ++ ++ ACCELEROMETER_INT_Pin::mode(Mode::INPUT_PULL_DOWN); ++ ++ using namespace i2c; ++ I2C_SCL_Pin::mode(Mode::ALTERNATE); ++ I2C_SCL_Pin::alternateFunction(4); ++ I2C_SCL_Pin::speed(Speed::_50MHz); ++ I2C_SDA_Pin::mode(Mode::ALTERNATE); ++ I2C_SDA_Pin::alternateFunction(4); ++ I2C_SDA_Pin::speed(Speed::_50MHz); ++ ++ BUZER_PWM_Pin::mode(Mode::OUTPUT); ++ BUZER_PWM_Pin::low(); ++ BUZER_PWM_Pin::speed(Speed::_50MHz); ++ ++ POWER_BTN_PRESS_Pin::mode(Mode::INPUT); ++ ++ using namespace usb; ++ USB5V_Detected_Pin::mode(Mode::INPUT_PULL_DOWN); ++ USB_DM_Pin::mode(Mode::INPUT); ++ USB_DP_Pin::mode(Mode::INPUT); ++ ++ using namespace bluetooth; ++ Reset_BT_Pin::mode(Mode::OPEN_DRAIN); ++ Reset_BT_Pin::low(); ++ Reset_BT_Pin::speed(Speed::_50MHz); ++ BT_CLK_REQ_Pin::mode(Mode::INPUT); ++ HOST_WAKE_UP_Pin::mode(Mode::INPUT); ++ Enable_1V8_BT_Power_Pin::mode(Mode::OPEN_DRAIN); ++ Enable_1V8_BT_Power_Pin::high(); ++ Enable_1V8_BT_Power_Pin::speed(Speed::_50MHz); ++ BT_nSS_Pin::mode(Mode::OUTPUT); ++ BT_nSS_Pin::low(); ++ BT_nSS_Pin::speed(Speed::_50MHz); ++ BT_SCK_Pin::mode(Mode::OUTPUT); ++ BT_SCK_Pin::low(); ++ BT_SCK_Pin::speed(Speed::_50MHz); ++ BT_MISO_Pin::mode(Mode::INPUT_PULL_DOWN); ++ BT_MOSI_Pin::mode(Mode::OUTPUT); ++ BT_MOSI_Pin::low(); ++ BT_MOSI_Pin::speed(Speed::_50MHz); ++ ++ using namespace unknown; ++ WKUP_Pin::mode(Mode::INPUT); ++ MCO1_Pin::mode(Mode::ALTERNATE); ++ MCO1_Pin::alternateFunction(0); ++ MCO1_Pin::speed(Speed::_100MHz); ++ Connect_USB_Pin::mode(Mode::OPEN_DRAIN); ++ Connect_USB_Pin::low(); ++ Connect_USB_Pin::speed(Speed::_50MHz); ++ POWER_3V3_ON_1V8_OFF_Pin::mode(Mode::OUTPUT); ++ POWER_3V3_ON_1V8_OFF_Pin::low(); ++ POWER_3V3_ON_1V8_OFF_Pin::speed(Speed::_50MHz); ++ SPI2_nSS_Pin::mode(Mode::OUTPUT); ++ SPI2_nSS_Pin::high(); ++ SPI2_nSS_Pin::speed(Speed::_50MHz); ++ SPI2_SCK_Pin::mode(Mode::OUTPUT); ++ SPI2_SCK_Pin::low(); ++ SPI2_SCK_Pin::speed(Speed::_50MHz); ++ SPI2_MISO_Pin::mode(Mode::INPUT_PULL_DOWN); ++ SPI2_MOSI_Pin::mode(Mode::OUTPUT); ++ SPI2_MOSI_Pin::low(); ++ SPI2_MOSI_Pin::speed(Speed::_50MHz); ++ ++ // Taken from underverk's SmartWatch_Toolchain/src/system.c: ++ // Prevents hard-faults when booting from USB ++ delayMs(50); ++ ++ USB_DP_Pin::mode(Mode::INPUT_PULL_UP); //Never leave GPIOs floating ++ USB_DM_Pin::mode(Mode::INPUT_PULL_DOWN); ++} ++ ++void bspInit2() ++{ ++ BUZER_PWM_Pin::high(); ++ Thread::sleep(200); ++ BUZER_PWM_Pin::low(); ++ //Wait for user to release the button ++ while(POWER_BTN_PRESS_Pin::value()) Thread::sleep(20); ++} ++ ++// ++// Shutdown and reboot ++// ++ ++void shutdown() ++{ ++ // Taken from underverk's SmartWatch_Toolchain/src/Arduino/Arduino.cpp ++ disableInterrupts(); ++ BUZER_PWM_Pin::high(); ++ delayMs(200); ++ BUZER_PWM_Pin::low(); ++ while(POWER_BTN_PRESS_Pin::value()) ; ++ //This is likely wired to the PMU. If the USB cable is not connected, this ++ //cuts off the power to the microcontroller. But if USB is connected, this ++ //does nothing. In this case we can only spin waiting for the user to turn ++ //the device on again ++ power::HoldPower_Pin::low(); ++ delayMs(500); ++ while(POWER_BTN_PRESS_Pin::value()==0) ; ++ reboot(); ++} ++ ++void reboot() ++{ ++ disableInterrupts(); ++ miosix_private::IRQsystemReboot(); ++} ++ ++};//namespace miosix +diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h +new file mode 100644 +index 0000000..ee06b0d +--- /dev/null ++++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h +@@ -0,0 +1,48 @@ ++/*************************************************************************** ++ * Copyright (C) 2013 by Terraneo Federico * ++ * * ++ * This program is free software; you can redistribute it and/or modify * ++ * it under the terms of the GNU General Public License as published by * ++ * the Free Software Foundation; either version 2 of the License, or * ++ * (at your option) any later version. * ++ * * ++ * This program is distributed in the hope that it will be useful, * ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of * ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * ++ * GNU General Public License for more details. * ++ * * ++ * As a special exception, if other files instantiate templates or use * ++ * macros or inline functions from this file, or you compile this file * ++ * and link it with other works to produce a work based on this file, * ++ * this file does not by itself cause the resulting work to be covered * ++ * by the GNU General Public License. However the source code for this * ++ * file must still be made available in accordance with the GNU General * ++ * Public License. This exception does not invalidate any other reasons * ++ * why a work based on this file might be covered by the GNU General * ++ * Public License. * ++ * * ++ * You should have received a copy of the GNU General Public License * ++ * along with this program; if not, see <http://www.gnu.org/licenses/> * ++ ***************************************************************************/ ++ ++/*********************************************************************** ++* bsp_impl.h Part of the Miosix Embedded OS. ++* Board support package, this file initializes hardware. ++************************************************************************/ ++ ++#ifndef BSP_IMPL_H ++#define BSP_IMPL_H ++ ++#include "config/miosix_settings.h" ++#include "hwmapping.h" ++#include "drivers/stm32_hardware_rng.h" ++ ++namespace miosix { ++ ++//No LEDs in this board ++inline void ledOn() {} ++inline void ledOff() {} ++ ++} ++ ++#endif //BSP_IMPL_H +diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp +new file mode 100644 +index 0000000..50b2eef +--- /dev/null ++++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp +@@ -0,0 +1,51 @@ ++/*************************************************************************** ++ * Copyright (C) 2013 by Terraneo Federico * ++ * * ++ * This program is free software; you can redistribute it and/or modify * ++ * it under the terms of the GNU General Public License as published by * ++ * the Free Software Foundation; either version 2 of the License, or * ++ * (at your option) any later version. * ++ * * ++ * This program is distributed in the hope that it will be useful, * ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of * ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * ++ * GNU General Public License for more details. * ++ * * ++ * As a special exception, if other files instantiate templates or use * ++ * macros or inline functions from this file, or you compile this file * ++ * and link it with other works to produce a work based on this file, * ++ * this file does not by itself cause the resulting work to be covered * ++ * by the GNU General Public License. However the source code for this * ++ * file must still be made available in accordance with the GNU General * ++ * Public License. This exception does not invalidate any other reasons * ++ * why a work based on this file might be covered by the GNU General * ++ * Public License. * ++ * * ++ * You should have received a copy of the GNU General Public License * ++ * along with this program; if not, see <http://www.gnu.org/licenses/> * ++ ***************************************************************************/ ++ ++#include "interfaces/console.h" ++ ++namespace miosix { ++ ++/* ++ * The watch has no serial port, so this implementation does nothing ++ * TODO: redirecting IRQwrite() to the display can be an idea ++ */ ++ ++void Console::write(const char *str) {} ++ ++void Console::write(const char *data, int length) {} ++ ++bool Console::txComplete() { return true; } ++ ++void Console::IRQwrite(const char *str) {} ++ ++bool Console::IRQtxComplete() { return true; } ++ ++char Console::readChar() { return 0; } ++ ++bool Console::readCharNonBlocking(char& c) { return false; } ++ ++} //namespace miosix +diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp +new file mode 100644 +index 0000000..ae3ca6f +--- /dev/null ++++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp +@@ -0,0 +1,79 @@ ++/*************************************************************************** ++ * Copyright (C) 2013 by Terraneo Federico * ++ * * ++ * This program is free software; you can redistribute it and/or modify * ++ * it under the terms of the GNU General Public License as published by * ++ * the Free Software Foundation; either version 2 of the License, or * ++ * (at your option) any later version. * ++ * * ++ * This program is distributed in the hope that it will be useful, * ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of * ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * ++ * GNU General Public License for more details. * ++ * * ++ * As a special exception, if other files instantiate templates or use * ++ * macros or inline functions from this file, or you compile this file * ++ * and link it with other works to produce a work based on this file, * ++ * this file does not by itself cause the resulting work to be covered * ++ * by the GNU General Public License. However the source code for this * ++ * file must still be made available in accordance with the GNU General * ++ * Public License. This exception does not invalidate any other reasons * ++ * why a work based on this file might be covered by the GNU General * ++ * Public License. * ++ * * ++ * You should have received a copy of the GNU General Public License * ++ * along with this program; if not, see <http://www.gnu.org/licenses/> * ++ ***************************************************************************/ ++ ++#include "interfaces/delays.h" ++ ++namespace miosix { ++ ++//FIXME: delays! ++ ++void delayMs(unsigned int mseconds) ++{ ++ #ifndef __CODE_IN_XRAM ++ ++ #ifdef SYSCLK_FREQ_120MHz ++ register const unsigned int count=29999; ++ #else ++ #warning "Delays are uncalibrated for this clock frequency" ++ #endif ++ ++ for(unsigned int i=0;i<mseconds;i++) ++ { ++ // This delay has been calibrated to take 1 millisecond ++ // It is written in assembler to be independent on compiler optimization ++ asm volatile(" mov r1, #0 \n" ++ "___loop_m: cmp r1, %0 \n" ++ " itt lo \n" ++ " addlo r1, r1, #1 \n" ++ " blo ___loop_m \n"::"r"(count):"r1"); ++ } ++ ++ #else //__CODE_IN_XRAM ++ #error "No delays" ++ #endif //__CODE_IN_XRAM ++} ++ ++void delayUs(unsigned int useconds) ++{ ++ #ifndef __CODE_IN_XRAM ++ ++ // This delay has been calibrated to take x microseconds ++ // It is written in assembler to be independent on compiler optimization ++ asm volatile(" mov r1, #30 \n" ++ " mul r2, %0, r1 \n" ++ " mov r1, #0 \n" ++ "___loop_u: cmp r1, r2 \n" ++ " itt lo \n" ++ " addlo r1, r1, #1 \n" ++ " blo ___loop_u \n"::"r"(useconds):"r1","r2"); ++ ++ #else //__CODE_IN_XRAM ++ #error "No delays" ++ #endif //__CODE_IN_XRAM ++} ++ ++} //namespace miosix +diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h +new file mode 100644 +index 0000000..e9d6fa2 +--- /dev/null ++++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h +@@ -0,0 +1,129 @@ ++/*************************************************************************** ++ * Copyright (C) 2013 by Terraneo Federico * ++ * * ++ * This program is free software; you can redistribute it and/or modify * ++ * it under the terms of the GNU General Public License as published by * ++ * the Free Software Foundation; either version 2 of the License, or * ++ * (at your option) any later version. * ++ * * ++ * This program is distributed in the hope that it will be useful, * ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of * ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * ++ * GNU General Public License for more details. * ++ * * ++ * As a special exception, if other files instantiate templates or use * ++ * macros or inline functions from this file, or you compile this file * ++ * and link it with other works to produce a work based on this file, * ++ * this file does not by itself cause the resulting work to be covered * ++ * by the GNU General Public License. However the source code for this * ++ * file must still be made available in accordance with the GNU General * ++ * Public License. This exception does not invalidate any other reasons * ++ * why a work based on this file might be covered by the GNU General * ++ * Public License. * ++ * * ++ * You should have received a copy of the GNU General Public License * ++ * along with this program; if not, see <http://www.gnu.org/licenses/> * ++ ***************************************************************************/ ++ ++#ifndef HWMAPPING_H ++#define HWMAPPING_H ++ ++#include "interfaces/gpio.h" ++ ++namespace miosix { ++ ++/* ++ * The pin names were taken from underverk's SmartWatch_Toolchain/src/system.c ++ * They were put in a comment saying "Sony's name". Probably the one who wrote ++ * that file got access to much more documentation that the one that's publicly ++ * available. ++ */ ++ ++// The OLED display is an LD7131 and has its own dedicated SPI bus ++namespace oled { ++typedef Gpio<GPIOA_BASE, 4> OLED_nSS_Pin; //Sony calls it SPI1_nSS_Pin ++typedef Gpio<GPIOA_BASE, 5> OLED_SCK_Pin; //Sony calls it SPI1_SCK_Pin ++typedef Gpio<GPIOA_BASE, 7> OLED_MOSI_Pin; //Sony calls it SPI1_MOSI_Pin ++typedef Gpio<GPIOC_BASE, 0> OLED_A0_Pin; ++typedef Gpio<GPIOB_BASE, 5> OLED_Reset_Pin; ++typedef Gpio<GPIOC_BASE, 1> OLED_V_ENABLE_Pin; //Enables OLED panel 16V supply ++} ++ ++// The touch controller is a CY8C20236 is connected to the I2C bus, address 0x0a ++namespace touch { ++typedef Gpio<GPIOB_BASE, 0> Touch_Reset_Pin; ++typedef Gpio<GPIOC_BASE, 6> TOUCH_WKUP_INT_Pin; ++} ++ ++// There is a PMU chip, unknown part, connected to the I2C bus, address 0x90 ++namespace power { ++typedef Gpio<GPIOA_BASE, 1> BATT_V_ON_Pin; //Enables battery voltage sensor ++typedef Gpio<GPIOA_BASE, 2> BAT_V_Pin; //Analog input ++typedef Gpio<GPIOB_BASE, 4> ENABLE_LIGHT_SENSOR_Pin; //Enables light sensor ++typedef Gpio<GPIOC_BASE, 4> LIGHT_SENSOR_ANALOG_OUT_Pin; //Analog input ++typedef Gpio<GPIOB_BASE, 3> ENABLE_2V8_Pin; //Is in some way releted to the OLED ++//Looks connected to the PMU, the most likely scenario is this: asserting it low ++//when the USB is not connected disables the PMU voltage regulator feeding the ++//microcontroller, therefore shutting down the watch. ++typedef Gpio<GPIOC_BASE, 3> HoldPower_Pin; ++} ++ ++// The accelerometer is an LIS3DH, connected to the I2C bus, address 0x30 ++typedef Gpio<GPIOB_BASE, 9> ACCELEROMETER_INT_Pin; ++ ++// The Touch controller, PMU and accelerometer are connected to the I2C bus ++namespace i2c { ++typedef Gpio<GPIOB_BASE, 6> I2C_SCL_Pin; ++typedef Gpio<GPIOB_BASE, 7> I2C_SDA_Pin; ++} ++ ++// Vibrator motor ++typedef Gpio<GPIOB_BASE, 8> BUZER_PWM_Pin; ++ ++// The power button. Someone on stackoverflow mantions that if you push it for ++// 10 seconds when the USB cable is disconnected, the watch shutdowns no matter ++// what the software does (so, even if it is locked up). This means it's ++// probably connected to the PMU as well. ++typedef Gpio<GPIOB_BASE,11> POWER_BTN_PRESS_Pin; //Goes high when pressed FIXME: check ++ ++// USB connections ++namespace usb { ++typedef Gpio<GPIOA_BASE, 9> USB5V_Detected_Pin; //Goes high when USB connected FIXME: check ++typedef Gpio<GPIOA_BASE,11> USB_DM_Pin; ++typedef Gpio<GPIOA_BASE,12> USB_DP_Pin; ++} ++ ++// Other than that it's an STLC2690, little is known about the bluetooth chip ++namespace bluetooth { ++//FIXME: which one is the right one? ++typedef Gpio<GPIOA_BASE, 6> Reset_BT2_Pin; //According to sony's website ++typedef Gpio<GPIOA_BASE,15> Reset_BT_Pin; //According to underverk's SmartWatch_Toolchain ++ ++typedef Gpio<GPIOB_BASE,10> BT_CLK_REQ_Pin; ++typedef Gpio<GPIOC_BASE,13> HOST_WAKE_UP_Pin; ++typedef Gpio<GPIOC_BASE, 7> Enable_1V8_BT_Power_Pin; ++typedef Gpio<GPIOC_BASE, 9> BT_nSS_Pin; //Sony calls it SPI3_nSS_Pin ++typedef Gpio<GPIOC_BASE,10> BT_SCK_Pin; //Sony calls it SPI3_SCK_Pin ++typedef Gpio<GPIOC_BASE,11> BT_MISO_Pin; //Sony calls it SPI3_MISO_Pin ++typedef Gpio<GPIOC_BASE,12> BT_MOSI_Pin; //Sony calls it SPI3_MOSI_Pin ++} ++ ++// The mistery pins mentioned in system.c, but never used ++namespace unknown { ++typedef Gpio<GPIOA_BASE, 0> WKUP_Pin; ++//Stands for main clock out, a feature of the STM32 to output an internal clock ++//(either the crystal one, or the PLL one). Ususally is used to clock some ++//other chip saving a clock crystal in the BOM. Maybe it goes to the touchscreen ++//controller? Who knows... ++typedef Gpio<GPIOA_BASE, 8> MCO1_Pin; ++typedef Gpio<GPIOB_BASE, 1> Connect_USB_Pin; ++typedef Gpio<GPIOB_BASE, 2> POWER_3V3_ON_1V8_OFF_Pin; ++typedef Gpio<GPIOB_BASE,12> SPI2_nSS_Pin; //Is there yet another mistery chip ++typedef Gpio<GPIOB_BASE,13> SPI2_SCK_Pin; //connected to this SPI? I don't know ++typedef Gpio<GPIOB_BASE,14> SPI2_MISO_Pin; ++typedef Gpio<GPIOB_BASE,15> SPI2_MOSI_Pin; ++} ++ ++} //namespace miosix ++ ++#endif //HWMAPPING_H +diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/stm32_1M+128k_rom.ld b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/stm32_1M+128k_rom.ld +new file mode 100644 +index 0000000..5e92715 +--- /dev/null ++++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/stm32_1M+128k_rom.ld +@@ -0,0 +1,198 @@ ++/* ++ * C++ enabled linker script for Sony smartwatch ++ * Developed by Terraneo Federico ++ */ ++ ++/* ++ * This linker script puts: ++ * - read only data and code (.text, .rodata, .eh_*) in flash ++ * - stacks, heap and sections .data and .bss in the internal ram ++ * - the external ram (if available) is not used. ++ */ ++ ++/* ++ * The main stack is used for interrupt handling by the kernel. ++ * ++ * *** Readme *** ++ * This linker script places the main stack (used by the kernel for interrupts) ++ * at the bottom of the ram, instead of the top. This is done for two reasons: ++ * ++ * - as an optimization for microcontrollers with little ram memory. In fact ++ * the implementation of malloc from newlib requests memory to the OS in 4KB ++ * block (except the first block that can be smaller). This is probably done ++ * for compatibility with OSes with an MMU and paged memory. To see why this ++ * is bad, consider a microcontroller with 8KB of ram: when malloc finishes ++ * up the first 4KB it will call _sbrk_r asking for a 4KB block, but this will ++ * fail because the top part of the ram is used by the main stack. As a ++ * result, the top part of the memory will not be used by malloc, even if ++ * available (and it is nearly *half* the ram on an 8KB mcu). By placing the ++ * main stack at the bottom of the ram, the upper 4KB block will be entirely ++ * free and available as heap space. ++ * ++ * - In case of main stack overflow the cpu will fault because access to memory ++ * before the beginning of the ram faults. Instead with the default stack ++ * placement the main stack will silently collide with the heap. ++ * Note: if increasing the main stack size also increase the ORIGIN value in ++ * the MEMORY definitions below accordingly. ++ */ ++ ++/* ++ * Taken from underverk's SmartWatch_Toolchain. Doesn't explain why the first ++ * 3K of RAM can't be used. TODO: try to start from 0x20000000 and see what ++ * happens. ++ */ ++_ram_base = 0x20000c00; ++ ++_main_stack_size = 0x00000200; /* main stack = 512Bytes */ ++_main_stack_top = _ram_base + _main_stack_size; ++ASSERT(_main_stack_size % 8 == 0, "MAIN stack size error"); ++ ++/* ++ * End of the heap. Taken from underverk's SmartWatch_Toolchain. Doesn't explain ++ * why the last 2K of RAM can't be used. TODO: try 0x20020000 and see what ++ * happens. ++ */ ++_heap_end = 0x2001f800; /* end of available ram */ ++ ++/* identify the Entry Point */ ++ENTRY(_Z13Reset_Handlerv) ++ ++/* specify the memory areas */ ++MEMORY ++{ ++ /* ++ * Taken from underverk's SmartWatch_Toolchain. The DFU bootloader sits ++ * between 0x08000000 and 0x0800c000, that's 48K. Don't know why the code ++ * can't be placed directly @ 0x0800c000, but by unpacking the original ++ * firmware SmartWatch.dfu resulted in five different binary images: ++ * Base addr | size | ++ * ------------+---------+-------------------------------------------------- ++ * 0x0800c000 | 0x5f00 | Seems the bluetooth driver, no interrupt table, ++ * | | and funnily first 16K are zeros, probably ++ * | | compiled as non-PIC code at 64K from flash base. ++ * 0x08020000 | 0x1b578 | Is a firmware as it starts with an interrupt ++ * | | table, don't know what it does. ++ * 0x0803fffc | 0x188 | Discarding the first 4 bytes, the rest starts ++ * | | @ 0x08040000 and is an interrupt table. ++ * | | Bootloader jumps at this address. The interrupt ++ * | | points to the next firmware image. ++ * 0x08040200 | 0xb02b8 | First part is just pictures data, but there's ++ * | | code at the end, and the lone interrupt table ++ * | | points into it. ++ * 0x080ffffc | 0x4 | Some magic number of some sort. ++ */ ++ flash(rx) : ORIGIN = 0x08040000, LENGTH = 768K ++ ++ /* ++ * Note, the ram starts at _ram_base but it is necessary to add the size ++ * of the main stack. ++ */ ++ ram(wx) : ORIGIN = 0x20000e00, LENGTH = 123K-0x200 ++} ++ ++/* now define the output sections */ ++SECTIONS ++{ ++ . = 0; ++ ++ /* .text section: code goes to flash */ ++ .text : ++ { ++ /* Startup code must go at address 0 */ ++ KEEP(*(.isr_vector)) ++ ++ *(.text) ++ *(.text.*) ++ *(.gnu.linkonce.t.*) ++ /* these sections for thumb interwork? */ ++ *(.glue_7) ++ *(.glue_7t) ++ /* these sections for C++? */ ++ *(.gcc_except_table) ++ *(.gcc_except_table.*) ++ *(.ARM.extab*) ++ *(.gnu.linkonce.armextab.*) ++ ++ . = ALIGN(4); ++ /* .rodata: constant data */ ++ *(.rodata) ++ *(.rodata.*) ++ *(.gnu.linkonce.r.*) ++ ++ /* C++ Static constructors/destructors (eabi) */ ++ . = ALIGN(4); ++ KEEP(*(.init)) ++ ++ . = ALIGN(4); ++ __preinit_array_start = .; ++ KEEP (*(.preinit_array)) ++ __preinit_array_end = .; ++ ++ . = ALIGN(4); ++ __init_array_start = .; ++ KEEP (*(SORT(.init_array.*))) ++ KEEP (*(.init_array)) ++ __init_array_end = .; ++ ++ . = ALIGN(4); ++ KEEP(*(.fini)) ++ ++ . = ALIGN(4); ++ __fini_array_start = .; ++ KEEP (*(.fini_array)) ++ KEEP (*(SORT(.fini_array.*))) ++ __fini_array_end = .; ++ ++ /* C++ Static constructors/destructors (elf) */ ++ . = ALIGN(4); ++ _ctor_start = .; ++ KEEP (*crtbegin.o(.ctors)) ++ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) ++ KEEP (*(SORT(.ctors.*))) ++ KEEP (*crtend.o(.ctors)) ++ _ctor_end = .; ++ ++ . = ALIGN(4); ++ KEEP (*crtbegin.o(.dtors)) ++ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) ++ KEEP (*(SORT(.dtors.*))) ++ KEEP (*crtend.o(.dtors)) ++ } > flash ++ ++ /* .ARM.exidx is sorted, so has to go in its own output section. */ ++ __exidx_start = .; ++ .ARM.exidx : ++ { ++ *(.ARM.exidx* .gnu.linkonce.armexidx.*) ++ } > flash ++ __exidx_end = .; ++ ++ . = ALIGN(8); ++ _etext = .; ++ ++ /* .data section: global variables go to ram, but also store a copy to ++ flash to initialize them */ ++ .data : ALIGN(8) ++ { ++ _data = .; ++ *(.data) ++ *(.data.*) ++ *(.gnu.linkonce.d.*) ++ . = ALIGN(8); ++ _edata = .; ++ } > ram AT > flash ++ ++ /* .bss section: uninitialized global variables go to ram */ ++ _bss_start = .; ++ .bss : ++ { ++ *(.bss) ++ *(.bss.*) ++ *(.gnu.linkonce.b.*) ++ . = ALIGN(8); ++ } > ram ++ _bss_end = .; ++ ++ _end = .; ++ PROVIDE(end = .); ++} +diff --git a/miosix/config/Makefile.inc b/miosix/config/Makefile.inc +index becb278..699f5b3 100644 +--- a/miosix/config/Makefile.inc ++++ b/miosix/config/Makefile.inc +@@ -24,6 +24,7 @@ OPT_BOARD := stm32f103ze_stm3210e-eval + #OPT_BOARD := stm32f207ze_als_camboard + #OPT_BOARD := stm32l151_als_mainboard + #OPT_BOARD := stm32f407vg_bitsboard ++#OPT_BOARD := stm32f205rg_sony-newman + + ## + ## Optimization flags, choose one. +@@ -207,6 +208,12 @@ ifeq ($(OPT_BOARD),stm32f207zg_ethboard_v2) + endif + + ##--------------------------------------------------------------------------- ++## stm32f205rg_sony-newman ++## ++ ++# No options ++ ++##--------------------------------------------------------------------------- + ## stm32f407vg_bitsboard + ## + +@@ -246,6 +253,8 @@ else ifeq ($(OPT_BOARD),stm32f207zg_ethboard_v2) + ARCH := cortexM3_stm32f2 + else ifeq ($(OPT_BOARD),stm32f207ze_als_camboard) + ARCH := cortexM3_stm32f2 ++else ifeq ($(OPT_BOARD),stm32f205rg_sony-newman) ++ ARCH := cortexM3_stm32f2 + else ifeq ($(OPT_BOARD),stm32l151_als_mainboard) + ARCH := cortexM3_stm32l1 + else ifeq ($(OPT_BOARD),stm32f407vg_bitsboard) +@@ -820,6 +829,44 @@ else ifeq ($(ARCH),cortexM3_stm32f2) + PROGRAM_CMDLINE := stm32flash -w main.hex -v /dev/ttyUSB1 + + ##------------------------------------------------------------------------- ++ ## BOARD: stm32f205rg_sony-newman ++ ## ++ else ifeq ($(OPT_BOARD),stm32f205rg_sony-newman) ++ ## Base directory with header files for this board ++ BOARD_INC := arch/cortexM3_stm32f2/stm32f205rg_sony-newman ++ ++ ## Select linker script and boot file ++ ## Their path must be relative to the miosix directory. ++ BOOT_FILE := $(BOARD_INC)/core/stage_1_boot.o ++ LINKER_SCRIPT := $(BOARD_INC)/stm32_1M+128k_rom.ld ++ ++ ## Select architecture specific files ++ ## These are the files in arch/<arch name>/<board name> ++ ARCH_SRC := \ ++ $(BOARD_INC)/interfaces-impl/console.cpp \ ++ $(BOARD_INC)/interfaces-impl/delays.cpp \ ++ $(BOARD_INC)/interfaces-impl/bsp.cpp ++ ++ ## Add a #define to allow querying board name ++ CFLAGS_BASE += -D_BOARD_SONY_NEWMAN ++ CXXFLAGS_BASE += -D_BOARD_SONY_NEWMAN ++ ++ ## Clock frequency ++ CLOCK_FREQ := -DHSE_VALUE=26000000 -DSYSCLK_FREQ_120MHz=120000000 ++ ++ ## Select programmer command line ++ ## This is the program that is invoked when the user types ++ ## 'make program' ++ ## The command must provide a way to program the board, or print an ++ ## error message saying that 'make program' is not supported for that ++ ## board. ++ ## The magic.bin is somewhat used by the bootloader to detect a good fw ++ PROGRAM_CMDLINE := perl -e 'print "\xe7\x91\x11\xc0"' > magic.bin; \ ++ dfu-util -d 0fce:f0fa -a 0 -i 0 -s 0x08040000 -D main.bin; \ ++ dfu-util -d 0fce:f0fa -a 0 -i 0 -s 0x080ffffc -D magic.bin; \ ++ rm magic.bin ++ ++ ##------------------------------------------------------------------------- + ## End of board list + ## + endif +diff --git a/miosix/temp/udev-rules/49-sony-newman-dfu.rules b/miosix/temp/udev-rules/49-sony-newman-dfu.rules +new file mode 100644 +index 0000000..361fad0 +--- /dev/null ++++ b/miosix/temp/udev-rules/49-sony-newman-dfu.rules +@@ -0,0 +1,7 @@ ++# Allows to run the dfu-util as non-root user to program the sony smart watch. ++# Copy in /etc/udev/rules.d ++ ++SUBSYSTEMS=="usb", ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="f0fa", \ ++ MODE:="0666", \ ++ SYMLINK+="newman_%n" ++ +diff --git a/miosix_np_2/nbproject/configurations.xml b/miosix_np_2/nbproject/configurations.xml +index e5c66ec..1d41c78 100644 +--- a/miosix_np_2/nbproject/configurations.xml ++++ b/miosix_np_2/nbproject/configurations.xml +@@ -156,6 +156,16 @@ + </df> + <in>arch_settings.h</in> + </df> ++ <df name="stm32f205rg_sony-newman"> ++ <df name="interfaces-impl"> ++ <in>bsp.cpp</in> ++ <in>bsp_impl.h</in> ++ <in>console.cpp</in> ++ <in>delays.cpp</in> ++ <in>hwmapping.h</in> ++ </df> ++ <in>board_settings.h</in> ++ </df> + <df name="stm32f207ig_stm3220g-eval"> + <df name="core"> + <in>stage_1_boot.cpp</in> +@@ -11608,6 +11618,36 @@ + tool="3" + flavor2="0"> + </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/board_settings.h" + ex="false" + tool="3" +@@ -14360,5 +14400,1107 @@ + <item path="../miosix/util/version.h" ex="false" tool="3" flavor2="0"> + </item> + </conf> ++ <conf name="stm32f205rg_sony-newman" type="0"> ++ <toolsSet> ++ <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode> ++ <compilerSet>ARM_MIOSIX_EABI|GNU</compilerSet> ++ <dependencyChecking>false</dependencyChecking> ++ <rebuildPropChanged>false</rebuildPropChanged> ++ </toolsSet> ++ <codeAssistance> ++ </codeAssistance> ++ <makefileType> ++ <makeTool> ++ <buildCommandWorkingDir>..</buildCommandWorkingDir> ++ <buildCommand>${MAKE} -f Makefile</buildCommand> ++ <cleanCommand>${MAKE} -f Makefile clean</cleanCommand> ++ <executablePath></executablePath> ++ <cTool> ++ <incDir> ++ <pElem>..</pElem> ++ <pElem>../miosix</pElem> ++ <pElem>../miosix/arch/common</pElem> ++ <pElem>../miosix/arch/cortexM3_stm32f2/common</pElem> ++ <pElem>../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard </pElem> ++ </incDir> ++ <preprocessorList> ++ <Elem>_ARCH_CORTEXM3_STM32F2</Elem> ++ <Elem>_BOARD_SONY_NEWMAN</Elem> ++ <Elem>_MIOSIX</Elem> ++ <Elem>_POSIX_THREADS</Elem> ++ </preprocessorList> ++ </cTool> ++ <ccTool> ++ <incDir> ++ <pElem>..</pElem> ++ <pElem>../miosix</pElem> ++ <pElem>../miosix/arch/common</pElem> ++ <pElem>../miosix/arch/cortexM3_stm32f2/common</pElem> ++ <pElem>../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard </pElem> ++ </incDir> ++ <preprocessorList> ++ <Elem>_ARCH_CORTEXM3_STM32F2</Elem> ++ <Elem>_BOARD_SONY_NEWMAN</Elem> ++ <Elem>_MIOSIX</Elem> ++ <Elem>_POSIX_THREADS</Elem> ++ </preprocessorList> ++ </ccTool> ++ </makeTool> ++ </makefileType> ++ <item path="../main.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/common/arch_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/common/interfaces-impl/endianness_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/LPC213x.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/core/interrupts.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/core/interrupts.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/core/stage_1_boot.s" ++ ex="false" ++ tool="4" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/drivers/serial.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/drivers/serial.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/arch_registers_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/delays.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/disk.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/gpio_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/portability.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/portability_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/common/drivers/dcc.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/common/drivers/dcc.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/common/drivers/stm32_hardware_rng.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/common/drivers/stm32_hardware_rng.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/CMSIS/core_cm3.c" ++ ex="false" ++ tool="0" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/CMSIS/core_cm3.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/CMSIS/stm32f10x.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/CMSIS/system_stm32f10x.c" ++ ex="false" ++ tool="0" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/CMSIS/system_stm32f10x.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/arch_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/core/interrupts.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/core/interrupts.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/drivers/serial.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/drivers/serial.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/arch_registers_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/delays.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/disk.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/endianness_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/gpio_impl.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/gpio_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/portability.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/portability_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/hwmapping.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/hwmapping.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/hwmapping.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/CMSIS/core_cm3.c" ++ ex="false" ++ tool="0" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/CMSIS/core_cm3.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/CMSIS/stm32f2xx.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.c" ++ ex="false" ++ tool="0" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/arch_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/core/interrupts.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/core/interrupts.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/arch_registers_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/disk.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/endianness_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/gpio_impl.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/gpio_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/portability.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/portability_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/console-impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/delays.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/console-impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/delays.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/hwmapping.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/console-impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/delays.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/hwmapping.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/core_cm3.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/core_cmFunc.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/core_cmInstr.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/stm32l1xx.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/system_stm32l1xx.c" ++ ex="false" ++ tool="0" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/system_stm32l1xx.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/arch_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/core/interrupts.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/core/interrupts.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/arch_registers_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/delays.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/endianness_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/gpio_impl.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/gpio_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/portability.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/portability_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/console-impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/hwmapping.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/core_cm4.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/core_cm4_simd.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/core_cmFunc.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/core_cmInstr.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/stm32f4xx.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/system_stm32f4xx.c" ++ ex="false" ++ tool="0" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/system_stm32f4xx.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/arch_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/core/interrupts.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/core/interrupts.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/arch_registers_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/delays.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/disk.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/endianness_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/gpio_impl.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/gpio_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/portability.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/portability_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/console-impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/board_settings.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/core/stage_1_boot.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/bsp.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/bsp_impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/console-impl.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/console.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/config/miosix_settings.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/e20/callback.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/e20/e20.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/examples/asm/main.s" ex="false" tool="4" flavor2="0"> ++ </item> ++ <item path="../miosix/examples/blinking_led/simple.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/examples/sad_trombone/adpcm.c" ++ ex="false" ++ tool="0" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/examples/sad_trombone/adpcm.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/examples/sad_trombone/convert.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/examples/sad_trombone/main.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/examples/sad_trombone/player.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/examples/sad_trombone/player.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/examples/sad_trombone/sad_trombone.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/examples/thread_native/native_thread_example.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/examples/thread_pthread/pthread_example.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/interfaces/arch_registers.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/interfaces/bsp.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/interfaces/console.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/interfaces/delays.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/interfaces/disk.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/interfaces/endianness.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/interfaces/gpio.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/interfaces/portability.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/buffer_queue.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/error.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/error.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/filesystem/diskio.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/filesystem/diskio.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/filesystem/ff.c" ex="false" tool="0" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/filesystem/ff.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/filesystem/filesystem.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/filesystem/filesystem.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/filesystem/integer.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/kernel.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/kernel.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/logging.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/pthread.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/pthread_private.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/control/control_scheduler.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/control/control_scheduler.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/control/control_scheduler_types.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/control/parameters.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/edf/edf_scheduler.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/edf/edf_scheduler.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/edf/edf_scheduler_types.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/priority/priority_scheduler.cpp" ++ ex="false" ++ tool="1" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/priority/priority_scheduler.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/priority/priority_scheduler_types.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/sched_types.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/scheduler.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/scheduler/tick_interrupt.h" ++ ex="false" ++ tool="3" ++ flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/stage_2_boot.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/sync.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/sync.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/syscalls.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/syscalls.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/syscalls_types.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/kernel/unistd.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/miosix.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/testsuite/testsuite.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/util/crc16.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/util/crc16.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/util/lcd44780.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/util/lcd44780.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/util/software_i2c.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/util/software_spi.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/util/util.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/util/util.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ <item path="../miosix/util/version.cpp" ex="false" tool="1" flavor2="0"> ++ </item> ++ <item path="../miosix/util/version.h" ex="false" tool="3" flavor2="0"> ++ </item> ++ </conf> + </confs> + </configurationDescriptor> +diff --git a/miosix_np_2/nbproject/private/configurations.xml b/miosix_np_2/nbproject/private/configurations.xml +index 6cb1d04..3701528 100644 +--- a/miosix_np_2/nbproject/private/configurations.xml ++++ b/miosix_np_2/nbproject/private/configurations.xml +@@ -156,6 +156,19 @@ + </df> + <in>arch_settings.h</in> + </df> ++ <df name="stm32f205rg_sony-newman"> ++ <df name="core"> ++ <in>stage_1_boot.cpp</in> ++ </df> ++ <df name="interfaces-impl"> ++ <in>bsp.cpp</in> ++ <in>bsp_impl.h</in> ++ <in>console.cpp</in> ++ <in>delays.cpp</in> ++ <in>hwmapping.h</in> ++ </df> ++ <in>board_settings.h</in> ++ </df> + <df name="stm32f207ig_stm3220g-eval"> + <df name="core"> + <in>stage_1_boot.cpp</in> +@@ -415,13 +428,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -460,13 +473,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -505,13 +518,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -550,13 +563,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -595,13 +608,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -640,13 +653,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -685,13 +698,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -730,13 +743,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -775,13 +788,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -820,13 +833,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -865,13 +878,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -910,13 +923,13 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> +- <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +@@ -955,13 +968,58 @@ + </toolsSet> + <compile> + <compiledirpicklist> +- <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> ++ <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> ++ </compilecommandpicklist> ++ <compilecommand>${AUTO_COMPILE}</compilecommand> ++ </compile> ++ <dbx_gdbdebugger version="1"> ++ <gdb_pathmaps> ++ </gdb_pathmaps> ++ <gdb_interceptlist> ++ <gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/> ++ </gdb_interceptlist> ++ <gdb_options> ++ <DebugOptions> ++ </DebugOptions> ++ </gdb_options> ++ <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/> ++ </dbx_gdbdebugger> ++ <nativedebugger version="1"> ++ <engine>gdb</engine> ++ </nativedebugger> ++ <runprofile version="9"> ++ <runcommandpicklist> ++ <runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem> ++ </runcommandpicklist> ++ <runcommand>"${OUTPUT_PATH}"</runcommand> ++ <rundir></rundir> ++ <buildfirst>true</buildfirst> ++ <terminal-type>0</terminal-type> ++ <remove-instrumentation>0</remove-instrumentation> ++ <environment> ++ </environment> ++ </runprofile> ++ </conf> ++ <conf name="stm32f205rg_sony-newman" type="0"> ++ <toolsSet> ++ <developmentServer>localhost</developmentServer> ++ <platform>2</platform> ++ </toolsSet> ++ <compile> ++ <compiledirpicklist> ++ <compiledirpicklistitem>.</compiledirpicklistitem> ++ <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> ++ </compiledirpicklist> ++ <compiledir>${AUTO_FOLDER}</compiledir> ++ <compilecommandpicklist> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> ++ <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> +diff --git a/miosix_np_2/nbproject/private/private.xml b/miosix_np_2/nbproject/private/private.xml +index 0d841f0..5348947 100644 +--- a/miosix_np_2/nbproject/private/private.xml ++++ b/miosix_np_2/nbproject/private/private.xml +@@ -5,7 +5,7 @@ + </code-assistance-data> + <data xmlns="http://www.netbeans.org/ns/make-project-private/1"> + <activeConfTypeElem>0</activeConfTypeElem> +- <activeConfIndexElem>10</activeConfIndexElem> ++ <activeConfIndexElem>2</activeConfIndexElem> + </data> + <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/> + <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> +diff --git a/miosix_np_2/nbproject/project.xml b/miosix_np_2/nbproject/project.xml +index 84a0765..cceeaa7 100644 +--- a/miosix_np_2/nbproject/project.xml ++++ b/miosix_np_2/nbproject/project.xml +@@ -66,6 +66,10 @@ + <name>stm32f407vg_bitsboard</name> + <type>0</type> + </confElem> ++ <confElem> ++ <name>stm32f205rg_sony-newman</name> ++ <type>0</type> ++ </confElem> + </confList> + </data> + </configuration> diff --git a/miosix/arch/cortexM3_stm32f2/common/CMSIS/stm32f2xx.h b/miosix/arch/cortexM3_stm32f2/common/CMSIS/stm32f2xx.h index d203a85e..8e3966b0 100644 --- a/miosix/arch/cortexM3_stm32f2/common/CMSIS/stm32f2xx.h +++ b/miosix/arch/cortexM3_stm32f2/common/CMSIS/stm32f2xx.h @@ -12,15 +12,15 @@ * is using in the C source code, usually in main.c. This file contains: * - Configuration section that allows to select: * - The device used in the target application - * - To use or not the peripheral�s drivers in application code(i.e. - * code will be based on direct access to peripheral�s registers + * - To use or not the peripheral's drivers in application code(i.e. + * code will be based on direct access to peripheral's registers * rather than drivers API), this option is controlled by * "#define USE_STDPERIPH_DRIVER" * - To change few application-specific parameters such as the HSE * crystal frequency * - Data structures and the address mapping for all peripherals * - Peripheral's registers declarations and bits definition - * - Macros to access peripheral�s registers hardware + * - Macros to access peripheral's registers hardware * ****************************************************************************** * @attention @@ -991,7 +991,11 @@ typedef struct * @{ */ +#ifndef _BOARD_SONY_NEWMAN //By TFT: the smartwatch has a bootloader #define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */ +#else //_BOARD_SONY_NEWMAN +#define FLASH_BASE ((uint32_t)0x08040000) +#endif //_BOARD_SONY_NEWMAN #define SRAM_BASE ((uint32_t)0x20000000) /*!< SRAM base address in the alias region */ #define PERIPH_BASE ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */ diff --git a/miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.c b/miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.c index 17aca429..fc370531 100644 --- a/miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.c +++ b/miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.c @@ -365,6 +365,17 @@ static void SetSysClock(void) if (HSEStatus == (uint32_t)0x01) { + #ifdef _BOARD_SONY_NEWMAN + //By TFT: We don't know how the clock is configured by the bootloader, + //so better switch to the HSE and disable the PLL. + unsigned int temp=RCC->CFGR; + temp &= ~RCC_CFGR_SW; /* Clear SW[1:0] bits */ + temp |= RCC_CFGR_SW_0; /* Enable HSE as system clock */ + RCC->CFGR=temp; + while((RCC->CFGR & RCC_CFGR_SWS)!=RCC_CFGR_SWS_0) ; + RCC->CR &= ~ RCC_CR_PLLON; + #endif //_BOARD_SONY_NEWMAN + /* HCLK = SYSCLK / 1*/ RCC->CFGR |= RCC_CFGR_HPRE_DIV1; diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h new file mode 100644 index 00000000..d97f651c --- /dev/null +++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (C) 2013 by Terraneo Federico * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * As a special exception, if other files instantiate templates or use * + * macros or inline functions from this file, or you compile this file * + * and link it with other works to produce a work based on this file, * + * this file does not by itself cause the resulting work to be covered * + * by the GNU General Public License. However the source code for this * + * file must still be made available in accordance with the GNU General * + * Public License. This exception does not invalidate any other reasons * + * why a work based on this file might be covered by the GNU General * + * Public License. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, see <http://www.gnu.org/licenses/> * + ***************************************************************************/ + +#ifndef BOARD_SETTINGS_H +#define BOARD_SETTINGS_H + +namespace miosix { + +/** + * \addtogroup Settings + * \{ + */ + +/// Size of stack for main(). +/// The C standard library is stack-heavy (iprintf requires 1.5KB) and the +/// STM32F207ZG has 128KB of RAM so there is room for a big 4K stack. +const unsigned int MAIN_STACK_SIZE=4*1024; + +/// Frequency of tick (in Hz). The frequency of the STM32F207ZG timer in the +/// Miosix board can be divided by 1000. This allows to use a 1KHz tick and +/// the minimun Thread::sleep value is 1ms +/// For the priority scheduler this is also the context switch frequency +const unsigned int TICK_FREQ=1000; + +///\internal Aux timer run @ 100KHz +///Note that since the timer is only 16 bits this imposes a limit on the +///burst measurement of 655ms. If due to a pause_kernel() or +///disable_interrupts() section a thread runs for more than that time, a wrong +///burst value will be measured +const unsigned int AUX_TIMER_CLOCK=100000; +const unsigned int AUX_TIMER_MAX=0xffff; ///<\internal Aux timer is 16 bits + +/** + * \} + */ + +} //namespace miosix + +#endif /* BOARD_SETTINGS_H */ diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/core/stage_1_boot.cpp b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/core/stage_1_boot.cpp new file mode 100644 index 00000000..669c52aa --- /dev/null +++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/core/stage_1_boot.cpp @@ -0,0 +1,416 @@ + +#include "interfaces/arch_registers.h" +#include "core/interrupts.h" //For the unexpected interrupt call +#include <string.h> + +/* + * startup.cpp + * STM32 C++ startup. + * NOTE: for stm32f2 devices ONLY. + * - supports interrupt handlers in C++ without extern "C" + * - global constructors are correctly called before main() + * Developed by Terraneo Federico, based on ST startup code. + * Additionally modified to boot Miosix. + */ + +//Will be called at the end of stage 1 of boot, function is implemented in +//stage_2_boot.cpp +extern "C" void _init(); + +/** + * Calls C++ global constructors + * \param start first function pointer to call + * \param end one past the last function pointer to call + * Declared "noinline" to optimize code size + */ +static void call_constructors(unsigned long *start, unsigned long *end) __attribute__((noinline)); +static void call_constructors(unsigned long *start, unsigned long *end) +{ + for(unsigned long *i=start; i<end; i++) + { + void (*funcptr)(); + funcptr=reinterpret_cast<void (*)()>(*i); + funcptr(); + } +} + +/** + * Called by Reset_Handler, performs initialization and calls main. + * Never returns. + */ +void program_startup() __attribute__((noreturn)); +void program_startup() +{ + //Cortex M3 core appears to get out of reset with interrupts already enabled + __disable_irq(); + + //These are defined in the linker script + extern unsigned char _etext asm("_etext"); + extern unsigned char _data asm("_data"); + extern unsigned char _edata asm("_edata"); + extern unsigned char _bss_start asm("_bss_start"); + extern unsigned char _bss_end asm("_bss_end"); + extern unsigned long __preinit_array_start asm("__preinit_array_start"); + extern unsigned long __preinit_array_end asm("__preinit_array_end"); + extern unsigned long __init_array_start asm("__init_array_start"); + extern unsigned long __init_array_end asm("__init_array_end"); + extern unsigned long _ctor_start asm("_ctor_start"); + extern unsigned long _ctor_end asm("_ctor_end"); + + //Initialize .data section, clear .bss section + unsigned char *etext=&_etext; + unsigned char *data=&_data; + unsigned char *edata=&_edata; + unsigned char *bss_start=&_bss_start; + unsigned char *bss_end=&_bss_end; + //The memcpy is usually enclosed in an #ifndef __ENABLE_XRAM, in other + //boards but in this case it is not, since the *_code_in_xram.ld linker + //script puts code in XRAM, but data in the internal one, so there's still + //the need to copy it in its final place + memcpy(data, etext, edata-data); + memset(bss_start, 0, bss_end-bss_start); + + //Initialize C++ global constructors + call_constructors(&__preinit_array_start, &__preinit_array_end); + call_constructors(&__init_array_start, &__init_array_end); + call_constructors(&_ctor_start, &_ctor_end); + + //Move on to stage 2 + _init(); + + //If main returns, reboot + NVIC_SystemReset(); + for(;;) ; +} + +/** + * Reset handler, called by hardware immediately after reset + */ +void Reset_Handler() __attribute__((__interrupt__, noreturn)); +void Reset_Handler() +{ + /* + * SystemInit() is called *before* initializing .data and zeroing .bss + * Despite all startup files provided by ST do the opposite, there are three + * good reasons to do so: + * First, the CMSIS specifications say that SystemInit() must not access + * global variables, so it is actually possible to call it before + * Second, when running Miosix with the xram linker scripts .data and .bss + * are placed in the external RAM, so we *must* call SystemInit(), which + * enables xram, before touching .data and .bss + * Third, this is a performance improvement since the loops that initialize + * .data and zeros .bss now run with the CPU at full speed instead of 16MHz + * Note that it is called before switching stacks because the memory + * at _heap_end can be unavailable until the external RAM is initialized. + */ + SystemInit(); + + /* + * Initialize process stack and switch to it. + * This is required for booting Miosix, a small portion of the top of the + * heap area will be used as stack until the first thread starts. After, + * this stack will be abandoned and the process stack will point to the + * current thread's stack. + */ + asm volatile("ldr r0, =_heap_end \n\t" + "msr psp, r0 \n\t" + "movw r0, #2 \n\n" //Privileged, process stack + "msr control, r0 \n\t" + "isb \n\t":::"r0"); + + program_startup(); +} + +/** + * All unused interrupts call this function. + */ +extern "C" void Default_Handler() +{ + unexpectedInterrupt(); +} + +//System handlers +void /*__attribute__((weak))*/ Reset_Handler(); //These interrupts are not +void /*__attribute__((weak))*/ NMI_Handler(); //weak because they are +void /*__attribute__((weak))*/ HardFault_Handler(); //surely defined by Miosix +void /*__attribute__((weak))*/ MemManage_Handler(); +void /*__attribute__((weak))*/ BusFault_Handler(); +void /*__attribute__((weak))*/ UsageFault_Handler(); +void /*__attribute__((weak))*/ SVC_Handler(); +void /*__attribute__((weak))*/ DebugMon_Handler(); +void /*__attribute__((weak))*/ PendSV_Handler(); +void /*__attribute__((weak))*/ SysTick_Handler(); + +//Interrupt handlers +void __attribute__((weak)) WWDG_IRQHandler(); +void __attribute__((weak)) PVD_IRQHandler(); +void __attribute__((weak)) TAMP_STAMP_IRQHandler(); +void __attribute__((weak)) RTC_WKUP_IRQHandler(); +void __attribute__((weak)) FLASH_IRQHandler(); +void __attribute__((weak)) RCC_IRQHandler(); +void __attribute__((weak)) EXTI0_IRQHandler(); +void __attribute__((weak)) EXTI1_IRQHandler(); +void __attribute__((weak)) EXTI2_IRQHandler(); +void __attribute__((weak)) EXTI3_IRQHandler(); +void __attribute__((weak)) EXTI4_IRQHandler(); +void __attribute__((weak)) DMA1_Stream0_IRQHandler(); +void __attribute__((weak)) DMA1_Stream1_IRQHandler(); +void __attribute__((weak)) DMA1_Stream2_IRQHandler(); +void __attribute__((weak)) DMA1_Stream3_IRQHandler(); +void __attribute__((weak)) DMA1_Stream4_IRQHandler(); +void __attribute__((weak)) DMA1_Stream5_IRQHandler(); +void __attribute__((weak)) DMA1_Stream6_IRQHandler(); +void __attribute__((weak)) ADC_IRQHandler(); +void __attribute__((weak)) CAN1_TX_IRQHandler(); +void __attribute__((weak)) CAN1_RX0_IRQHandler(); +void __attribute__((weak)) CAN1_RX1_IRQHandler(); +void __attribute__((weak)) CAN1_SCE_IRQHandler(); +void __attribute__((weak)) EXTI9_5_IRQHandler(); +void __attribute__((weak)) TIM1_BRK_TIM9_IRQHandler(); +void __attribute__((weak)) TIM1_UP_TIM10_IRQHandler(); +void __attribute__((weak)) TIM1_TRG_COM_TIM11_IRQHandler(); +void __attribute__((weak)) TIM1_CC_IRQHandler(); +void __attribute__((weak)) TIM2_IRQHandler(); +void __attribute__((weak)) TIM3_IRQHandler(); +void __attribute__((weak)) TIM4_IRQHandler(); +void __attribute__((weak)) I2C1_EV_IRQHandler(); +void __attribute__((weak)) I2C1_ER_IRQHandler(); +void __attribute__((weak)) I2C2_EV_IRQHandler(); +void __attribute__((weak)) I2C2_ER_IRQHandler(); +void __attribute__((weak)) SPI1_IRQHandler(); +void __attribute__((weak)) SPI2_IRQHandler(); +void __attribute__((weak)) USART1_IRQHandler(); +void __attribute__((weak)) USART2_IRQHandler(); +void __attribute__((weak)) USART3_IRQHandler(); +void __attribute__((weak)) EXTI15_10_IRQHandler(); +void __attribute__((weak)) RTC_Alarm_IRQHandler(); +void __attribute__((weak)) OTG_FS_WKUP_IRQHandler(); +void __attribute__((weak)) TIM8_BRK_TIM12_IRQHandler(); +void __attribute__((weak)) TIM8_UP_TIM13_IRQHandler(); +void __attribute__((weak)) TIM8_TRG_COM_TIM14_IRQHandler(); +void __attribute__((weak)) TIM8_CC_IRQHandler(); +void __attribute__((weak)) DMA1_Stream7_IRQHandler(); +void __attribute__((weak)) FSMC_IRQHandler(); +void __attribute__((weak)) SDIO_IRQHandler(); +void __attribute__((weak)) TIM5_IRQHandler(); +void __attribute__((weak)) SPI3_IRQHandler(); +void __attribute__((weak)) UART4_IRQHandler(); +void __attribute__((weak)) UART5_IRQHandler(); +void __attribute__((weak)) TIM6_DAC_IRQHandler(); +void __attribute__((weak)) TIM7_IRQHandler(); +void __attribute__((weak)) DMA2_Stream0_IRQHandler(); +void __attribute__((weak)) DMA2_Stream1_IRQHandler(); +void __attribute__((weak)) DMA2_Stream2_IRQHandler(); +void __attribute__((weak)) DMA2_Stream3_IRQHandler(); +void __attribute__((weak)) DMA2_Stream4_IRQHandler(); +void __attribute__((weak)) ETH_IRQHandler(); +void __attribute__((weak)) ETH_WKUP_IRQHandler(); +void __attribute__((weak)) CAN2_TX_IRQHandler(); +void __attribute__((weak)) CAN2_RX0_IRQHandler(); +void __attribute__((weak)) CAN2_RX1_IRQHandler(); +void __attribute__((weak)) CAN2_SCE_IRQHandler(); +void __attribute__((weak)) OTG_FS_IRQHandler(); +void __attribute__((weak)) DMA2_Stream5_IRQHandler(); +void __attribute__((weak)) DMA2_Stream6_IRQHandler(); +void __attribute__((weak)) DMA2_Stream7_IRQHandler(); +void __attribute__((weak)) USART6_IRQHandler(); +void __attribute__((weak)) I2C3_EV_IRQHandler(); +void __attribute__((weak)) I2C3_ER_IRQHandler(); +void __attribute__((weak)) OTG_HS_EP1_OUT_IRQHandler(); +void __attribute__((weak)) OTG_HS_EP1_IN_IRQHandler(); +void __attribute__((weak)) OTG_HS_WKUP_IRQHandler(); +void __attribute__((weak)) OTG_HS_IRQHandler(); +void __attribute__((weak)) DCMI_IRQHandler(); +void __attribute__((weak)) CRYP_IRQHandler(); +void __attribute__((weak)) HASH_RNG_IRQHandler(); + +//Stack top, defined in the linker script +extern char _main_stack_top asm("_main_stack_top"); + +//Interrupt vectors, must be placed @ address 0x00000000 +//The extern declaration is required otherwise g++ optimizes it out +extern void (* const __Vectors[])(); +void (* const __Vectors[])() __attribute__ ((section(".isr_vector"))) = +{ + reinterpret_cast<void (*)()>(&_main_stack_top),/* Stack pointer*/ + Reset_Handler, /* Reset Handler */ + NMI_Handler, /* NMI Handler */ + HardFault_Handler, /* Hard Fault Handler */ + MemManage_Handler, /* MPU Fault Handler */ + BusFault_Handler, /* Bus Fault Handler */ + UsageFault_Handler, /* Usage Fault Handler */ + 0, /* Reserved */ + 0, /* Reserved */ + 0, /* Reserved */ + 0, /* Reserved */ + SVC_Handler, /* SVCall Handler */ + DebugMon_Handler, /* Debug Monitor Handler */ + 0, /* Reserved */ + PendSV_Handler, /* PendSV Handler */ + SysTick_Handler, /* SysTick Handler */ + + /* External Interrupts */ + WWDG_IRQHandler, + PVD_IRQHandler, + TAMP_STAMP_IRQHandler, + RTC_WKUP_IRQHandler, + FLASH_IRQHandler, + RCC_IRQHandler, + EXTI0_IRQHandler, + EXTI1_IRQHandler, + EXTI2_IRQHandler, + EXTI3_IRQHandler, + EXTI4_IRQHandler, + DMA1_Stream0_IRQHandler, + DMA1_Stream1_IRQHandler, + DMA1_Stream2_IRQHandler, + DMA1_Stream3_IRQHandler, + DMA1_Stream4_IRQHandler, + DMA1_Stream5_IRQHandler, + DMA1_Stream6_IRQHandler, + ADC_IRQHandler, + CAN1_TX_IRQHandler, + CAN1_RX0_IRQHandler, + CAN1_RX1_IRQHandler, + CAN1_SCE_IRQHandler, + EXTI9_5_IRQHandler, + TIM1_BRK_TIM9_IRQHandler, + TIM1_UP_TIM10_IRQHandler, + TIM1_TRG_COM_TIM11_IRQHandler, + TIM1_CC_IRQHandler, + TIM2_IRQHandler, + TIM3_IRQHandler, + TIM4_IRQHandler, + I2C1_EV_IRQHandler, + I2C1_ER_IRQHandler, + I2C2_EV_IRQHandler, + I2C2_ER_IRQHandler, + SPI1_IRQHandler, + SPI2_IRQHandler, + USART1_IRQHandler, + USART2_IRQHandler, + USART3_IRQHandler, + EXTI15_10_IRQHandler, + RTC_Alarm_IRQHandler, + OTG_FS_WKUP_IRQHandler, + TIM8_BRK_TIM12_IRQHandler, + TIM8_UP_TIM13_IRQHandler, + TIM8_TRG_COM_TIM14_IRQHandler, + TIM8_CC_IRQHandler, + DMA1_Stream7_IRQHandler, + FSMC_IRQHandler, + SDIO_IRQHandler, + TIM5_IRQHandler, + SPI3_IRQHandler, + UART4_IRQHandler, + UART5_IRQHandler, + TIM6_DAC_IRQHandler, + TIM7_IRQHandler, + DMA2_Stream0_IRQHandler, + DMA2_Stream1_IRQHandler, + DMA2_Stream2_IRQHandler, + DMA2_Stream3_IRQHandler, + DMA2_Stream4_IRQHandler, + ETH_IRQHandler, + ETH_WKUP_IRQHandler, + CAN2_TX_IRQHandler, + CAN2_RX0_IRQHandler, + CAN2_RX1_IRQHandler, + CAN2_SCE_IRQHandler, + OTG_FS_IRQHandler, + DMA2_Stream5_IRQHandler, + DMA2_Stream6_IRQHandler, + DMA2_Stream7_IRQHandler, + USART6_IRQHandler, + I2C3_EV_IRQHandler, + I2C3_ER_IRQHandler, + OTG_HS_EP1_OUT_IRQHandler, + OTG_HS_EP1_IN_IRQHandler, + OTG_HS_WKUP_IRQHandler, + OTG_HS_IRQHandler, + DCMI_IRQHandler, + CRYP_IRQHandler, + HASH_RNG_IRQHandler, +}; + +#pragma weak WWDG_IRQHandler = Default_Handler +#pragma weak PVD_IRQHandler = Default_Handler +#pragma weak TAMP_STAMP_IRQHandler = Default_Handler +#pragma weak RTC_WKUP_IRQHandler = Default_Handler +#pragma weak FLASH_IRQHandler = Default_Handler +#pragma weak RCC_IRQHandler = Default_Handler +#pragma weak EXTI0_IRQHandler = Default_Handler +#pragma weak EXTI1_IRQHandler = Default_Handler +#pragma weak EXTI2_IRQHandler = Default_Handler +#pragma weak EXTI3_IRQHandler = Default_Handler +#pragma weak EXTI4_IRQHandler = Default_Handler +#pragma weak DMA1_Stream0_IRQHandler = Default_Handler +#pragma weak DMA1_Stream1_IRQHandler = Default_Handler +#pragma weak DMA1_Stream2_IRQHandler = Default_Handler +#pragma weak DMA1_Stream3_IRQHandler = Default_Handler +#pragma weak DMA1_Stream4_IRQHandler = Default_Handler +#pragma weak DMA1_Stream5_IRQHandler = Default_Handler +#pragma weak DMA1_Stream6_IRQHandler = Default_Handler +#pragma weak ADC_IRQHandler = Default_Handler +#pragma weak CAN1_TX_IRQHandler = Default_Handler +#pragma weak CAN1_RX0_IRQHandler = Default_Handler +#pragma weak CAN1_RX1_IRQHandler = Default_Handler +#pragma weak CAN1_SCE_IRQHandler = Default_Handler +#pragma weak EXTI9_5_IRQHandler = Default_Handler +#pragma weak TIM1_BRK_TIM9_IRQHandler = Default_Handler +#pragma weak TIM1_UP_TIM10_IRQHandler = Default_Handler +#pragma weak TIM1_TRG_COM_TIM11_IRQHandler = Default_Handler +#pragma weak TIM1_CC_IRQHandler = Default_Handler +#pragma weak TIM2_IRQHandler = Default_Handler +#pragma weak TIM3_IRQHandler = Default_Handler +#pragma weak TIM4_IRQHandler = Default_Handler +#pragma weak I2C1_EV_IRQHandler = Default_Handler +#pragma weak I2C1_ER_IRQHandler = Default_Handler +#pragma weak I2C2_EV_IRQHandler = Default_Handler +#pragma weak I2C2_ER_IRQHandler = Default_Handler +#pragma weak SPI1_IRQHandler = Default_Handler +#pragma weak SPI2_IRQHandler = Default_Handler +#pragma weak USART1_IRQHandler = Default_Handler +#pragma weak USART2_IRQHandler = Default_Handler +#pragma weak USART3_IRQHandler = Default_Handler +#pragma weak EXTI15_10_IRQHandler = Default_Handler +#pragma weak RTC_Alarm_IRQHandler = Default_Handler +#pragma weak OTG_FS_WKUP_IRQHandler = Default_Handler +#pragma weak TIM8_BRK_TIM12_IRQHandler = Default_Handler +#pragma weak TIM8_UP_TIM13_IRQHandler = Default_Handler +#pragma weak TIM8_TRG_COM_TIM14_IRQHandler = Default_Handler +#pragma weak TIM8_CC_IRQHandler = Default_Handler +#pragma weak DMA1_Stream7_IRQHandler = Default_Handler +#pragma weak FSMC_IRQHandler = Default_Handler +#pragma weak SDIO_IRQHandler = Default_Handler +#pragma weak TIM5_IRQHandler = Default_Handler +#pragma weak SPI3_IRQHandler = Default_Handler +#pragma weak UART4_IRQHandler = Default_Handler +#pragma weak UART5_IRQHandler = Default_Handler +#pragma weak TIM6_DAC_IRQHandler = Default_Handler +#pragma weak TIM7_IRQHandler = Default_Handler +#pragma weak DMA2_Stream0_IRQHandler = Default_Handler +#pragma weak DMA2_Stream1_IRQHandler = Default_Handler +#pragma weak DMA2_Stream2_IRQHandler = Default_Handler +#pragma weak DMA2_Stream3_IRQHandler = Default_Handler +#pragma weak DMA2_Stream4_IRQHandler = Default_Handler +#pragma weak ETH_IRQHandler = Default_Handler +#pragma weak ETH_WKUP_IRQHandler = Default_Handler +#pragma weak CAN2_TX_IRQHandler = Default_Handler +#pragma weak CAN2_RX0_IRQHandler = Default_Handler +#pragma weak CAN2_RX1_IRQHandler = Default_Handler +#pragma weak CAN2_SCE_IRQHandler = Default_Handler +#pragma weak OTG_FS_IRQHandler = Default_Handler +#pragma weak DMA2_Stream5_IRQHandler = Default_Handler +#pragma weak DMA2_Stream6_IRQHandler = Default_Handler +#pragma weak DMA2_Stream7_IRQHandler = Default_Handler +#pragma weak USART6_IRQHandler = Default_Handler +#pragma weak I2C3_EV_IRQHandler = Default_Handler +#pragma weak I2C3_ER_IRQHandler = Default_Handler +#pragma weak OTG_HS_EP1_OUT_IRQHandler = Default_Handler +#pragma weak OTG_HS_EP1_IN_IRQHandler = Default_Handler +#pragma weak OTG_HS_WKUP_IRQHandler = Default_Handler +#pragma weak OTG_HS_IRQHandler = Default_Handler +#pragma weak DCMI_IRQHandler = Default_Handler +#pragma weak CRYP_IRQHandler = Default_Handler +#pragma weak HASH_RNG_IRQHandler = Default_Handler diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp new file mode 100644 index 00000000..8e1132f9 --- /dev/null +++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp @@ -0,0 +1,204 @@ +/*************************************************************************** + * Copyright (C) 2013 by Terraneo Federico * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * As a special exception, if other files instantiate templates or use * + * macros or inline functions from this file, or you compile this file * + * and link it with other works to produce a work based on this file, * + * this file does not by itself cause the resulting work to be covered * + * by the GNU General Public License. However the source code for this * + * file must still be made available in accordance with the GNU General * + * Public License. This exception does not invalidate any other reasons * + * why a work based on this file might be covered by the GNU General * + * Public License. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, see <http://www.gnu.org/licenses/> * + ***************************************************************************/ + +/*********************************************************************** +* bsp.cpp Part of the Miosix Embedded OS. +* Board support package, this file initializes hardware. +************************************************************************/ + +#include <cstdlib> +#include "interfaces/bsp.h" +#include "kernel/kernel.h" +#include "interfaces/delays.h" +#include "interfaces/portability.h" +#include "interfaces/arch_registers.h" +#include "config/miosix_settings.h" + +namespace miosix { + +// +// Initialization +// + +void IRQbspInit() +{ + //Enable all gpios + RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN + | RCC_AHB1ENR_GPIOBEN + | RCC_AHB1ENR_GPIOCEN; + + using namespace oled; + OLED_nSS_Pin::mode(Mode::OUTPUT); + OLED_nSS_Pin::high(); + OLED_nSS_Pin::speed(Speed::_100MHz); //Without changing the default speed + OLED_SCK_Pin::mode(Mode::ALTERNATE); //OLED does not work! + OLED_SCK_Pin::alternateFunction(5); + OLED_SCK_Pin::speed(Speed::_100MHz); + OLED_MOSI_Pin::mode(Mode::ALTERNATE); + OLED_MOSI_Pin::alternateFunction(5); + OLED_MOSI_Pin::speed(Speed::_100MHz); + OLED_A0_Pin::mode(Mode::OUTPUT); + OLED_A0_Pin::low(); + OLED_A0_Pin::speed(Speed::_100MHz); + OLED_Reset_Pin::mode(Mode::OUTPUT); + OLED_Reset_Pin::low(); + OLED_Reset_Pin::speed(Speed::_50MHz); + OLED_V_ENABLE_Pin::mode(Mode::OUTPUT); + OLED_V_ENABLE_Pin::low(); + OLED_V_ENABLE_Pin::speed(Speed::_50MHz); + + using namespace touch; + Touch_Reset_Pin::mode(Mode::OUTPUT); + Touch_Reset_Pin::low(); + Touch_Reset_Pin::speed(Speed::_50MHz); + TOUCH_WKUP_INT_Pin::mode(Mode::INPUT); + + using namespace power; + BATT_V_ON_Pin::mode(Mode::OUTPUT); + BATT_V_ON_Pin::low(); + BATT_V_ON_Pin::speed(Speed::_50MHz); + BAT_V_Pin::mode(Mode::INPUT_ANALOG); + ENABLE_LIGHT_SENSOR_Pin::mode(Mode::OUTPUT); + ENABLE_LIGHT_SENSOR_Pin::low(); + ENABLE_LIGHT_SENSOR_Pin::speed(Speed::_50MHz); + LIGHT_SENSOR_ANALOG_OUT_Pin::mode(Mode::INPUT_ANALOG); + ENABLE_2V8_Pin::mode(Mode::OUTPUT); + ENABLE_2V8_Pin::low(); + ENABLE_2V8_Pin::speed(Speed::_50MHz); + HoldPower_Pin::mode(Mode::OPEN_DRAIN); + HoldPower_Pin::high(); + HoldPower_Pin::speed(Speed::_50MHz); + + ACCELEROMETER_INT_Pin::mode(Mode::INPUT_PULL_DOWN); + + using namespace i2c; + I2C_SCL_Pin::mode(Mode::ALTERNATE); + I2C_SCL_Pin::alternateFunction(4); + I2C_SCL_Pin::speed(Speed::_50MHz); + I2C_SDA_Pin::mode(Mode::ALTERNATE); + I2C_SDA_Pin::alternateFunction(4); + I2C_SDA_Pin::speed(Speed::_50MHz); + + BUZER_PWM_Pin::mode(Mode::OUTPUT); + BUZER_PWM_Pin::low(); + BUZER_PWM_Pin::speed(Speed::_50MHz); + + POWER_BTN_PRESS_Pin::mode(Mode::INPUT); + + using namespace usb; + USB5V_Detected_Pin::mode(Mode::INPUT_PULL_DOWN); + USB_DM_Pin::mode(Mode::INPUT); + USB_DP_Pin::mode(Mode::INPUT); + + using namespace bluetooth; + Reset_BT_Pin::mode(Mode::OPEN_DRAIN); + Reset_BT_Pin::low(); + Reset_BT_Pin::speed(Speed::_50MHz); + BT_CLK_REQ_Pin::mode(Mode::INPUT); + HOST_WAKE_UP_Pin::mode(Mode::INPUT); + Enable_1V8_BT_Power_Pin::mode(Mode::OPEN_DRAIN); + Enable_1V8_BT_Power_Pin::high(); + Enable_1V8_BT_Power_Pin::speed(Speed::_50MHz); + BT_nSS_Pin::mode(Mode::OUTPUT); + BT_nSS_Pin::low(); + BT_nSS_Pin::speed(Speed::_50MHz); + BT_SCK_Pin::mode(Mode::OUTPUT); + BT_SCK_Pin::low(); + BT_SCK_Pin::speed(Speed::_50MHz); + BT_MISO_Pin::mode(Mode::INPUT_PULL_DOWN); + BT_MOSI_Pin::mode(Mode::OUTPUT); + BT_MOSI_Pin::low(); + BT_MOSI_Pin::speed(Speed::_50MHz); + + using namespace unknown; + WKUP_Pin::mode(Mode::INPUT); + MCO1_Pin::mode(Mode::ALTERNATE); + MCO1_Pin::alternateFunction(0); + MCO1_Pin::speed(Speed::_100MHz); + Connect_USB_Pin::mode(Mode::OPEN_DRAIN); + Connect_USB_Pin::low(); + Connect_USB_Pin::speed(Speed::_50MHz); + POWER_3V3_ON_1V8_OFF_Pin::mode(Mode::OUTPUT); + POWER_3V3_ON_1V8_OFF_Pin::low(); + POWER_3V3_ON_1V8_OFF_Pin::speed(Speed::_50MHz); + SPI2_nSS_Pin::mode(Mode::OUTPUT); + SPI2_nSS_Pin::high(); + SPI2_nSS_Pin::speed(Speed::_50MHz); + SPI2_SCK_Pin::mode(Mode::OUTPUT); + SPI2_SCK_Pin::low(); + SPI2_SCK_Pin::speed(Speed::_50MHz); + SPI2_MISO_Pin::mode(Mode::INPUT_PULL_DOWN); + SPI2_MOSI_Pin::mode(Mode::OUTPUT); + SPI2_MOSI_Pin::low(); + SPI2_MOSI_Pin::speed(Speed::_50MHz); + + // Taken from underverk's SmartWatch_Toolchain/src/system.c: + // Prevents hard-faults when booting from USB + delayMs(50); + + USB_DP_Pin::mode(Mode::INPUT_PULL_UP); //Never leave GPIOs floating + USB_DM_Pin::mode(Mode::INPUT_PULL_DOWN); +} + +void bspInit2() +{ + BUZER_PWM_Pin::high(); + Thread::sleep(200); + BUZER_PWM_Pin::low(); + //Wait for user to release the button + while(POWER_BTN_PRESS_Pin::value()) Thread::sleep(20); +} + +// +// Shutdown and reboot +// + +void shutdown() +{ + // Taken from underverk's SmartWatch_Toolchain/src/Arduino/Arduino.cpp + disableInterrupts(); + BUZER_PWM_Pin::high(); + delayMs(200); + BUZER_PWM_Pin::low(); + while(POWER_BTN_PRESS_Pin::value()) ; + //This is likely wired to the PMU. If the USB cable is not connected, this + //cuts off the power to the microcontroller. But if USB is connected, this + //does nothing. In this case we can only spin waiting for the user to turn + //the device on again + power::HoldPower_Pin::low(); + delayMs(500); + while(POWER_BTN_PRESS_Pin::value()==0) ; + reboot(); +} + +void reboot() +{ + disableInterrupts(); + miosix_private::IRQsystemReboot(); +} + +};//namespace miosix diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h new file mode 100644 index 00000000..ee06b0db --- /dev/null +++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h @@ -0,0 +1,48 @@ +/*************************************************************************** + * Copyright (C) 2013 by Terraneo Federico * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * As a special exception, if other files instantiate templates or use * + * macros or inline functions from this file, or you compile this file * + * and link it with other works to produce a work based on this file, * + * this file does not by itself cause the resulting work to be covered * + * by the GNU General Public License. However the source code for this * + * file must still be made available in accordance with the GNU General * + * Public License. This exception does not invalidate any other reasons * + * why a work based on this file might be covered by the GNU General * + * Public License. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, see <http://www.gnu.org/licenses/> * + ***************************************************************************/ + +/*********************************************************************** +* bsp_impl.h Part of the Miosix Embedded OS. +* Board support package, this file initializes hardware. +************************************************************************/ + +#ifndef BSP_IMPL_H +#define BSP_IMPL_H + +#include "config/miosix_settings.h" +#include "hwmapping.h" +#include "drivers/stm32_hardware_rng.h" + +namespace miosix { + +//No LEDs in this board +inline void ledOn() {} +inline void ledOff() {} + +} + +#endif //BSP_IMPL_H diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp new file mode 100644 index 00000000..50b2eef1 --- /dev/null +++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp @@ -0,0 +1,51 @@ +/*************************************************************************** + * Copyright (C) 2013 by Terraneo Federico * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * As a special exception, if other files instantiate templates or use * + * macros or inline functions from this file, or you compile this file * + * and link it with other works to produce a work based on this file, * + * this file does not by itself cause the resulting work to be covered * + * by the GNU General Public License. However the source code for this * + * file must still be made available in accordance with the GNU General * + * Public License. This exception does not invalidate any other reasons * + * why a work based on this file might be covered by the GNU General * + * Public License. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, see <http://www.gnu.org/licenses/> * + ***************************************************************************/ + +#include "interfaces/console.h" + +namespace miosix { + +/* + * The watch has no serial port, so this implementation does nothing + * TODO: redirecting IRQwrite() to the display can be an idea + */ + +void Console::write(const char *str) {} + +void Console::write(const char *data, int length) {} + +bool Console::txComplete() { return true; } + +void Console::IRQwrite(const char *str) {} + +bool Console::IRQtxComplete() { return true; } + +char Console::readChar() { return 0; } + +bool Console::readCharNonBlocking(char& c) { return false; } + +} //namespace miosix diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp new file mode 100644 index 00000000..ae3ca6fa --- /dev/null +++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp @@ -0,0 +1,79 @@ +/*************************************************************************** + * Copyright (C) 2013 by Terraneo Federico * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * As a special exception, if other files instantiate templates or use * + * macros or inline functions from this file, or you compile this file * + * and link it with other works to produce a work based on this file, * + * this file does not by itself cause the resulting work to be covered * + * by the GNU General Public License. However the source code for this * + * file must still be made available in accordance with the GNU General * + * Public License. This exception does not invalidate any other reasons * + * why a work based on this file might be covered by the GNU General * + * Public License. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, see <http://www.gnu.org/licenses/> * + ***************************************************************************/ + +#include "interfaces/delays.h" + +namespace miosix { + +//FIXME: delays! + +void delayMs(unsigned int mseconds) +{ + #ifndef __CODE_IN_XRAM + + #ifdef SYSCLK_FREQ_120MHz + register const unsigned int count=29999; + #else + #warning "Delays are uncalibrated for this clock frequency" + #endif + + for(unsigned int i=0;i<mseconds;i++) + { + // This delay has been calibrated to take 1 millisecond + // It is written in assembler to be independent on compiler optimization + asm volatile(" mov r1, #0 \n" + "___loop_m: cmp r1, %0 \n" + " itt lo \n" + " addlo r1, r1, #1 \n" + " blo ___loop_m \n"::"r"(count):"r1"); + } + + #else //__CODE_IN_XRAM + #error "No delays" + #endif //__CODE_IN_XRAM +} + +void delayUs(unsigned int useconds) +{ + #ifndef __CODE_IN_XRAM + + // This delay has been calibrated to take x microseconds + // It is written in assembler to be independent on compiler optimization + asm volatile(" mov r1, #30 \n" + " mul r2, %0, r1 \n" + " mov r1, #0 \n" + "___loop_u: cmp r1, r2 \n" + " itt lo \n" + " addlo r1, r1, #1 \n" + " blo ___loop_u \n"::"r"(useconds):"r1","r2"); + + #else //__CODE_IN_XRAM + #error "No delays" + #endif //__CODE_IN_XRAM +} + +} //namespace miosix diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h new file mode 100644 index 00000000..e9d6fa28 --- /dev/null +++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h @@ -0,0 +1,129 @@ +/*************************************************************************** + * Copyright (C) 2013 by Terraneo Federico * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * As a special exception, if other files instantiate templates or use * + * macros or inline functions from this file, or you compile this file * + * and link it with other works to produce a work based on this file, * + * this file does not by itself cause the resulting work to be covered * + * by the GNU General Public License. However the source code for this * + * file must still be made available in accordance with the GNU General * + * Public License. This exception does not invalidate any other reasons * + * why a work based on this file might be covered by the GNU General * + * Public License. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, see <http://www.gnu.org/licenses/> * + ***************************************************************************/ + +#ifndef HWMAPPING_H +#define HWMAPPING_H + +#include "interfaces/gpio.h" + +namespace miosix { + +/* + * The pin names were taken from underverk's SmartWatch_Toolchain/src/system.c + * They were put in a comment saying "Sony's name". Probably the one who wrote + * that file got access to much more documentation that the one that's publicly + * available. + */ + +// The OLED display is an LD7131 and has its own dedicated SPI bus +namespace oled { +typedef Gpio<GPIOA_BASE, 4> OLED_nSS_Pin; //Sony calls it SPI1_nSS_Pin +typedef Gpio<GPIOA_BASE, 5> OLED_SCK_Pin; //Sony calls it SPI1_SCK_Pin +typedef Gpio<GPIOA_BASE, 7> OLED_MOSI_Pin; //Sony calls it SPI1_MOSI_Pin +typedef Gpio<GPIOC_BASE, 0> OLED_A0_Pin; +typedef Gpio<GPIOB_BASE, 5> OLED_Reset_Pin; +typedef Gpio<GPIOC_BASE, 1> OLED_V_ENABLE_Pin; //Enables OLED panel 16V supply +} + +// The touch controller is a CY8C20236 is connected to the I2C bus, address 0x0a +namespace touch { +typedef Gpio<GPIOB_BASE, 0> Touch_Reset_Pin; +typedef Gpio<GPIOC_BASE, 6> TOUCH_WKUP_INT_Pin; +} + +// There is a PMU chip, unknown part, connected to the I2C bus, address 0x90 +namespace power { +typedef Gpio<GPIOA_BASE, 1> BATT_V_ON_Pin; //Enables battery voltage sensor +typedef Gpio<GPIOA_BASE, 2> BAT_V_Pin; //Analog input +typedef Gpio<GPIOB_BASE, 4> ENABLE_LIGHT_SENSOR_Pin; //Enables light sensor +typedef Gpio<GPIOC_BASE, 4> LIGHT_SENSOR_ANALOG_OUT_Pin; //Analog input +typedef Gpio<GPIOB_BASE, 3> ENABLE_2V8_Pin; //Is in some way releted to the OLED +//Looks connected to the PMU, the most likely scenario is this: asserting it low +//when the USB is not connected disables the PMU voltage regulator feeding the +//microcontroller, therefore shutting down the watch. +typedef Gpio<GPIOC_BASE, 3> HoldPower_Pin; +} + +// The accelerometer is an LIS3DH, connected to the I2C bus, address 0x30 +typedef Gpio<GPIOB_BASE, 9> ACCELEROMETER_INT_Pin; + +// The Touch controller, PMU and accelerometer are connected to the I2C bus +namespace i2c { +typedef Gpio<GPIOB_BASE, 6> I2C_SCL_Pin; +typedef Gpio<GPIOB_BASE, 7> I2C_SDA_Pin; +} + +// Vibrator motor +typedef Gpio<GPIOB_BASE, 8> BUZER_PWM_Pin; + +// The power button. Someone on stackoverflow mantions that if you push it for +// 10 seconds when the USB cable is disconnected, the watch shutdowns no matter +// what the software does (so, even if it is locked up). This means it's +// probably connected to the PMU as well. +typedef Gpio<GPIOB_BASE,11> POWER_BTN_PRESS_Pin; //Goes high when pressed FIXME: check + +// USB connections +namespace usb { +typedef Gpio<GPIOA_BASE, 9> USB5V_Detected_Pin; //Goes high when USB connected FIXME: check +typedef Gpio<GPIOA_BASE,11> USB_DM_Pin; +typedef Gpio<GPIOA_BASE,12> USB_DP_Pin; +} + +// Other than that it's an STLC2690, little is known about the bluetooth chip +namespace bluetooth { +//FIXME: which one is the right one? +typedef Gpio<GPIOA_BASE, 6> Reset_BT2_Pin; //According to sony's website +typedef Gpio<GPIOA_BASE,15> Reset_BT_Pin; //According to underverk's SmartWatch_Toolchain + +typedef Gpio<GPIOB_BASE,10> BT_CLK_REQ_Pin; +typedef Gpio<GPIOC_BASE,13> HOST_WAKE_UP_Pin; +typedef Gpio<GPIOC_BASE, 7> Enable_1V8_BT_Power_Pin; +typedef Gpio<GPIOC_BASE, 9> BT_nSS_Pin; //Sony calls it SPI3_nSS_Pin +typedef Gpio<GPIOC_BASE,10> BT_SCK_Pin; //Sony calls it SPI3_SCK_Pin +typedef Gpio<GPIOC_BASE,11> BT_MISO_Pin; //Sony calls it SPI3_MISO_Pin +typedef Gpio<GPIOC_BASE,12> BT_MOSI_Pin; //Sony calls it SPI3_MOSI_Pin +} + +// The mistery pins mentioned in system.c, but never used +namespace unknown { +typedef Gpio<GPIOA_BASE, 0> WKUP_Pin; +//Stands for main clock out, a feature of the STM32 to output an internal clock +//(either the crystal one, or the PLL one). Ususally is used to clock some +//other chip saving a clock crystal in the BOM. Maybe it goes to the touchscreen +//controller? Who knows... +typedef Gpio<GPIOA_BASE, 8> MCO1_Pin; +typedef Gpio<GPIOB_BASE, 1> Connect_USB_Pin; +typedef Gpio<GPIOB_BASE, 2> POWER_3V3_ON_1V8_OFF_Pin; +typedef Gpio<GPIOB_BASE,12> SPI2_nSS_Pin; //Is there yet another mistery chip +typedef Gpio<GPIOB_BASE,13> SPI2_SCK_Pin; //connected to this SPI? I don't know +typedef Gpio<GPIOB_BASE,14> SPI2_MISO_Pin; +typedef Gpio<GPIOB_BASE,15> SPI2_MOSI_Pin; +} + +} //namespace miosix + +#endif //HWMAPPING_H diff --git a/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/stm32_1M+128k_rom.ld b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/stm32_1M+128k_rom.ld new file mode 100644 index 00000000..5e927158 --- /dev/null +++ b/miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/stm32_1M+128k_rom.ld @@ -0,0 +1,198 @@ +/* + * C++ enabled linker script for Sony smartwatch + * Developed by Terraneo Federico + */ + +/* + * This linker script puts: + * - read only data and code (.text, .rodata, .eh_*) in flash + * - stacks, heap and sections .data and .bss in the internal ram + * - the external ram (if available) is not used. + */ + +/* + * The main stack is used for interrupt handling by the kernel. + * + * *** Readme *** + * This linker script places the main stack (used by the kernel for interrupts) + * at the bottom of the ram, instead of the top. This is done for two reasons: + * + * - as an optimization for microcontrollers with little ram memory. In fact + * the implementation of malloc from newlib requests memory to the OS in 4KB + * block (except the first block that can be smaller). This is probably done + * for compatibility with OSes with an MMU and paged memory. To see why this + * is bad, consider a microcontroller with 8KB of ram: when malloc finishes + * up the first 4KB it will call _sbrk_r asking for a 4KB block, but this will + * fail because the top part of the ram is used by the main stack. As a + * result, the top part of the memory will not be used by malloc, even if + * available (and it is nearly *half* the ram on an 8KB mcu). By placing the + * main stack at the bottom of the ram, the upper 4KB block will be entirely + * free and available as heap space. + * + * - In case of main stack overflow the cpu will fault because access to memory + * before the beginning of the ram faults. Instead with the default stack + * placement the main stack will silently collide with the heap. + * Note: if increasing the main stack size also increase the ORIGIN value in + * the MEMORY definitions below accordingly. + */ + +/* + * Taken from underverk's SmartWatch_Toolchain. Doesn't explain why the first + * 3K of RAM can't be used. TODO: try to start from 0x20000000 and see what + * happens. + */ +_ram_base = 0x20000c00; + +_main_stack_size = 0x00000200; /* main stack = 512Bytes */ +_main_stack_top = _ram_base + _main_stack_size; +ASSERT(_main_stack_size % 8 == 0, "MAIN stack size error"); + +/* + * End of the heap. Taken from underverk's SmartWatch_Toolchain. Doesn't explain + * why the last 2K of RAM can't be used. TODO: try 0x20020000 and see what + * happens. + */ +_heap_end = 0x2001f800; /* end of available ram */ + +/* identify the Entry Point */ +ENTRY(_Z13Reset_Handlerv) + +/* specify the memory areas */ +MEMORY +{ + /* + * Taken from underverk's SmartWatch_Toolchain. The DFU bootloader sits + * between 0x08000000 and 0x0800c000, that's 48K. Don't know why the code + * can't be placed directly @ 0x0800c000, but by unpacking the original + * firmware SmartWatch.dfu resulted in five different binary images: + * Base addr | size | + * ------------+---------+-------------------------------------------------- + * 0x0800c000 | 0x5f00 | Seems the bluetooth driver, no interrupt table, + * | | and funnily first 16K are zeros, probably + * | | compiled as non-PIC code at 64K from flash base. + * 0x08020000 | 0x1b578 | Is a firmware as it starts with an interrupt + * | | table, don't know what it does. + * 0x0803fffc | 0x188 | Discarding the first 4 bytes, the rest starts + * | | @ 0x08040000 and is an interrupt table. + * | | Bootloader jumps at this address. The interrupt + * | | points to the next firmware image. + * 0x08040200 | 0xb02b8 | First part is just pictures data, but there's + * | | code at the end, and the lone interrupt table + * | | points into it. + * 0x080ffffc | 0x4 | Some magic number of some sort. + */ + flash(rx) : ORIGIN = 0x08040000, LENGTH = 768K + + /* + * Note, the ram starts at _ram_base but it is necessary to add the size + * of the main stack. + */ + ram(wx) : ORIGIN = 0x20000e00, LENGTH = 123K-0x200 +} + +/* now define the output sections */ +SECTIONS +{ + . = 0; + + /* .text section: code goes to flash */ + .text : + { + /* Startup code must go at address 0 */ + KEEP(*(.isr_vector)) + + *(.text) + *(.text.*) + *(.gnu.linkonce.t.*) + /* these sections for thumb interwork? */ + *(.glue_7) + *(.glue_7t) + /* these sections for C++? */ + *(.gcc_except_table) + *(.gcc_except_table.*) + *(.ARM.extab*) + *(.gnu.linkonce.armextab.*) + + . = ALIGN(4); + /* .rodata: constant data */ + *(.rodata) + *(.rodata.*) + *(.gnu.linkonce.r.*) + + /* C++ Static constructors/destructors (eabi) */ + . = ALIGN(4); + KEEP(*(.init)) + + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + /* C++ Static constructors/destructors (elf) */ + . = ALIGN(4); + _ctor_start = .; + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + _ctor_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + } > flash + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > flash + __exidx_end = .; + + . = ALIGN(8); + _etext = .; + + /* .data section: global variables go to ram, but also store a copy to + flash to initialize them */ + .data : ALIGN(8) + { + _data = .; + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + . = ALIGN(8); + _edata = .; + } > ram AT > flash + + /* .bss section: uninitialized global variables go to ram */ + _bss_start = .; + .bss : + { + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + . = ALIGN(8); + } > ram + _bss_end = .; + + _end = .; + PROVIDE(end = .); +} diff --git a/miosix/config/Makefile.inc b/miosix/config/Makefile.inc index becb2784..699f5b37 100644 --- a/miosix/config/Makefile.inc +++ b/miosix/config/Makefile.inc @@ -24,6 +24,7 @@ OPT_BOARD := stm32f103ze_stm3210e-eval #OPT_BOARD := stm32f207ze_als_camboard #OPT_BOARD := stm32l151_als_mainboard #OPT_BOARD := stm32f407vg_bitsboard +#OPT_BOARD := stm32f205rg_sony-newman ## ## Optimization flags, choose one. @@ -206,6 +207,12 @@ ifeq ($(OPT_BOARD),stm32f207zg_ethboard_v2) endif +##--------------------------------------------------------------------------- +## stm32f205rg_sony-newman +## + +# No options + ##--------------------------------------------------------------------------- ## stm32f407vg_bitsboard ## @@ -246,6 +253,8 @@ else ifeq ($(OPT_BOARD),stm32f207zg_ethboard_v2) ARCH := cortexM3_stm32f2 else ifeq ($(OPT_BOARD),stm32f207ze_als_camboard) ARCH := cortexM3_stm32f2 +else ifeq ($(OPT_BOARD),stm32f205rg_sony-newman) + ARCH := cortexM3_stm32f2 else ifeq ($(OPT_BOARD),stm32l151_als_mainboard) ARCH := cortexM3_stm32l1 else ifeq ($(OPT_BOARD),stm32f407vg_bitsboard) @@ -819,6 +828,44 @@ else ifeq ($(ARCH),cortexM3_stm32f2) ## board. PROGRAM_CMDLINE := stm32flash -w main.hex -v /dev/ttyUSB1 + ##------------------------------------------------------------------------- + ## BOARD: stm32f205rg_sony-newman + ## + else ifeq ($(OPT_BOARD),stm32f205rg_sony-newman) + ## Base directory with header files for this board + BOARD_INC := arch/cortexM3_stm32f2/stm32f205rg_sony-newman + + ## Select linker script and boot file + ## Their path must be relative to the miosix directory. + BOOT_FILE := $(BOARD_INC)/core/stage_1_boot.o + LINKER_SCRIPT := $(BOARD_INC)/stm32_1M+128k_rom.ld + + ## Select architecture specific files + ## These are the files in arch/<arch name>/<board name> + ARCH_SRC := \ + $(BOARD_INC)/interfaces-impl/console.cpp \ + $(BOARD_INC)/interfaces-impl/delays.cpp \ + $(BOARD_INC)/interfaces-impl/bsp.cpp + + ## Add a #define to allow querying board name + CFLAGS_BASE += -D_BOARD_SONY_NEWMAN + CXXFLAGS_BASE += -D_BOARD_SONY_NEWMAN + + ## Clock frequency + CLOCK_FREQ := -DHSE_VALUE=26000000 -DSYSCLK_FREQ_120MHz=120000000 + + ## Select programmer command line + ## This is the program that is invoked when the user types + ## 'make program' + ## The command must provide a way to program the board, or print an + ## error message saying that 'make program' is not supported for that + ## board. + ## The magic.bin is somewhat used by the bootloader to detect a good fw + PROGRAM_CMDLINE := perl -e 'print "\xe7\x91\x11\xc0"' > magic.bin; \ + dfu-util -d 0fce:f0fa -a 0 -i 0 -s 0x08040000 -D main.bin; \ + dfu-util -d 0fce:f0fa -a 0 -i 0 -s 0x080ffffc -D magic.bin; \ + rm magic.bin + ##------------------------------------------------------------------------- ## End of board list ## diff --git a/miosix/temp/udev-rules/49-sony-newman-dfu.rules b/miosix/temp/udev-rules/49-sony-newman-dfu.rules new file mode 100644 index 00000000..361fad0e --- /dev/null +++ b/miosix/temp/udev-rules/49-sony-newman-dfu.rules @@ -0,0 +1,7 @@ +# Allows to run the dfu-util as non-root user to program the sony smart watch. +# Copy in /etc/udev/rules.d + +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="f0fa", \ + MODE:="0666", \ + SYMLINK+="newman_%n" + diff --git a/miosix_np_2/nbproject/configurations.xml b/miosix_np_2/nbproject/configurations.xml index e5c66ecd..1d41c781 100644 --- a/miosix_np_2/nbproject/configurations.xml +++ b/miosix_np_2/nbproject/configurations.xml @@ -156,6 +156,16 @@ </df> <in>arch_settings.h</in> </df> + <df name="stm32f205rg_sony-newman"> + <df name="interfaces-impl"> + <in>bsp.cpp</in> + <in>bsp_impl.h</in> + <in>console.cpp</in> + <in>delays.cpp</in> + <in>hwmapping.h</in> + </df> + <in>board_settings.h</in> + </df> <df name="stm32f207ig_stm3220g-eval"> <df name="core"> <in>stage_1_boot.cpp</in> @@ -11608,6 +11618,36 @@ tool="3" flavor2="0"> </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h" + ex="false" + tool="3" + flavor2="0"> + </item> <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/board_settings.h" ex="false" tool="3" @@ -14360,5 +14400,1107 @@ <item path="../miosix/util/version.h" ex="false" tool="3" flavor2="0"> </item> </conf> + <conf name="stm32f205rg_sony-newman" type="0"> + <toolsSet> + <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode> + <compilerSet>ARM_MIOSIX_EABI|GNU</compilerSet> + <dependencyChecking>false</dependencyChecking> + <rebuildPropChanged>false</rebuildPropChanged> + </toolsSet> + <codeAssistance> + </codeAssistance> + <makefileType> + <makeTool> + <buildCommandWorkingDir>..</buildCommandWorkingDir> + <buildCommand>${MAKE} -f Makefile</buildCommand> + <cleanCommand>${MAKE} -f Makefile clean</cleanCommand> + <executablePath></executablePath> + <cTool> + <incDir> + <pElem>..</pElem> + <pElem>../miosix</pElem> + <pElem>../miosix/arch/common</pElem> + <pElem>../miosix/arch/cortexM3_stm32f2/common</pElem> + <pElem>../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard </pElem> + </incDir> + <preprocessorList> + <Elem>_ARCH_CORTEXM3_STM32F2</Elem> + <Elem>_BOARD_SONY_NEWMAN</Elem> + <Elem>_MIOSIX</Elem> + <Elem>_POSIX_THREADS</Elem> + </preprocessorList> + </cTool> + <ccTool> + <incDir> + <pElem>..</pElem> + <pElem>../miosix</pElem> + <pElem>../miosix/arch/common</pElem> + <pElem>../miosix/arch/cortexM3_stm32f2/common</pElem> + <pElem>../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard </pElem> + </incDir> + <preprocessorList> + <Elem>_ARCH_CORTEXM3_STM32F2</Elem> + <Elem>_BOARD_SONY_NEWMAN</Elem> + <Elem>_MIOSIX</Elem> + <Elem>_POSIX_THREADS</Elem> + </preprocessorList> + </ccTool> + </makeTool> + </makefileType> + <item path="../main.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/common/arch_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/common/interfaces-impl/endianness_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/LPC213x.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/core/interrupts.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/core/interrupts.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/core/stage_1_boot.s" + ex="false" + tool="4" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/drivers/serial.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/drivers/serial.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/arch_registers_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/delays.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/disk.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/gpio_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/portability.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/portability_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/common/drivers/dcc.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/common/drivers/dcc.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/common/drivers/stm32_hardware_rng.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/common/drivers/stm32_hardware_rng.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/CMSIS/core_cm3.c" + ex="false" + tool="0" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/CMSIS/core_cm3.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/CMSIS/stm32f10x.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/CMSIS/system_stm32f10x.c" + ex="false" + tool="0" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/CMSIS/system_stm32f10x.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/arch_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/core/interrupts.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/core/interrupts.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/drivers/serial.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/drivers/serial.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/arch_registers_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/delays.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/disk.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/endianness_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/gpio_impl.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/gpio_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/portability.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/portability_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/hwmapping.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/hwmapping.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/hwmapping.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/CMSIS/core_cm3.c" + ex="false" + tool="0" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/CMSIS/core_cm3.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/CMSIS/stm32f2xx.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.c" + ex="false" + tool="0" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/CMSIS/system_stm32f2xx.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/arch_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/core/interrupts.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/core/interrupts.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/arch_registers_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/disk.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/endianness_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/gpio_impl.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/gpio_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/portability.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/common/interfaces-impl/portability_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/delays.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f205rg_sony-newman/interfaces-impl/hwmapping.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/console-impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/delays.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/console-impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/delays.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/hwmapping.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/console-impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/delays.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/hwmapping.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/core_cm3.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/core_cmFunc.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/core_cmInstr.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/stm32l1xx.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/system_stm32l1xx.c" + ex="false" + tool="0" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/CMSIS/system_stm32l1xx.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/arch_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/core/interrupts.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/core/interrupts.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/arch_registers_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/delays.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/endianness_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/gpio_impl.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/gpio_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/portability.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/common/interfaces-impl/portability_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/console-impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/hwmapping.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/core_cm4.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/core_cm4_simd.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/core_cmFunc.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/core_cmInstr.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/stm32f4xx.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/system_stm32f4xx.c" + ex="false" + tool="0" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/CMSIS/system_stm32f4xx.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/arch_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/core/interrupts.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/core/interrupts.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/arch_registers_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/delays.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/disk.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/endianness_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/gpio_impl.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/gpio_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/portability.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/portability_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/console-impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/board_settings.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/core/stage_1_boot.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/bsp.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/bsp_impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/console-impl.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/console.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/config/miosix_settings.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/e20/callback.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/e20/e20.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/examples/asm/main.s" ex="false" tool="4" flavor2="0"> + </item> + <item path="../miosix/examples/blinking_led/simple.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/examples/sad_trombone/adpcm.c" + ex="false" + tool="0" + flavor2="0"> + </item> + <item path="../miosix/examples/sad_trombone/adpcm.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/examples/sad_trombone/convert.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/examples/sad_trombone/main.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/examples/sad_trombone/player.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/examples/sad_trombone/player.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/examples/sad_trombone/sad_trombone.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/examples/thread_native/native_thread_example.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/examples/thread_pthread/pthread_example.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/interfaces/arch_registers.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/interfaces/bsp.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/interfaces/console.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/interfaces/delays.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/interfaces/disk.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/interfaces/endianness.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/interfaces/gpio.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/interfaces/portability.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/kernel/buffer_queue.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/kernel/error.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/kernel/error.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/kernel/filesystem/diskio.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/kernel/filesystem/diskio.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/filesystem/ff.c" ex="false" tool="0" flavor2="0"> + </item> + <item path="../miosix/kernel/filesystem/ff.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/kernel/filesystem/filesystem.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/kernel/filesystem/filesystem.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/filesystem/integer.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/kernel.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/kernel/kernel.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/kernel/logging.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/kernel/pthread.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/kernel/pthread_private.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/control/control_scheduler.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/control/control_scheduler.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/control/control_scheduler_types.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/control/parameters.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/edf/edf_scheduler.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/edf/edf_scheduler.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/edf/edf_scheduler_types.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/priority/priority_scheduler.cpp" + ex="false" + tool="1" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/priority/priority_scheduler.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/priority/priority_scheduler_types.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/sched_types.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/scheduler.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/scheduler/tick_interrupt.h" + ex="false" + tool="3" + flavor2="0"> + </item> + <item path="../miosix/kernel/stage_2_boot.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/kernel/sync.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/kernel/sync.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/kernel/syscalls.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/kernel/syscalls.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/kernel/syscalls_types.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/kernel/unistd.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/miosix.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/testsuite/testsuite.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/util/crc16.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/util/crc16.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/util/lcd44780.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/util/lcd44780.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/util/software_i2c.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/util/software_spi.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/util/util.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/util/util.h" ex="false" tool="3" flavor2="0"> + </item> + <item path="../miosix/util/version.cpp" ex="false" tool="1" flavor2="0"> + </item> + <item path="../miosix/util/version.h" ex="false" tool="3" flavor2="0"> + </item> + </conf> </confs> </configurationDescriptor> diff --git a/miosix_np_2/nbproject/private/configurations.xml b/miosix_np_2/nbproject/private/configurations.xml index 6cb1d047..3701528d 100644 --- a/miosix_np_2/nbproject/private/configurations.xml +++ b/miosix_np_2/nbproject/private/configurations.xml @@ -156,6 +156,19 @@ </df> <in>arch_settings.h</in> </df> + <df name="stm32f205rg_sony-newman"> + <df name="core"> + <in>stage_1_boot.cpp</in> + </df> + <df name="interfaces-impl"> + <in>bsp.cpp</in> + <in>bsp_impl.h</in> + <in>console.cpp</in> + <in>delays.cpp</in> + <in>hwmapping.h</in> + </df> + <in>board_settings.h</in> + </df> <df name="stm32f207ig_stm3220g-eval"> <df name="core"> <in>stage_1_boot.cpp</in> @@ -415,13 +428,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -460,13 +473,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -505,13 +518,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -550,13 +563,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -595,13 +608,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -640,13 +653,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -685,13 +698,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -730,13 +743,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -775,13 +788,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -820,13 +833,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -865,13 +878,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -910,13 +923,13 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> - <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> @@ -955,13 +968,58 @@ </toolsSet> <compile> <compiledirpicklist> - <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> </compiledirpicklist> <compiledir>${AUTO_FOLDER}</compiledir> <compilecommandpicklist> + <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> + </compilecommandpicklist> + <compilecommand>${AUTO_COMPILE}</compilecommand> + </compile> + <dbx_gdbdebugger version="1"> + <gdb_pathmaps> + </gdb_pathmaps> + <gdb_interceptlist> + <gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/> + </gdb_interceptlist> + <gdb_options> + <DebugOptions> + </DebugOptions> + </gdb_options> + <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/> + </dbx_gdbdebugger> + <nativedebugger version="1"> + <engine>gdb</engine> + </nativedebugger> + <runprofile version="9"> + <runcommandpicklist> + <runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem> + </runcommandpicklist> + <runcommand>"${OUTPUT_PATH}"</runcommand> + <rundir></rundir> + <buildfirst>true</buildfirst> + <terminal-type>0</terminal-type> + <remove-instrumentation>0</remove-instrumentation> + <environment> + </environment> + </runprofile> + </conf> + <conf name="stm32f205rg_sony-newman" type="0"> + <toolsSet> + <developmentServer>localhost</developmentServer> + <platform>2</platform> + </toolsSet> + <compile> + <compiledirpicklist> + <compiledirpicklistitem>.</compiledirpicklistitem> + <compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem> + </compiledirpicklist> + <compiledir>${AUTO_FOLDER}</compiledir> + <compilecommandpicklist> <compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem> + <compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem> </compilecommandpicklist> <compilecommand>${AUTO_COMPILE}</compilecommand> </compile> diff --git a/miosix_np_2/nbproject/private/private.xml b/miosix_np_2/nbproject/private/private.xml index 0d841f04..53489479 100644 --- a/miosix_np_2/nbproject/private/private.xml +++ b/miosix_np_2/nbproject/private/private.xml @@ -5,7 +5,7 @@ </code-assistance-data> <data xmlns="http://www.netbeans.org/ns/make-project-private/1"> <activeConfTypeElem>0</activeConfTypeElem> - <activeConfIndexElem>10</activeConfIndexElem> + <activeConfIndexElem>2</activeConfIndexElem> </data> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> diff --git a/miosix_np_2/nbproject/project.xml b/miosix_np_2/nbproject/project.xml index 84a07650..cceeaa73 100644 --- a/miosix_np_2/nbproject/project.xml +++ b/miosix_np_2/nbproject/project.xml @@ -66,6 +66,10 @@ <name>stm32f407vg_bitsboard</name> <type>0</type> </confElem> + <confElem> + <name>stm32f205rg_sony-newman</name> + <type>0</type> + </confElem> </confList> </data> </configuration> -- GitLab