rtems 系统剪裁与配置

1. 总体介绍

  RTEMS中,需要对应用进行手工或者自动配置。需要配置的信息包括每个时钟tick的实际时间值,RTEMS上能创建的对象数目,应用初始化任务,和应用的设备驱动。这些信息存放在RTEMS中的数据结构中。本文介绍了手工配置的要点,也介绍了如何进行简单的自动配置。

2.系统的自动配置

2.1 配置的说明

  RTEMS提供 confdefs.h C语言头文件,该头文件是自动配置中使用的重要文件。该文件中包含了大量的宏定义,这些宏用来创建系统的配置表。confdefs.h中,程序员可以定义需要设定的配置参数,这样就可以不用手动设置每一个配置表了。为了使confdefs.h中的配置生效,一定要定义CONFIGURE_INIT常量,该常量在包含confdefs.h的应用程序中定义。下列将介绍配置文件confdefs.h中的常量。

2.2 库支持常量定义

这一节定义了confdefs.h中文件系统I/O库相关的常量

CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS: 可以同时打开的文件数目。I/O库中,每打开一个文件就需要为其分配一个互斥变量。CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS的默认值为3,也就是支持标准的输入,输出和错误输出三个文件描述符。

CONFIGURE_TERMIOS_DISABLED:程序中不会使用POSIX的termios 功能,缺省为支持。

CONFIGURE_NUMBER_OF_TERMIOS_PORTS 终端数目,缺省为1。

CONFIGURE_HAS_OWN_MOUNT_TABLE:如果系统使用自己的文件系统安装表,如果支持文件系统,就会定义的 rtems_filesystem_mount_table_t类型的变量rtems_filesystem_mount_table

CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM 使用IMFS为缺省文件系统。这是默认选项,否则使用miniIMFS为基本文件系统。

STACK_CHECKER_ON 是否对堆栈越界进行动态检查,缺省为不检查。

2.3 基本系统信息

confdefs.h中定义的系统参数如下:

CONFIGURE_HAS_OWN_CONFIGURATION_TABLE 系统使用自己定义的配置表CONFIGURE_INTERRUPT_STACK_MEMORY 中断堆栈大小,缺省大小为 RTEMS_MINIMUM_STACK_SIZE

CONFIGURE_EXECUTIVE_RAM_WORK_AREA RTEMS基准地址,缺省为NULL,表示由BSP判断

CONFIGURE_MICROSECONDS_PER_TICK 每个tick实际的微秒数

CONFIGURE_TICKS_PER_TIMESLICE 每个时间片中的tick数目缺省为50.

CONFIGURE_MEMORY_OVERHEAD 为系统追加的内存数目,默认价值是 0

CONFIGURE_EXTRA_TASK_STACKS 为系统追加的堆栈数目,默认价值是 0 ,如果系统使用的堆栈大于confdefs.h计算出的的堆栈数目,那么就可以增大该值

2.4 多处理器配置选项

如果定义了CONFIGURE_MP_APPLICATION,下面的选项就有效:

CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE 用户自己提供多处理器配置表。

CONFIGURE_MP_NODE_NUMBER 多处理器节点数目。

CONFIGURE_MP_MAXIMUM_NODES 最多节点数目。

CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS 全局变量数目,默认是 32 。

CONFIGURE_MP_MAXIMUM_PROXIES 代理最大数目,默认是 32 。

CONFIGURE_MP_MPCI_TABLE_POINTER MPCI配置表的指针。该字段的默认值是 &MPCI_table。

2.5  标准配置

CONFIGURE_MAXIMUM_TASKS 并行任务最大数。默认是0(没有限制)。

CONFIGURE_MAXIMUM_TIMERS 定时器最大数。默认是0(没有限制) 。

CONFIGURE_MAXIMUM_SEMAPHORES 最大信号量数目,默认是 0 。

CONFIGURE_MAXIMUM_MESSAGE_QUEUES 最大消息队列数目,为该字段的默认是 0 。

CONFIGURE_MAXIMUM_PARTITIONS 内存区最大数目。默认是 0 。

CONFIGURE_MAXIMUM_REGIONS 可变内存区最大数目,默认是 0 。

CONFIGURE_MAXIMUM_PORTS 可以同时存在的ports数目,默认是 0 。

CONFIGURE_MAXIMUM_PERIODS 可同时存在单调期数。默认是 0 。

CONFIGURE_MAXIMUM_USER_EXTENSIONS 允许的用户扩展数。默认是 0 。

2.6 标准API初始表

confdefs.h 会自动产生初始化任务表Initialization_tasks,下面是控制表自动创建的参数。

CONFIGURE_RTEMS_INIT_TASKS_TABLE 如果用户愿使用标准RTEMS API初始化任务表。任务一般会通过其他任务进行初始化,所以这个字段缺省为未定义。

CONFIGURE_HAS_OWN_INIT_TASK_TABLE有自定义的初始化表,缺省没有。

CONFIGURE_INIT_TASK_NAME 初始任务名称,缺省值为rtems_build_name 。 ('U' , 'I' , '1','')

CONFIGURE_INIT_TASK_STACK_SIZE 任务栈大小 , 缺省为 RTEMS_MINIMUM_STACK_SIZE 。

CONFIGURE_INIT_TASK_PRIORITY 初始任务的优先级 , 缺省为 1 。

CONFIGURE_INIT_TASK_ATTRIBUTES 缺省的初始化任务属性 , 缺省为 RTEMS_DEFAULT_ATTRIBUTES 。

CONFIGURE_INIT_TASK_ENTRY_POINT 初始任务 , 缺省为 Init 。

CONFIGURE_INIT_TASK_INITIAL_MODES 初始任务执行模式,初始为RTEMS_NO_PREEMPT 。

CONFIGURE_INIT_TASK_ARGUMENTS 初始任务参数,初始值是 0 。

posted @ 2011-11-23 10:09  zhouprogram  阅读(788)  评论(0编辑  收藏  举报