Rtems--c_user--系统配置

写在前面的话:初学Rtems,英语水平也有限,错误在所难免,请各位大牛不吝赐教,完善c_user的翻译。便于大家受益,在此谢过!

 

23.1引言

对每个应用来说,Rtems需要进行配置。配置信息包含了各种信息,如时钟“滴答”的长度,能创建的Rtems对象的最大个数,应用程序的初始化任务,应用程序中用到的驱动程序。信息被放置在系统初始化时分配给Rtems的数据结构中。本章详述了这些数据结构的类型,以及自动生成这些结构的一种简单机制。

 

23.2自动生成系统配置信息

Rtemst提供了rtems/confdefs.h这一C头文件,根据设定的各种宏能够产生Rtems应用程序需要的几乎所有的配置表。不是手工一个一个的建立各个表,而是在应用程序中通过给出几个配置参数的值来建立各个表。下面给了一个例子,一个包含消息队列、50毫秒的时间片的简单系统的配置信息

#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MICROSECONDS_PER_TICK 1000 /* 1 millisecond */
#define CONFIGURE_TICKS_PER_TIMESLICE 50 /* 50 milliseconds */
#define CONFIGURE_MAXIMUM_TASKS 4
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE

 

系统将从一个简单的叫做init的初始化任务开始执行。该应用程序配置成了带控制台驱动(标准输入/输出)和时钟设备驱动。

配置表中的每个配置参数,在给出的宏中都有与之对应的。大部分系统都可以通过rtems/confdefs.h进行简单的配置。

CONFIGURE_INIT常数必须给出,以保证由rtems/confdefs.h将配置参数实例化。这个只能在一个包含的应用程序原代码中定义...

用户必须知道默认值有意将配置集合压缩到最小。默认的,在应用程序中没有配置rtems/confdefs.h时,rtems/confdefs.h文件要确保最少一个任务或线程配置了,最少有一个初始化任务或线程表被配置。rtems/confdefs.h文件估计了Rtems执行空间大概需要的所需分配的内存。这种估计的精确度仅和rtems/confdefs.h给出的信息相关。可能因为各种原因使得估计有偏差。下列原因可能使得rtems/confdefs.h为Rtems预留富余的内存。

(1)所有的任务或线程都被声明为浮点型。

(2)

通常只要给出比足够的信息,rtems/confdefs.h配置的还是很精确的。使用库文件相当容易,不考虑其资源。以下列表中的所有常数部分可以由用户设置。
  

23.2.1库支持定义

这一部分定义了rtems/confdefs.h支持的文件系统、IO库相关配置参数。

CONFIGURE_MALLOC_STATISTICS--当应用程序希望使能收集例程中C宏的详细统计信息CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK--

CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS

 

23.2.2基本的系统信息

本节定义了rtems/confdefs.h支持的一般的系统配置参数。

CONFIGURE_HAS_OWN_CONFIGURATION_TABLE--只有在应用程序提供了自己的完整的配置表集合时才定义

CONFIGURE_EXECUTIVE_RAM_WORK_AREA--

CONFIGURE_MICROSECONDS_PER_TICK--“滴答”之间的时间长度。默认设置为1000毫秒。

CONFIGURE_TICKS_PER_TIMESLICE--每个任务的“滴答”的一个时间片长度。默认为50。

CONFIGURE_MAXIMUM_PRIORITY--系统中任意一个任务的优先级数量。

CONFIGURE_MINIMUM_STACK_SIZE--应用程序所希望的每个任务或线程的堆栈的最小尺寸,字节数。

CONFIGURE_INTERRUPT_STACK_SIZE--

CONFIGURE_TASK_STACK_ALLOCATOR--可以指向一个用户提供的例程,分配任务的堆栈。这一块的默认值为空(NULL)。指示了任务堆栈将从Rtems空间进行分配。

CONFIGURE_TASK_STACK_DEALLOCATOR--

CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY--表明Rtems是否需要清空Rtems空间,C程序堆作为初始化的一部分。如果设置为真,空间被清空。否则,他不为空。除非由BSP重写。这一块的默认值为FALSE。

CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE--

CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(max_messages, size_per)--

CONFIGURE_MESSAGE_BUFFER_MEMORY--

 

23.2.3空闲任务配置

本节定义了关于空闲任务相关的rtems/confdefs.h支持的参数配置。

CONFIGURE_IDLE_TASK_BODY--

ONFIGURE_IDLE_TASK_STACK_SIZE--

CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION--

23.2.4设备驱动表

本节定义了与自动产生设备驱动表相关的配置参数。rtems/confdefs.h只识别标准设备驱动。生成的设备驱动表仅仅能用于不带自定义的驱动的简单的应用程序。

CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE--

CONFIGURE_MAXIMUM_DRIVERS--

CONFIGURE_MAXIMUM_DEVICES--

CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER--

CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER--

...

CONFIGURE_BSP_PREREQUISITE_DRIVERS--如果BSP有设备驱动,它需要包含在设备驱动表中。这必须在设备入口地址表中进行定义,要放置在设备驱动表的前面,在其他设备驱动之前进行初始化。默认,该项不予定义。

CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS--

CONFIGURE_APPLICATION_EXTRA_DRIVERS--

 

23.2.5多处理器配置

 

23.2.6典型API配置

本节涉及了典型API相关的系统参数配置。

CONFIGURE_MAXIMUM_TASKS --能被激活的典型API任务的最大数目。该处默认为0。

 

23.2.7 典型API任务初始化表

 

23.3配置表

Rtems配置表用于应用特定应用需求的应用程序对系统的裁剪。比如,用户可以配置设备驱动的最大数目或是使用何种API。用户定义的配置表地址被作为一个参数传给rtems_initialize_executive函数。Rtems调用的第一个函数。Rtems的C结构定义如下:

work space start--Rtems在RAM中工作空间的地址。该空间包含的项目块为不同对象的控制块(TCBs, QCBs, ...)和任务堆栈。

work space size--

microseconds per tick--

ticks per timeslice--每个时间片含时钟“滴答”的次数。当使用rtems/confdefs.h机制配置为应用程序做配置时,该值对应于CONFIGURE_TICKS_PER_TIMESLICE宏的设置值。

stack allocate hook--堆栈分配挂钩
do zero of workspace--

maximum drivers--

number of device drivers--

number of device drivers--

Device driver table--

number of initial extensions--是一些初始用户扩展。这里的入口地址数必须和用户扩展表中的的数量相同。如果这里的值为0,则User driver address table地址必须为空。当使用rtems/confdefs.h机制配置为应用程序做配置时,该处的值由宏CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS通过rtems/confdefs.h自动设置。当然rtems/confdefs.h的赋值是根据User Extensions Table。

User extension table-- User Extension Table的表地址。

User multiprocessing table--

RTEMS api confguration--

POSIX api confguration--

 

 

 

23.4Rtems API配置表

 

23.7初始化任务表

 

23.8驱动地址表

 

23.9用户扩展表

 

23.12确定的内存要求

 

23.13...内存空间

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值