
24
Example Application
/* example.c
*
* This file contains an example of a simple RTEMS
* application. It contains a Configuration Table, a
* user initialization task, and a simple task. *
* This example assumes that a board support package exists
* and invokes the initialize_executive() directive.
*/
#include "rtems.h"
rtems_task init_task();
#define INIT_NAME build_name( 'A', 'B', 'C', ' ' )
rtems_initialization_tasks_table init_task = {
{ INIT_NAME, /* init task name "ABC" */
1024, /* init task stack size */
1, /* init task priority */
DEFAULT_ATTRIBUTES, /* init task attributes */
init_task, /* init task entry point */
TIMESLICE, /* init task initial mode*/
0 /* init task argument */
}
};
rtems_configuration_table Config_tbl = {
NULL, /* filled in by the BSP */
65536, /* exective RAM size */
2, /* maximum tasks */
0, /* maximum timers */
0, /* maximum semaphores */
0, /* maximum message queues */
0, /* maximum messages */
0, /* maximum partitions */
0, /* maximum regions */
0, /* maximum ports */
0, /* maximum periods */
0, /* maximum extensions */
RTEMS_MILLISECONDS_TO_MICROSECONDS(10), /* number of ms in a tick */
1, /* number of user init tasks */
init_task_tbl, /* user init task(s) table */
0, /* number of device drivers */
NULL, /* ptr to driver address table */
NULL, /* ptr to extension table */
NULL /* ptr to MP config table */
};
task user_application( rtems_task_argument ignored );
#define USER_APP_NAME 1 /* any 32-bit name; unique helps */
rtems_task init_task( rtems_task_argument ignored )
{
rtems_id tid;
/* example assumes SUCCESSFUL return value */
(void) task_create( USER_APP_NAME, 1, 1024,
NO_PREEMPT, FLOATING_POINT, &tid );
(void) task_start( tid, user_application, 0 );
(void) task_delete( SELF );
}
rtems_task user_application()
{
/* application specific initialization goes here */
while ( 1 ) { /* infinite loop */
/* APPLICATION CODE GOES HERE
*
* This code will typically include at least one
* directive which causes the calling task to
* give up the processor. */
}
}