Release 6.1.7
This commit is contained in:
157
utility/rtos_compatibility_layers/OSEK/demo_osek.c
Normal file
157
utility/rtos_compatibility_layers/OSEK/demo_osek.c
Normal file
@@ -0,0 +1,157 @@
|
||||
|
||||
#include <os.h>
|
||||
|
||||
/************************************************/
|
||||
/* Azure RTOS Implementation Specific */
|
||||
/************************************************/
|
||||
|
||||
/* Osek application definition. */
|
||||
APPLICATION_INFO Application1;
|
||||
|
||||
/* Task definition. */
|
||||
TaskType Task1;
|
||||
|
||||
/* Alarm definition. */
|
||||
AlarmType Alarm1;
|
||||
|
||||
/* Resource definition. */
|
||||
ResourceType Resource1;
|
||||
|
||||
/* Event definition. */
|
||||
EventMaskType Event1;
|
||||
|
||||
/* Counter definition. */
|
||||
CounterType SystemTimer;
|
||||
|
||||
/* Demo ISR definition. */
|
||||
ISRType DemoISR;
|
||||
|
||||
/* Task body declaration. */
|
||||
DeclareTask(Task1);
|
||||
|
||||
/* Demo ISR body declaration. */
|
||||
DeclareISR(DemoISR);
|
||||
|
||||
/* User hooks declarations. */
|
||||
static void ShutdownHook(StatusType Error);
|
||||
|
||||
static void PreTaskHook(void);
|
||||
|
||||
static void PostTaskHook(void);
|
||||
|
||||
static void StartupHook(void);
|
||||
|
||||
static void ErrorHook(StatusType Error);
|
||||
|
||||
|
||||
/* ThreadX timer for demo ISR. */
|
||||
TX_TIMER demo_isr_timer;
|
||||
|
||||
/* Entry function for the ThreadX timer. */
|
||||
VOID demo_isr_timer_entry(ULONG arg);
|
||||
|
||||
|
||||
/* Main function. */
|
||||
int main()
|
||||
{
|
||||
|
||||
tx_kernel_enter();
|
||||
|
||||
}
|
||||
ULONG free_memory[64*1024 / sizeof(ULONG)];
|
||||
|
||||
VOID tx_application_define(VOID * first_unused_memory)
|
||||
{
|
||||
|
||||
CHAR * pointer;
|
||||
|
||||
/* Put the first available address into character pointer. */
|
||||
pointer = (CHAR * )free_memory;
|
||||
|
||||
/* Setup hook pointers (optional). */
|
||||
Application1.shutdown_hook_handler = ShutdownHook;
|
||||
Application1.pretask_hook_handler = PreTaskHook;
|
||||
Application1.posttask_hook_handler = PostTaskHook;
|
||||
Application1.startup_hook_handler = StartupHook;
|
||||
Application1.error_hook_handler = ErrorHook;
|
||||
|
||||
/* Initialize a pointer. */
|
||||
osek_initialize(pointer,&Application1);
|
||||
|
||||
/* Create the system counter */
|
||||
SystemTimer = CreateCounter("SystemTimer", 0x7FFFFFFF, 2, 2, 0);
|
||||
DefineSystemCounter(SystemTimer);
|
||||
|
||||
/* Create the first Task. */
|
||||
Task1 = CreateTask("Task1", TaskEntry(Task1), 3, 1, 1024, NON, TRUE, EXTENDED, 0);
|
||||
|
||||
/* Create an event. */
|
||||
Event1 = CreateEvent();
|
||||
|
||||
/* Register Event1 to Task1. */
|
||||
RegisterEventtoTask(Event1 , Task1);
|
||||
|
||||
/* Create a resource. */
|
||||
Resource1 = CreateResource("Resource1", STANDARD, 0);
|
||||
|
||||
/* Register Resource1 to Task1. */
|
||||
RegisterTasktoResource(Resource1, Task1);
|
||||
|
||||
/* Create a demo ISR triggered by a ThreadX timer. */
|
||||
DemoISR = CreateISR("Demo ISR", ISREntry(DemoISR), CATEGORY2, 1024);
|
||||
|
||||
/* Create a ThreadX timer to simulate an ISR. */
|
||||
tx_timer_create(&demo_isr_timer, "Demo ISR timer", demo_isr_timer_entry, DemoISR,
|
||||
1000, 1000, TX_AUTO_ACTIVATE);
|
||||
|
||||
/* Start OSEK */
|
||||
StartOS(OSDEFAULTAPPMODE);
|
||||
|
||||
}
|
||||
|
||||
/* Task body. */
|
||||
TASK(Task1)
|
||||
{
|
||||
/* Task body. */
|
||||
while(1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/* Demo category 2 ISR function body. */
|
||||
ISR(DemoISR)
|
||||
{
|
||||
/* ISR body. */
|
||||
}
|
||||
|
||||
static void ShutdownHook(StatusType Error)
|
||||
{
|
||||
/* Hook body. */
|
||||
}
|
||||
|
||||
static void PreTaskHook(void)
|
||||
{
|
||||
/* Hook body. */
|
||||
}
|
||||
|
||||
static void PostTaskHook(void)
|
||||
{
|
||||
/* Hook body. */
|
||||
}
|
||||
|
||||
static void StartupHook(void)
|
||||
{
|
||||
/* Hook body. */
|
||||
}
|
||||
|
||||
static void ErrorHook(StatusType Error)
|
||||
{
|
||||
/* Hook body. */
|
||||
}
|
||||
|
||||
/* ThreadX timer handler to simulate an ISR. */
|
||||
VOID demo_isr_timer_entry(ULONG arg)
|
||||
{
|
||||
/* Call OSEK to process the ISR. */
|
||||
process_ISR2(arg);
|
||||
}
|
||||
Reference in New Issue
Block a user