* @return
*/\r
\r
-uint32_t Os_SysTickGetTimeElapsed( void )\r
+uint32_t Os_SysTickGetValue( void )\r
{\r
return (SysTick->VAL);\r
}\r
*/\r
/** @req OS383 */\r
-uint32_t Os_SysTickGetTimeElapsed( void )\r
+uint32_t Os_SysTickGetValue( void )\r
{
#if 0\r
uint32_t timer = get_spr(SPR_DECAR) - get_spr(SPR_DEC);\r
*/\r
/** @req OS383 */\r
-uint32_t Os_SysTickGetTimeElapsed( void )\r
+TickType Os_SysTickGetValue( void )\r
{\r
uint32_t timer = get_spr(SPR_DECAR) - get_spr(SPR_DEC);\r
return (timer);\r
-}\r
+}
+
+TickType Os_SysTickGetElapsedValue( uint32_t preValue ) {
+ uint32_t curr;
+ uint32_t max;
+
+ curr = get_spr(SPR_DEC);
+ max = get_spr(SPR_DECAR);
+ return Os_CounterDiff((max - curr),preValue,max);
+}
+\r
int OsGptChannelRef;\r
} OsDriver;\r
\r
-/*-------------------------------------------------------------------\r
- * Free running timer\r
- *-----------------------------------------------------------------*/
-typedef const uint32 OsTickType;
-void Os_SysTickInit( void );\r
-void Os_SysTickStart(uint32_t period_ticks);\r
-uint32_t Os_SysTickGetTimeElapsed( void );\r
+\r
\r
/*-------------------------------------------------------------------\r
* Counters\r
StatusType IncrementCounter( CounterType );\r
StatusType GetCounterValue( CounterType, TickRefType );\r
StatusType GetElapsedCounterValue( CounterType, TickRefType val, TickRefType elapsed_val);\r
+
+
+/*-------------------------------------------------------------------
+ * System timer
+ *-----------------------------------------------------------------*/
+typedef const uint32 OsTickType;
+void Os_SysTickInit( void );
+void Os_SysTickStart(TickType period_ticks);
+TickType Os_SysTickGetValue( void );
+TickType Os_SysTickGetElapsedValue( TickType preValue );
\r
/*-------------------------------------------------------------------\r
* Schedule Tables\r
\r
#if (ECUM_INCLUDE_NVRAM_MGR == STD_ON)\r
// Start timer to wait for NVM job to complete\r
- timer = Os_SysTickGetTimeElapsed();\r
+ timer = Os_SysTickGetValue();\r
#endif\r
\r
// Prepare the system to startup RTE\r
\r
#if (ECUM_INCLUDE_NVRAM_MGR == STD_ON)\r
// Wait for the NVM job to terminate\r
- while(Os_SysTickGetTimeElapsed()-timer < internal_data.config.EcuMNvramReadAllTimeout)\r
+ while(Os_SysTickGetValue()-timer < internal_data.config.EcuMNvramReadAllTimeout)\r
{\r
//TODO\r
}\r
static uint8 stackTop = 0x42;
+/**
+ * Creates an ISR dynamically
+ * @param entry
+ * @param prio
+ * @param name
+ *
+ * @return The PID of the ISR created
+ */
TaskType Os_Arc_CreateIsr( void (*entry)(void ), uint8_t prio, const char *name )
{
OsPcbType *pcb = os_alloc_new_pcb();
test_nr = 10;\r
break;\r
case 10:\r
-#if defined(CFG_PPC)\r
/* Test RES_SCHEDULER.\r
* Since GetResource(RES_SCHEDULER) only locks the\r
* scheduler (interrupts are still working) we the interrupt\r
isrTask = Os_Arc_CreateIsr( isr2, 4/*prio*/,"soft_0");\r
\r
\r
- Irq_AttachIsr2(isrTask,NULL,INTC_SSCIR0_CLR0);\r
+ Irq_AttachIsr2(isrTask,NULL,IRQ_SOFTINT_0);\r
/* Create an ISR1 */\r
- Irq_AttachIsr1(isr1,NULL,INTC_SSCIR0_CLR1,6);\r
+ Irq_AttachIsr1(isr1,NULL,IRQ_SOFTINT_1,6);\r
\r
GetTaskID(&task);\r
TEST_ASSERT( task == TASK_ID_etask_sup_l );\r
/* Lock the scheduler */\r
rv = GetResource(RES_SCHEDULER);\r
- Irq_GenerateSoftInt( INTC_SSCIR0_CLR0 );\r
+ Irq_GenerateSoftInt( IRQ_SOFTINT_0 );\r
\r
GetTaskID(&task);\r
\r
\r
// TEST_ASSERT( taskRunCnt == 1 );\r
// TODO:\r
-#endif\r
\r
test_nr = 100;\r
break;\r
extern int test_suite;
extern int test_nr;
-
+/* TODO: Move to a better place */
+#if defined(CFG_MPC55XX)
+/* On INTC first 8 interrupt are softtriggered */
+#define IRQ_SOFTINT_0 INTC_SSCIR0_CLR0
+#define IRQ_SOFTINT_1 INTC_SSCIR0_CLR1
+#elif defined(CFG_ARM_CM3)
+/* Cortex-M3 can softtrigger any interrupt. Use external here. */
+#define IRQ_SOFTINT_0 EXTI0_IRQn
+#define IRQ_SOFTINT_1 EXTI1_IRQn
+#endif
#if 1
#define SECTION_SUP