From d567da4c197587e415cb4f8f7e65247cb17b9fea Mon Sep 17 00:00:00 2001
From: Sasan Golchin <ahmad.golchin@mail.polimi.it>
Date: Wed, 7 Oct 2015 23:37:49 +0200
Subject: [PATCH] TIM2 is a 32-bit Timer/Counter with 4 Compare/Capture
 channels. In this subproject, an 64 bit apriodic timer is created based on
 TIM2 in which the overflow is managed automatically and the user is able to
 set checkpoints (in terms of timer ticks) to fire IRQ.

An expected usecase is the use this driver as the context switch
tool for the kernel.
There might be some errors in which overflows/checkpoints are not
managed correctly that will be OK asap.

Signed-off-by: sasan_golchin <ahmad.golchin@mail.polimi.it>

Signed-off-by: sasan_golchin <ahmad.golchin@mail.polimi.it>
Signed-off-by: Terraneo Federico <fede.tft@miosix.org>
---
 Makefile                                      |   2 +-
 cstimer.cpp                                   | 127 +++
 cstimer.h                                     |  21 +
 main.cpp                                      |  41 +-
 miosix/config/Makefile.inc                    |   6 +-
 miosix/config/miosix_settings.h               |   4 +-
 miosix_np_2/nbproject/configurations.xml      | 807 +++++++-----------
 .../nbproject/private/configurations.xml      |   2 +
 miosix_np_2/nbproject/private/private.xml     |  12 +-
 .../stm32f103ze_stm3210e-eval.properties      |   1 +
 .../stm32f407vg_stm32f4discovery.properties   |   1 +
 11 files changed, 507 insertions(+), 517 deletions(-)
 create mode 100644 cstimer.cpp
 create mode 100644 cstimer.h

diff --git a/Makefile b/Makefile
index 1f279089..69ace418 100644
--- a/Makefile
+++ b/Makefile
@@ -19,7 +19,7 @@ SUBDIRS := $(KPATH)
 ## List here your source files (both .s, .c and .cpp)
 ##
 SRC :=                                  \
-main.cpp
+main.cpp cstimer.cpp
 
 ##
 ## List here additional static libraries with relative path
