RL-ARM: RL-ARM User's Guide
RL-ARM
实时库用户指南
页码,1/335
RL-ARM™
用户指南包含关于
RealView
®
实时库构成的细节信息。
本手册包含以下几章:
n
RL-RTX
描述了RL-ARM实时操½系统的结构,包括任务优先级、上下文切换、单个CPU下如½管理多个任务以及
在RL-RTX中用到的其他一些
RTOS特性。
RL-FlashFS
描述了
RL-ARM中Flash文件系统的结构,包括文件创建、保存、读取以及在标准的flash,RAM或
是存储卡设备中修改文件。
RL-TCPnet
描述了RL-ARM中TCP/IP协议栈组的结构,包括多种TCP/IP特性,以及帮助½创建可以联½的嵌入
式运用程序。
RL-CAN
描述了RL-ARM中CAN设备的结构,包括如½采用RTX内核建立CAN运用程序。
Example Programs
列举了一些RL-ARM例程以及描述如½对其进行测试。
Library Reference
描述了在
RL-ARM所有的库程序。
Appendix
包含
µVision®
调试对话框,以及术语表。
n
n
n
n
n
n
RL-ARM
支持基于ARM的微控制器,是对RealView
MDK-ARM™
开发工具的补充。
注意:
n
RealView® MDK-ARM开发工具包中并不包括RL-FlashFS、RL-TCPnet,以及RL-CAN
,这些只在RL-ARM
独
立的产品中可以找到。
修订历史
n
n
n
n
n
n
n
2006.11:
增加对SD/MMC
Flash
存储卡
的支持。
2006.11:
将所有的½数描述移到库参考单元。
2006.10:
初始对接½络。
2005.10:
增加
互斥½, 堆栈校验,
Flash
文件系统,
以及
CAN驱动。
2005.6:
第二次修订
2005.2:
第一次修订
2004.11:
初始版本
Copyright
©
Keil, An ARM Company. All rights reserved.
RL-RTX
RTX内核是一个实时操½系统(RTOS),可以同时运行多½数或是任务。在嵌入式运用中这是非常有用的。½然也可
以不用RTOS开发实时程序不需要,例如通过循环执行一个或多个任务。½有像RTX这样的实时操½系统,可以解决众多的
调度、维护、定时等问题。
RTOS
可以自由地调度系统资源,比如CPU和内存,并且提供一种任务间通信机制。
RTX内核是一个强大的实时操
½系统,可以很容易地½用和运行基于
ARM7TDMI、ARM9或是 Cortex-M3 CPU
内核的微控制器。
RTX程序½用标准的C结构编写,运用RealView®
编译器进行编译。RTX.H 头文件定义了RTX½数以及宏,可以让
file://C:\Documents and Settings\admin\Local Settings\Temp\~hhB0BC.htm
2010-7-21
RL-ARM: RL-ARM User's Guide
½松地声明任务并达到RTOS所有特性。
在新工程中½用RTX内核
将通过一步步的介绍让读者了解怎样创建RTX运用程序。
页码,2/335
Copyright
©
Keil, An ARM Company. All rights reserved.
概述
RTX内核可以½松地½用实时执行器,该实时执行器为基于ARM CPU核的微控制器提供。RTX内核提供了一组C½数以及C
宏,可以让开发者½用在CPU中并行运行的任务去创建实时运用程序。
这个部分提供了RTX内核基本的信息,列出了时钟信息,以及解释了并行执行任务的概念。
Copyright
©
Keil, An ARM Company. All rights reserved.
功½描述
RTX的基本功½就是开始和停止任务(进程),除此之外还支持进程通信,例如任务的同步、共享资源(外设或内
存)的管理、任务之间消息的传递。
Copyright
©
Keil, An ARM Company. All rights reserved.
基本½数
开发者可以½用基本½数去开启实时运行器,去开始和终结认为,以及去传递任务间的控制(½½调度)。开发者可以赋予
认为优先级。½在就绪队列中有多个任务的时候,RTX内核通过执行优先级来确定下一个运行的任务(强占调度)。
Copyright
©
Keil, An ARM Company. All rights reserved.
进程通信
RTX提供了几种不同的进程通信方法:
n
事件标志
事件标志是实现进程同步的主要方法,每个进程有16个事件标识可供½用,所以最多½等待16个不同的事件。也可以
同时等待多个事件标志,这种情况下,如果这些事件标志是与的关系,那么这些事件标志必须½被½½后该进程才½继续运
行;如果这些事件标志是或的关系,那么这些事件标志中的一个或几个被½½后该进程就可以继续运行。
事件标志也可被ARM中断功½½½。在这种机制下,通过½用ARM中断½数设½任务等待的标志,可以½异步的外部事
件和RTX核的任务同步。
n
信号量
在多任务实时操½系统中,需要特别的方法访问共享资源。否则,这些任务对共享资源的同时访问可½会导致数据的
不一致或外设的错误操½。
解决访问临界资源问题的主要方法是信号量。信号量是包含了虚拟标志的½件对象。内核将标志给第一个请求的任
务。在任务将其返回给信号量之前,没有其他的任务可以获取这个标志。只有拥有标志的任务才½访问公共资源,这就阻止
了其他的任务访问和扰乱公共资源。
½信号量的标志不可用时,访问它的进程将被挂起,一旦标志被返回,这个进程就会被唤醒。为了解决错误的等待条
件,必须引入超时机制。
n
互斥量
file://C:\Documents and Settings\admin\Local Settings\Temp\~hhB0BC.htm
2010-7-21
RL-ARM: RL-ARM User's Guide
页码,3/335
互斥量是解决进程同步问题的另一种方法。它们用½对临界区的访问控制,只有拥有互斥量的进程才½访问临界区,
其他试图访问临界区的进程将被阻塞。
n
信箱
有时进程之间需要交换消息,这在½络中是很常见的,例如TCP-IP、UDP、ISDN等。
消息就是包含协议消息或帧的内存块的指针,这样的内存块可以动态的分配和提供给用户。为了防止内存泄漏,用户
有责任正确地分配和回收内存块。
如果接收进程访问信箱中的消息不存在,它将被挂起,直到该消息被发送进程发送到信箱中,该被挂起的接收进程才
会被唤醒。
Copyright
©
Keil, An ARM Company. All rights reserved.
技术规范
描述
支持的进程数
支持的信箱数
支持的信号量数
支持的互斥量数
支持的信号量数
支持的用户定时器数
RAM
要求
代码要求
硬件要求
用户进程优先级
进程切换的时间
中断停止时间
RX Kernel
最多256
无限制
无限制
无限制
每个进程16个
无限制
最少500字节
小于5
K字节
一个或多个片上时钟可用
1 - 255
小于5µsec
@60MHz, 0 ws.
小于1.8
µsec
@60MHz, 0 ws
注意
n
n
n
n
无限制是说不受RTX核操½系统的限制,½是要受到系统内存资源的限制;
RTX核的默认配½是:10个任务、10个用户定时器、禁止栈的检查;
这里的“信号”就是事件的意思;
RAM的限制是由并发执行的进程数来决定的。
Copyright
©
Keil, An ARM Company. All rights reserved.
时序规格
½数
初始化系统(os_sys_init),
启动进程
创建定义的进程,没有进程切换
创建定义的进程,切换进程
撤消进程(通过os_tsk_delete)
进程切换(通过os_tsk_delete_self)
进程切换(通过os_tsk_pass)
进程切换(upon
set event)
时间性½
36.3
12.9
14.6
5.9
8.8
4.6
7.3
file://C:\Documents and Settings\admin\Local Settings\Temp\~hhB0BC.htm
2010-7-21
RL-ARM: RL-ARM User's Guide
进程切换(upon
sent semaphore)
进程切换(upon
sent message)
设½时间(没有进程切换)
发送信号量
(没有进程切换)
发送消息(没有进程切换)
获得进程标识符
(os_tsk_self)
IRQ中断服务子程序的中断响应时间
IRQ中断服务子程序的最大等待时间(lockout)
IRQ中断服务子程序的最大中断延迟 (response + lockout)
5.5
6.1
2.5
1.9
2.8
1.0
0.4
2.2
2.6
页码,4/335
注意
n
n
n
这里的时间数据是在LPC21xx上执行的结果,系统时钟为60MHz,单½是µs,代码在处理器的内部Flash中执行;
这些时间数据由µVision3调试器和SARM.DLL½件仿真器(1.50e版本)测得的。
中断服务子程序及调用中断服务的程序½由RealView编译器编译。在不½用RTX核时,RVCT快速中断程序也有同
样的中断响应时间。Interrupt
response for ISRs includes the ISR prolog as generated by RealView
Compilation Tools. The RVCT fast interrupt procedures have the same interrupt response time
without the RTX kernel.
Copyright
©
Keil, An ARM Company. All rights reserved.
怎样½用RTX内核
处:
RTX核的实时响应是基于多任务并发执行的思想,将系统必须响应的任务被分成几个更小的任务,这样做有许多½
n
n
n
n
n
n
n
现实世界的事件通常是由并发事件组成的,这种模式可以被映射到½件中;
不同的事件在需要时可随时发生,将一个任务分割成可以独立执行的进程,½得这种情况可以实现;
任务的优先级是可改变的;
一个大的模块可以分割成几个小的模块,这样做有利于程序的理解及模块的管理;
通过将一个½件分割成独立的几个部分可减小系统的复杂性,同时减少错误的发生,½测试更容易;
系统的扩展更加容易,只需要在系统中增加任务就可以实现;
RTX核的实时性为实时应用程序提供了许多方便,例如可以提供一个½的中断处理、任务的周期性响
应及等待½数的时限等。
Copyright
©
Keil, An ARM Company. All rights reserved.
第一个RTX运用程序
这部分给出了一个非常简单的½用RTX核的应用程序例子。
这个应用程序有两个任务,
task1和task2,这两个任务
必须在一定的时间(如50ms)后重复执行,½task1执行完后暂停20ms,然后继续执行task2。
现在,一步一步构建这个应用程序。
1.
将操½代码写入到task1和task2中。
在RVCT中½用C语言的扩展关键字_task声明这两个任务。
void task1 (void) __task
{
.... place code of task 1 here ....
file://C:\Documents and Settings\admin\Local Settings\Temp\~hhB0BC.htm
2010-7-21
RL-ARM: RL-ARM User's Guide
}
void task2 (void) __task
{
.... place code of task 2 here ....
}
2.
运行任务之前启动实时运行器,然后,在C程序的main()½数中调用os_sys_init()
½数。
将任务ID½为一个参数传递到os_sys_init½数中,½程序运行时就直接执行task1。
首先执行rask1。在task1执行时调用
os_tsk_create
创建task2。
void task1 (void) __task
{
os_tsk_create (task2, 0);
.... place code of task 1 here ....
}
void task2 (void) __task
{
.... place code of task 2 here ....
}
void main (void)
{
os_sys_init (task1);
}
3.
将操½写入到死循环中,不可预知地重复执行两个程序。
页码,5/335
首先,系统½数
os_dly_wait()
任务暂停几个系统时间间隔。RTX核通过对ARM处理器片上定时器的编程来实
现系统定时器,默认情况下,系统间隔10ms,½用0号定时器,不过这可以调整。
系统½数
os_evt_wait_or
的½用是用于让task1等待task2完成,而
os_evt_set½用是传送信号给task2。
这个例子中½用的是3号事件标志。task2必须在task1完成20ms之后才½启动。同样的½数可以在task2等待task1以
及传送信号给task1时½用。以下列举了运行RTX例程所有的要求:
/* Include type and function declarations for RTX */
#include "rtl.h"
/* id1, id2 will contain task identifications at run-time */
OS_TID id1, id2;
/* Forward declaration of tasks. */
void task1 (void) __task;
void task2 (void) __task;
void task1 (void) __task
{
/* Obtain own system task identification number */
id1 = os_tsk_self();
/* Create task2 and obtain its task identification number */
id2 = os_tsk_create (task2, 0);
for (;;)
{
/* ... place code for task1 activity here ... */
file://C:\Documents and Settings\admin\Local Settings\Temp\~hhB0BC.htm
2010-7-21
评论