RTEMS的裁剪是通过一系列宏定义来完成的,通过这些宏设置RTEMS相关全局变量,RTEMS配置表,CPU依赖信息表,系统初始化任务表,以及用户初始化任务表,除了完成相关的系统功能之外,还可以提供系统的配置模板,可以通过预编译的方式来实现操作系统的裁剪,常见的方式如下
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS4
#define CONFIGURE_RTEMS_INI$SKS_TABLE
#define CONFIGURE_EXTRA_TASK_STACKS
在cpukit/sapi/include目录下的confdefs.h是进行宏配置的模板文件,当然,应用程序也可以根据需要进行重写。如下代码是一个示例应用程序,可作为开发移植的参考,示例中配置了最大支持的任务数为4,同时,需要注意的是,rtems_task_argument ignored表示忽略参数。
#include <bsp.h>
#include <stdio.h>
#include <stdlib.h>
rtems_task_Init(
rtems_task_argument argument
//rtems_task_argument ignored
)
//配置项
#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_MAXIMUM_TASKS
#define CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEMS
#define CONFIGURE_RTEMS_INIT_TASK_TABLE
#define CONFIGURE_EXTRA_TASK_STACKS (3 * RTEMS_MINIMUM_STACK_SIZE)
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
{
print("hello world");
exit(0)
}