diff --git a/cstimer.cpp b/cstimer.cpp
new file mode 100644
index 00000000..600f84f6
--- /dev/null
+++ b/cstimer.cpp
@@ -0,0 +1,127 @@
+#include "miosix.h"
+#include "cstimer.h"
+#include "kernel/logging.h"
+#include <cstdlib>
+using namespace miosix;
+
+static long long cst_ms32time = 0; //most significant 32 bits of counter
+static long long cst_ms32chkp = 0; //most significant 32 bits of check point
+static volatile bool cst_chkProcessed;
+#define CST_ROLLOVER_INT (TIM2->SR & TIM_SR_UIF) && (TIM2->SR & TIM_SR_CC2IF)
+ContextSwitchTimer& ContextSwitchTimer::instance() {
+    static ContextSwitchTimer _instance;
+    return _instance;
+}
+
+ContextSwitchTimer::ContextSwitchTimer() {
+    /*
+     *  TIM2 Source Clock (from APB1) Enable
+     */
+    {
+        FastInterruptDisableLock idl;
+        RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
+        RCC_SYNC();
+    }
+    /*
+     * Setup TIM2 base configuration
+     * Mode: Up-counter
+     * Interrupts: counter overflow, Compare/Capture on channel 1
+     */
+    TIM2->CR1=0;
+    TIM2->CCR1=0;
+    TIM2->CCR2=0;
+    TIM2->CCR3=0;
+    TIM2->CCR4=0;
+    TIM2->DIER=TIM_DIER_UIE | TIM_DIER_CC1IE;
+    NVIC_SetPriority(TIM2_IRQn,1); //TO-DO: WHICH IRQ Priority to use? 0?
+    NVIC_EnableIRQ(TIM2_IRQn);
+    /*
+     * Configure channel 1 as: 
+     * Output channel (CC1S=0)
+     * No preload(OC1PE=0), hence TIM2_CCR1 can be written at anytime
+     * No effect on the output signal on match (OC1M = 0)
+     */
+    TIM2->CCMR1 = 0;
+    TIM2->CCR1 = 0;
+    /*
+     * TIM2 Operation Frequency Configuration
+     */
+    uint32_t pcsfreq = SystemCoreClock;
+    uint32_t apb1_div = (RCC->CFGR & RCC_CFGR_PPRE1)>>10;
+    //True assumption: AHB frequency is not divided :D
+    if (apb1_div & 0x4) //APB1 Divider is active
+        pcsfreq /= ((apb1_div & 0x3)+1)<<1;
+    
+    TIM2->PSC = 0;
+    TIM2->ARR = 0xFFFFFFFF;
+    //printf("PSCFreq: %lu  PCS: %lu   ARR: %lu  CCR1: %lu  SR: %lu CNT: %lu\n",pcsfreq,TIM2->PSC,TIM2->ARR,TIM2->CCR1,TIM2->SR,TIM2->CNT);
+    /*
+     * Other initializations
+     */
+    // Enable TIM2 Counter
+    TIM2->EGR = TIM_EGR_UG; //To enforce the timer to apply PSC (and other non-immediate settings)
+    TIM2->CR1 |= TIM_CR1_CEN;
+    cst_ms32time = 0;
+}
+
+long long ContextSwitchTimer::getCurrentTick() {
+    bool interrupts=areInterruptsEnabled();
+    if(interrupts) disableInterrupts();
+    //If overflow occurs while interrupts disabled
+    /*
+     * counter should be checked before rollover interrupt flag
+     * 
+     */
+    uint32_t counter = TIM2->CNT;
+    if (CST_ROLLOVER_INT && counter < 0x80000000){
+        long long result=(cst_ms32time | counter) + 0x100000000ll;
+        if(interrupts) enableInterrupts();
+        return result;
+    }
+    long long result=cst_ms32time | counter;
+    if(interrupts) enableInterrupts();
+    return result;
+}
+
+void ContextSwitchTimer::setNextInterrupt(long long tick) {
+    cst_ms32chkp = tick & 0xFFFFFFFF00000000;
+    TIM2->CCR1 = (uint32_t)(tick & 0xFFFFFFFF);
+    cst_chkProcessed = false;
+}
+
+long long ContextSwitchTimer::getNextInterrupt(){
+    return cst_ms32chkp | TIM2->CCR1;
+}
+
+void __attribute__((used)) cstirqhnd(){
+    if ((TIM2->SR & TIM_SR_CC1IF) && (cst_ms32time==cst_ms32chkp)){
+        //Checkpoint met
+        TIM2->SR = ~TIM_SR_CC1IF;
+        IRQbootlog(" (CHK POINT) \r\n");
+        cst_chkProcessed = true;
+        
+    }
+    if (CST_ROLLOVER_INT){
+        //Rollover (Update and CC2 that is always set on zero)
+        //On the initial update SR = UIF (ONLY)
+        TIM2->SR = ~TIM_SR_UIF; //w0 clear
+        IRQbootlog(" (ROLLOVER) \r\n");
+        cst_ms32time += 0x100000000;
+        
+    }
+    /*
+    if (!cst_chkProcessed && cst_ms32chkp < (cst_ms32time | TIM2->CNT) && cst_ms32time==cst_ms32chkp){
+        IRQbootlog(" (CHK POINT) \r\n");
+        cst_chkProcessed = true;
+    }*/ 
+}
+
+void __attribute__((naked)) TIM2_IRQHandler(){
+    saveContext();
+    asm volatile ("bl _Z9cstirqhndv");
+    restoreContext();
+}
+
+ContextSwitchTimer::~ContextSwitchTimer() {
+
+}
diff --git a/cstimer.h b/cstimer.h
new file mode 100644
index 00000000..8b9491cb
--- /dev/null
+++ b/cstimer.h
@@ -0,0 +1,21 @@
+#ifndef CSTIMER_H
+#define	CSTIMER_H
+
+namespace miosix{
+    class ContextSwitchTimer{
+    public:
+        static ContextSwitchTimer& instance();
+        void setNextInterrupt(long long tick); //timer tick
+        long long getNextInterrupt();
+        /**
+         * Could be call both when the interrupts are enabled/disabled!
+         * @return 
+         */
+        long long getCurrentTick();
+        virtual ~ContextSwitchTimer();
+    private:
+        ContextSwitchTimer();
+    };
+}
+#endif	/* TIMER_H */
+
diff --git a/main.cpp b/main.cpp
index 8764b9fa..5e20d2f8 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,11 +1,42 @@
-
 #include <cstdio>
+#include <cmath>
 #include "miosix.h"
-
+#include "kernel/logging.h"
+#include "e20/e20.h"
+#include "cstimer.h"
 using namespace std;
 using namespace miosix;
 
-int main()
-{
-    //iprintf("Hello world, write your application here\n");
+void basicTests(){
+    ContextSwitchTimer t = ContextSwitchTimer::instance();
+    long long chkpoint = 0xFFFFFFFFll+1899760;
+    //chkpoint = 0xFFFFFFFFll-20; //Test Case: CHKPNT right really before rollover -> OK
+    //chkpoint = 0xFFFFFFFFll-2000; //Test Case: CHKPNT right before rollover -> OK
+    //chkpoint = 0xFFFFFFFFll+2000; //Test Case: CHKPNT right afrer rollover -> OK
+    //chkpoint = 0xFFFFFFFFll+20; //Test Case: CHKPNT right really afrer rollover -> OK
+    t.setNextInterrupt(chkpoint); //checkpoint near the rollover
+    while(1){
+        Thread::sleep(10000);
+        printf("-CNT: %llu , NEXT CHKPNT: %llu\n",t.getCurrentTick(),t.getNextInterrupt());
+
+    }
+}
+void rightAfterCurrentTime(){
+    ContextSwitchTimer t = ContextSwitchTimer::instance();
+
+    while(1){
+        Thread::sleep(10000);
+        //checkpoint near the current tick
+        //A chkpoint with dist. less than 80 is not set in time => lost!
+        t.setNextInterrupt(t.getCurrentTick()+80);
+        printf("-CNT: %llu , NEXT CHKPNT: %llu\n",t.getCurrentTick(),t.getNextInterrupt());
+
+    }
+}
+
+int main(){
+    iprintf("Context Switch Timer Driver Test1 (80)\n");
+
+    //basicTests(); //passed
+    rightAfterCurrentTime();
 }
diff --git a/miosix/config/Makefile.inc b/miosix/config/Makefile.inc
index b2d67a02..62737f90 100644
--- a/miosix/config/Makefile.inc
+++ b/miosix/config/Makefile.inc
@@ -17,7 +17,7 @@
 #OPT_BOARD := stm32f100rb_stm32vldiscovery
 #OPT_BOARD := stm32f103ve_strive_mini
 #OPT_BOARD := stm32f103ze_redbull_v2
-#OPT_BOARD := stm32f407vg_stm32f4discovery
+OPT_BOARD := stm32f407vg_stm32f4discovery
 #OPT_BOARD := stm32f207ig_stm3220g-eval
 #OPT_BOARD := stm32f207zg_ethboard_v2
 #OPT_BOARD := stm32f207ze_als_camboard
@@ -58,8 +58,8 @@
 ## -O2 is recomended otherwise, as it provides a good balance between code
 ## size and speed
 ##
-#OPT_OPTIMIZATION := -O0
-OPT_OPTIMIZATION := -O2
+OPT_OPTIMIZATION := -O0
+#OPT_OPTIMIZATION := -O2
 #OPT_OPTIMIZATION := -O3
 #OPT_OPTIMIZATION := -Os
 
diff --git a/miosix/config/miosix_settings.h b/miosix/config/miosix_settings.h
index 45c2f4c7..dcb9b886 100644
--- a/miosix/config/miosix_settings.h
+++ b/miosix/config/miosix_settings.h
@@ -34,7 +34,7 @@
 // The PARSING_FROM_IDE is because Netbeans gets confused by this, it is never
 // defined when compiling the code.
 #ifndef PARSING_FROM_IDE
-#error This error is a reminder that you have not edited miosix_settings.h yet.
+//#error This error is a reminder that you have not edited miosix_settings.h yet.
 #endif //PARSING_FROM_IDE
 
 /**
@@ -149,7 +149,7 @@ const unsigned char MAX_OPEN_FILES=8;
  * mode, so to use debugging it is necessary to disable sleep in the idle thread.
  * By default it is not defined (idle thread calls sleep).
  */
-//#define JTAG_DISABLE_SLEEP
+#define JTAG_DISABLE_SLEEP
 
 /// Minimum stack size (MUST be divisible by 4)
 const unsigned int STACK_MIN=256;
diff --git a/miosix_np_2/nbproject/configurations.xml b/miosix_np_2/nbproject/configurations.xml
index 259cd5e0..73b553dc 100644
--- a/miosix_np_2/nbproject/configurations.xml
+++ b/miosix_np_2/nbproject/configurations.xml
@@ -86,6 +86,7 @@
               <in>serial_efm32.cpp</in>
               <in>serial_lpc2000.cpp</in>
               <in>serial_stm32.cpp</in>
+              <in>servo_stm32.cpp</in>
               <in>stm32_hardware_rng.cpp</in>
               <in>stm32_hardware_rng.h</in>
               <in>stm32f2_f4_i2c.cpp</in>
@@ -453,6 +454,8 @@
         </df>
         <in>miosix.h</in>
       </df>
+      <in>cstimer.cpp</in>
+      <in>cstimer.h</in>
       <in>main.cpp</in>
     </df>
     <logicalFolder name="ExternalFiles"
@@ -521,6 +524,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
       </item>
       <item path="../miosix/arch/arm7_lpc2000/common/arch_settings.h"
@@ -1249,6 +1256,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -1762,6 +1773,9 @@
         <dependencyChecking>false</dependencyChecking>
         <rebuildPropChanged>false</rebuildPropChanged>
       </toolsSet>
+      <flagsDictionary>
+        <element flagsID="0" commonFlags="-std=gnu++11"/>
+      </flagsDictionary>
       <codeAssistance>
       </codeAssistance>
       <makefileType>
@@ -1791,18 +1805,27 @@
           </ccTool>
         </makeTool>
       </makefileType>
-      <item path="../main.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
+      <item path="../main.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="0">
           <incDir>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm3/bits</pElem>
-            <pElem>../miosix/arch/cortexM3_stm32/common</pElem>
-            <pElem>../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix/arch/cortexM3_stm32/common/interfaces-impl</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
+            <pElem>../miosix</pElem>
+            <pElem>../miosix/config/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
             <pElem>..</pElem>
+            <pElem>../miosix/arch/common</pElem>
+            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
+            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
           </incDir>
+          <preprocessorList>
+            <Elem>HSE_VALUE=8000000</Elem>
+            <Elem>SYSCLK_FREQ_168MHz=168000000</Elem>
+            <Elem>_ARCH_CORTEXM4_STM32F4</Elem>
+            <Elem>_BOARD_STM32F4DISCOVERY</Elem>
+            <Elem>_MIOSIX_BOARDNAME="stm32f407vg_stm32f4discovery"</Elem>
+          </preprocessorList>
         </ccTool>
       </item>
       <item path="../miosix/arch/common/CMSIS/Device/ST/STM32F10x/Source/Templates/system_stm32f10x.c"
@@ -1813,12 +1836,12 @@
       <item path="../miosix/arch/common/core/interrupts_cortexMx.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
       </item>
       <item path="../miosix/arch/common/drivers/sd_stm32f1.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -1842,7 +1865,7 @@
       <item path="../miosix/arch/common/drivers/serial_stm32.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/arch/common/drivers</pElem>
@@ -1869,7 +1892,7 @@
       <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/delays.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/interfaces</pElem>
@@ -1880,7 +1903,7 @@
       <item path="../miosix/arch/cortexM3_stm32/common/interfaces-impl/portability.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel/scheduler</pElem>
@@ -1903,12 +1926,12 @@
       <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/core/stage_1_boot.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
       </item>
       <item path="../miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/bsp.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
       </item>
       <item path="../miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_anakin/interfaces-impl/hwmapping.h"
             ex="false"
@@ -1918,17 +1941,17 @@
       <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
       </item>
       <item path="../miosix/filesystem/devfs/devfs.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
       </item>
       <item path="../miosix/filesystem/fat32/ccsbcs.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm3/bits</pElem>
@@ -1944,7 +1967,7 @@
       <item path="../miosix/filesystem/fat32/diskio.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -1962,7 +1985,7 @@
       <item path="../miosix/filesystem/fat32/fat32.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -1982,7 +2005,7 @@
           </incDir>
         </ccTool>
       </item>
-      <item path="../miosix/filesystem/fat32/ff.cpp" ex="false" tool="1" flavor2="0">
+      <item path="../miosix/filesystem/fat32/ff.cpp" ex="false" tool="1" flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -2001,7 +2024,7 @@
       <item path="../miosix/filesystem/fat32/wtoupper.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm3/bits</pElem>
@@ -2014,7 +2037,7 @@
           </incDir>
         </ccTool>
       </item>
-      <item path="../miosix/filesystem/file.cpp" ex="false" tool="1" flavor2="0">
+      <item path="../miosix/filesystem/file.cpp" ex="false" tool="1" flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/filesystem</pElem>
@@ -2034,7 +2057,7 @@
       <item path="../miosix/filesystem/file_access.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -2058,12 +2081,12 @@
       <item path="../miosix/filesystem/mountpointfs/mountpointfs.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
       </item>
       <item path="../miosix/filesystem/stringpart.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/filesystem</pElem>
@@ -2072,7 +2095,7 @@
           </incDir>
         </ccTool>
       </item>
-      <item path="../miosix/kernel/error.cpp" ex="false" tool="1" flavor2="0">
+      <item path="../miosix/kernel/error.cpp" ex="false" tool="1" flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -2089,7 +2112,7 @@
           </incDir>
         </ccTool>
       </item>
-      <item path="../miosix/kernel/kernel.cpp" ex="false" tool="1" flavor2="0">
+      <item path="../miosix/kernel/kernel.cpp" ex="false" tool="1" flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -2108,7 +2131,7 @@
           </incDir>
         </ccTool>
       </item>
-      <item path="../miosix/kernel/pthread.cpp" ex="false" tool="1" flavor2="0">
+      <item path="../miosix/kernel/pthread.cpp" ex="false" tool="1" flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -2130,9 +2153,9 @@
       <item path="../miosix/kernel/scheduler/priority/priority_scheduler.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
       </item>
-      <item path="../miosix/kernel/stage_2_boot.cpp" ex="false" tool="1" flavor2="0">
+      <item path="../miosix/kernel/stage_2_boot.cpp" ex="false" tool="1" flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -2153,7 +2176,7 @@
       <item path="../miosix/stdlib_integration/libc_integration.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/stdlib_integration</pElem>
@@ -2176,7 +2199,7 @@
       <item path="../miosix/stdlib_integration/libstdcpp_integration.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -2195,14 +2218,14 @@
           </incDir>
         </ccTool>
       </item>
-      <item path="../miosix/util/unicode.cpp" ex="false" tool="1" flavor2="0">
+      <item path="../miosix/util/unicode.cpp" ex="false" tool="1" flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix</pElem>
           </incDir>
         </ccTool>
       </item>
-      <item path="../miosix/util/util.cpp" ex="false" tool="1" flavor2="0">
+      <item path="../miosix/util/util.cpp" ex="false" tool="1" flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix/kernel</pElem>
@@ -2216,13 +2239,24 @@
           </incDir>
         </ccTool>
       </item>
-      <item path="../miosix/util/version.cpp" ex="false" tool="1" flavor2="0">
+      <item path="../miosix/util/version.cpp" ex="false" tool="1" flavor2="4">
         <ccTool>
           <incDir>
             <pElem>../miosix</pElem>
           </incDir>
         </ccTool>
       </item>
+      <folder path="0/miosix">
+        <ccTool>
+          <preprocessorList>
+            <Elem>COMPILING_MIOSIX</Elem>
+            <Elem>PARSING_FROM_IDE</Elem>
+            <Elem>STM32F10X_HD</Elem>
+            <Elem>_ARCH_CORTEXM3_STM32</Elem>
+            <Elem>_BOARD_STM3210E_EVAL</Elem>
+          </preprocessorList>
+        </ccTool>
+      </folder>
       <folder path="0/miosix/arch/common/core">
         <ccTool>
           <incDir>
@@ -2408,6 +2442,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -3027,6 +3065,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -3496,6 +3538,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -4116,6 +4162,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -4707,6 +4757,10 @@
         <dependencyChecking>false</dependencyChecking>
         <rebuildPropChanged>false</rebuildPropChanged>
       </toolsSet>
+      <flagsDictionary>
+        <element flagsID="0" commonFlags="-g"/>
+        <element flagsID="1" commonFlags="-std=gnu++11"/>
+      </flagsDictionary>
       <codeAssistance>
       </codeAssistance>
       <makefileType>
@@ -4716,13 +4770,20 @@
           <cleanCommand>${MAKE} -f Makefile clean</cleanCommand>
           <executablePath>../main.elf</executablePath>
           <cTool>
+            <incDir>
+              <pElem>../miosix</pElem>
+              <pElem>../miosix/config/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
+              <pElem>../miosix/arch/common</pElem>
+              <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
+              <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
+            </incDir>
             <preprocessorList>
               <Elem>COMPILING_MIOSIX</Elem>
-              <Elem>PARSING_FROM_IDE</Elem>
-              <Elem>SYSCLK_FREQ_168MHz</Elem>
+              <Elem>HSE_VALUE=8000000</Elem>
+              <Elem>SYSCLK_FREQ_168MHz=168000000</Elem>
               <Elem>_ARCH_CORTEXM4_STM32F4</Elem>
               <Elem>_BOARD_STM32F4DISCOVERY</Elem>
-              <Elem>__VFP_FP__</Elem>
+              <Elem>_MIOSIX_BOARDNAME="stm32f407vg_stm32f4discovery"</Elem>
             </preprocessorList>
             <undefinedList>
               <Elem>__SOFTFP__</Elem>
@@ -4731,12 +4792,11 @@
           <ccTool>
             <standard>8</standard>
             <preprocessorList>
-              <Elem>COMPILING_MIOSIX</Elem>
-              <Elem>PARSING_FROM_IDE</Elem>
-              <Elem>SYSCLK_FREQ_168MHz</Elem>
+              <Elem>HSE_VALUE=8000000</Elem>
+              <Elem>SYSCLK_FREQ_168MHz=168000000</Elem>
               <Elem>_ARCH_CORTEXM4_STM32F4</Elem>
               <Elem>_BOARD_STM32F4DISCOVERY</Elem>
-              <Elem>__VFP_FP__</Elem>
+              <Elem>_MIOSIX_BOARDNAME="stm32f407vg_stm32f4discovery"</Elem>
             </preprocessorList>
             <undefinedList>
               <Elem>__SOFTFP__</Elem>
@@ -4744,17 +4804,23 @@
           </ccTool>
         </makeTool>
       </makefileType>
-      <item path="../main.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
           <incDir>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
+            <pElem>..</pElem>
+            <pElem>../miosix/arch/common</pElem>
             <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
             <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
+          </incDir>
+        </ccTool>
+      </item>
+      <item path="../main.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
+          <incDir>
             <pElem>..</pElem>
+            <pElem>../miosix/arch/common</pElem>
+            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
+            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
           </incDir>
         </ccTool>
       </item>
@@ -4762,122 +4828,89 @@
             ex="false"
             tool="0"
             flavor2="2">
+        <cTool flags="0">
+        </cTool>
       </item>
       <item path="../miosix/arch/common/core/interrupts_cortexMx.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/arch/common/drivers/dcc.cpp"
+            ex="false"
+            tool="1"
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
       </item>
       <item path="../miosix/arch/common/drivers/sd_stm32f2_f4.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/arch/common/drivers</pElem>
-            <pElem>../miosix/kernel/scheduler</pElem>
-            <pElem>../miosix/filesystem/devfs</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include</pElem>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>../miosix</pElem>
-            <pElem>../miosix/arch/common</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/arch/common/drivers/serial_stm32.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/arch/common/drivers</pElem>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/filesystem/devfs</pElem>
-            <pElem>../miosix/kernel/scheduler</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix</pElem>
-            <pElem>../miosix/arch/common</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/arch/common/drivers/servo_stm32.cpp"
+            ex="false"
+            tool="1"
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/arch/common/drivers/stm32_hardware_rng.cpp"
+            ex="false"
+            tool="1"
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/delays.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/gpio_impl.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/common</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/arch/cortexM4_stm32f4/common/interfaces-impl/portability.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel/scheduler</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include</pElem>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix</pElem>
-            <pElem>../miosix/arch/common</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/core/stage_1_boot.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
       </item>
       <item path="../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/bsp.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/e20/e20.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
       </item>
       <item path="../miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_anakin/interfaces-impl/hwmapping.h"
             ex="false"
@@ -4887,458 +4920,182 @@
       <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
       </item>
       <item path="../miosix/filesystem/devfs/devfs.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
       </item>
       <item path="../miosix/filesystem/fat32/ccsbcs.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/filesystem/fat32/diskio.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/filesystem/fat32/fat32.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/kernel/scheduler</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
-      <item path="../miosix/filesystem/fat32/ff.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/util</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+      <item path="../miosix/filesystem/fat32/ff.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/filesystem/fat32/wtoupper.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
-      <item path="../miosix/filesystem/file.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+      <item path="../miosix/filesystem/file.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/filesystem/file_access.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/filesystem/mountpointfs</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix/filesystem/devfs</pElem>
-            <pElem>../miosix/filesystem/console</pElem>
-            <pElem>../miosix/filesystem/fat32</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/filesystem/mountpointfs/mountpointfs.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
       </item>
       <item path="../miosix/filesystem/stringpart.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
-      <item path="../miosix/kernel/error.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/filesystem/console</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+      <item path="../miosix/kernel/SystemMap.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
-      <item path="../miosix/kernel/kernel.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/kernel/scheduler</pElem>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+      <item path="../miosix/kernel/elf_program.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
-      <item path="../miosix/kernel/pthread.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/kernel/scheduler</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+      <item path="../miosix/kernel/error.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/kernel/kernel.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/kernel/process.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/kernel/process_pool.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/kernel/pthread.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/kernel/scheduler/control/control_scheduler.cpp"
+            ex="false"
+            tool="1"
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/kernel/scheduler/edf/edf_scheduler.cpp"
+            ex="false"
+            tool="1"
+            flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/kernel/scheduler/priority/priority_scheduler.cpp"
+            ex="false"
+            tool="1"
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
-      <item path="../miosix/kernel/scheduler/priority/priority_scheduler.cpp"
+      <item path="../miosix/kernel/stage_2_boot.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/kernel/sync.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
+        </ccTool>
+      </item>
+      <item path="../miosix/kernel/timeconversion.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-      </item>
-      <item path="../miosix/kernel/stage_2_boot.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix/filesystem/console</pElem>
-            <pElem>../miosix/util</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/stdlib_integration/libc_integration.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/kernel/scheduler</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
       <item path="../miosix/stdlib_integration/libstdcpp_integration.cpp"
             ex="false"
             tool="1"
-            flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/kernel/scheduler</pElem>
-            <pElem>../miosix/filesystem/console</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+            flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
-      <item path="../miosix/util/unicode.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix</pElem>
-          </incDir>
+      <item path="../miosix/util/crc16.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
-      <item path="../miosix/util/util.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+      <item path="../miosix/util/lcd44780.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
-      <item path="../miosix/util/version.cpp" ex="false" tool="1" flavor2="0">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix</pElem>
-          </incDir>
+      <item path="../miosix/util/unicode.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
         </ccTool>
       </item>
-      <folder path="0/miosix/arch/common/core">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/arch/common/core</pElem>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/filesystem/console</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
-        </ccTool>
-      </folder>
-      <folder path="0/miosix/arch/cortexM4_stm32f4/common">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-          </incDir>
+      <item path="../miosix/util/util.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
         </ccTool>
-      </folder>
-      <folder path="0/miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/core">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/core</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include</pElem>
-            <pElem>../miosix/arch/common/core</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
+      </item>
+      <item path="../miosix/util/version.cpp" ex="false" tool="1" flavor2="8">
+        <ccTool flags="1">
         </ccTool>
-      </folder>
-      <folder path="0/miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl">
+      </item>
+      <folder path="0/miosix">
         <ccTool>
           <incDir>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl</pElem>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include</pElem>
-            <pElem>../miosix/filesystem/console</pElem>
-            <pElem>../miosix/arch/common/drivers</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix</pElem>
             <pElem>../miosix/arch/common</pElem>
-          </incDir>
-        </ccTool>
-      </folder>
-      <folder path="0/miosix/filesystem/console">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/filesystem/console</pElem>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix/filesystem/devfs</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/kernel/scheduler</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
-        </ccTool>
-      </folder>
-      <folder path="0/miosix/filesystem/devfs">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/filesystem/devfs</pElem>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/kernel/scheduler</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
-        </ccTool>
-      </folder>
-      <folder path="0/miosix/filesystem/fat32">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/filesystem/fat32</pElem>
-          </incDir>
-        </ccTool>
-      </folder>
-      <folder path="0/miosix/filesystem/mountpointfs">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/filesystem/mountpointfs</pElem>
-            <pElem>../miosix/filesystem</pElem>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/interfaces</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
-        </ccTool>
-      </folder>
-      <folder path="0/miosix/kernel/scheduler">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/kernel/scheduler/priority</pElem>
-            <pElem>../miosix/kernel</pElem>
-            <pElem>../miosix/stdlib_integration</pElem>
-            <pElem>../miosix/kernel/scheduler</pElem>
             <pElem>../miosix/arch/cortexM4_stm32f4/common</pElem>
             <pElem>../miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery</pElem>
-            <pElem>../miosix/config</pElem>
-            <pElem>../miosix/kernel/scheduler/control</pElem>
-            <pElem>/opt/arm-miosix-eabi/arm-miosix-eabi/include/c++/4.7.3/arm-miosix-eabi/thumb/cm4/hardfp/fpv4/bits</pElem>
-            <pElem>../miosix/arch/common/CMSIS/Include</pElem>
-            <pElem>../miosix/arch/cortexM4_stm32f4/common/interfaces-impl</pElem>
-            <pElem>../miosix</pElem>
-          </incDir>
-        </ccTool>
-      </folder>
-      <folder path="0/miosix/util">
-        <ccTool>
-          <incDir>
-            <pElem>../miosix/util</pElem>
           </incDir>
+          <preprocessorList>
+            <Elem>COMPILING_MIOSIX</Elem>
+          </preprocessorList>
         </ccTool>
       </folder>
     </conf>
@@ -5375,6 +5132,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -6005,6 +5766,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -6635,6 +6400,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -7104,6 +6873,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -7588,6 +7361,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -8219,6 +7996,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -8709,6 +8490,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="0">
         <ccTool>
           <incDir>
@@ -9375,6 +9160,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="9">
         <ccTool>
           <incDir>
@@ -9864,6 +9653,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="9">
         <ccTool>
           <incDir>
@@ -10358,6 +10151,10 @@
           </ccTool>
         </makeTool>
       </makefileType>
+      <item path="../cstimer.cpp" ex="false" tool="1" flavor2="0">
+      </item>
+      <item path="../cstimer.h" ex="false" tool="3" flavor2="0">
+      </item>
       <item path="../main.cpp" ex="false" tool="1" flavor2="9">
         <ccTool>
           <incDir>
diff --git a/miosix_np_2/nbproject/private/configurations.xml b/miosix_np_2/nbproject/private/configurations.xml
index f63d12e9..894791aa 100644
--- a/miosix_np_2/nbproject/private/configurations.xml
+++ b/miosix_np_2/nbproject/private/configurations.xml
@@ -680,6 +680,8 @@
       </df>
       <df name="miosix_np_2">
       </df>
+      <in>cstimer.cpp</in>
+      <in>cstimer.h</in>
       <in>main.cpp</in>
     </df>
   </logicalFolder>
diff --git a/miosix_np_2/nbproject/private/private.xml b/miosix_np_2/nbproject/private/private.xml
index 382d3d0d..8efeae4e 100644
--- a/miosix_np_2/nbproject/private/private.xml
+++ b/miosix_np_2/nbproject/private/private.xml
@@ -10,7 +10,17 @@
     <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
     <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
-        <group/>
+        <group>
+            <file>file:/home/sasan/thesis/miosix/miosix-kernel/miosix/kernel/error.cpp</file>
+            <file>file:/home/sasan/thesis/miosix/miosix-kernel/cstimer.h</file>
+            <file>file:/home/sasan/thesis/miosix/miosix-kernel/miosix/arch/common/drivers/servo_stm32.cpp</file>
+            <file>file:/home/sasan/thesis/miosix/miosix-kernel/cstimer.cpp</file>
+            <file>file:/home/sasan/thesis/miosix/miosix-kernel/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h</file>
+            <file>file:/home/sasan/thesis/miosix/miosix-kernel/miosix/arch/common/drivers/servo_stm32.h</file>
+            <file>file:/home/sasan/thesis/miosix/miosix-kernel/main.cpp</file>
+            <file>file:/home/sasan/thesis/miosix/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/arch_registers_impl.h</file>
+            <file>file:/home/sasan/thesis/miosix/miosix-kernel/miosix/kernel/kernel.h</file>
+        </group>
     </open-files>
     <preferences xmlns="http://www.netbeans.org/ns/auxiliary-configuration-preferences/1">
         <module name="org-netbeans-modules-cnd-discovery">
diff --git a/miosix_np_2/nbproject/private/stm32f103ze_stm3210e-eval.properties b/miosix_np_2/nbproject/private/stm32f103ze_stm3210e-eval.properties
index e69de29b..b7de9fba 100644
--- a/miosix_np_2/nbproject/private/stm32f103ze_stm3210e-eval.properties
+++ b/miosix_np_2/nbproject/private/stm32f103ze_stm3210e-eval.properties
@@ -0,0 +1 @@
+/home/sasan/thesis/miosix/miosix-kernel/main.cpp=/home/sasan/thesis/miosix/miosix-kernel#-MMD -MP -std=gnu++11 -D_MIOSIX_BOARDNAME=\"stm32f407vg_stm32f4discovery\" -Wno-unused-but-set-variable -D_BOARD_STM32F4DISCOVERY -D_ARCH_CORTEXM4_STM32F4 -DHSE_VALUE=8000000 -DSYSCLK_FREQ_168MHz=168000000 -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -ffunction-sections -Wall -g -c -Imiosix -Imiosix/config/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery -I. -Imiosix -Imiosix/arch/common -Imiosix/arch/cortexM4_stm32f4/common -Imiosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery main.cpp -o main.o
diff --git a/miosix_np_2/nbproject/private/stm32f407vg_stm32f4discovery.properties b/miosix_np_2/nbproject/private/stm32f407vg_stm32f4discovery.properties
index e69de29b..08aa6fcd 100644
--- a/miosix_np_2/nbproject/private/stm32f407vg_stm32f4discovery.properties
+++ b/miosix_np_2/nbproject/private/stm32f407vg_stm32f4discovery.properties
@@ -0,0 +1 @@
+/home/sasan/thesis/miosix/miosix-kernel/cstimer.cpp=/home/sasan/thesis/miosix/miosix-kernel#-MMD -MP -std=gnu++11 -D_MIOSIX_BOARDNAME=\"stm32f407vg_stm32f4discovery\" -Wno-unused-but-set-variable -D_BOARD_STM32F4DISCOVERY -D_ARCH_CORTEXM4_STM32F4 -DHSE_VALUE=8000000 -DSYSCLK_FREQ_168MHz=168000000 -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -ffunction-sections -Wall -g -c -Imiosix -Imiosix/config/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery -I. -Imiosix -Imiosix/arch/common -Imiosix/arch/cortexM4_stm32f4/common -Imiosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery cstimer.cpp -o cstimer.o
-- 
GitLab