资源描述:
《Keil ARTX 介绍》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、KeilARTX介绍Keil ARTX(AdvancedReal-TimeeXecutive)是keil为ARM系列所提供的一个小型实时操作系统,整合于其UV3开发环境之中.一,简介与以前大家使用keilfor51时所熟悉RTX51实时操作系统类似,整个OS为keilIDE定制,面向特定的处理器,以库的形式提供,这就屏蔽了底层的操作,使得用户可以专注于应用的开发,但同时也使得用户无法接触到操作系统底层.ARTX提供的基本功能包括任务的建立,运行,删除,可以给任务指定优先级,对任务进行切换,具体可以参考keil的官方文档ARARM.chm,位于UV3的安装目录.AR
2、TX为任务间通信和共享资源的保护提供如下机制:*事件标志*信号量*互斥信号量*邮箱 ARTX的特征如下:任务数量最大256邮箱数量软件无限制,取决于硬件资源信号量数量软件无限制互斥信号量数量软件无限制信号数量每任务16个事件标志用户定时器软件无限制RAM空间需求最小500字节CODE空间需求小于5kB硬件要求一个片上定时器任务优先级1~255上下文切换时间在60MHz,0等待时小于5us中断锁定时间60MHz,0等待时为1.8us由于ARTX是keil为UV3所定制,所以使用UV3可以方便地建立基于ARTX的应用.简单的说,只需要引用一个头文件,并
3、于连接时连接ARTX库.下面例子来自keil(位于KeilARMARTXExamplesArtx_ex1).假定当前有两个任务,称作”do-this”与”do-that”.这些必须重复运行,例如间隔时间为50ms.两者都运行完成后会暂停一段时间,而”do-that”会在”do-this”运行后运行,并暂停20ms.按照如下步骤建立应用.首先利用关键字__task建立两个任务:voidtask1(void)__task{....codeoftask1placedhere....}voidtask2(void)__task{....codeoftask2plac
4、edhere....}任务必须建立于运行之前,可通过在main函数中调用os_sys_init()来启动任务的运行.如下例中,task1最先启动,然后其通过调用os_tsk_create来启动task2.voidtask1(void)__task{ os_tsk_create(task2,0); ....codeoftask1placedhere....}voidtask2(void)__task{ ....codeoftask2placedhere....}voidmain(void){ os_sys_init(task1);}完成最初所设定的应用任务的源
5、代码如下:/*IncludetypeandfunctiondeclarationsforARTX*/#include"ARTX.H"/*id1,id2willcontaintaskidentificationsatrun-time*/OS_TIDid1,id2;/*Forwardreference.*/voidtask1(void)__task;voidtask2(void)__task;voidtask1(void)__task{ /*Obtainownsystemtaskidentificationnumber*/ id1=os_tsk_self(); /
6、*Assignsystemidentificationnumberoftask2toid2*/ id2=os_tsk_create(task2,0); for(;;){ /*do-this*/ /*Indicatetotask2completionofdo-this*/ os_evt_set(0x0004,id2); /*Waitforcompletionofdo-that(0xffffmeansnotime-out)*/ os_evt_wait_or(0x0004,0xffff); /*Waitnowfor50ms*/
7、 os_dly_wait(5);}}voidtask2(void)__task{ for(;;){ /*Waitforcompletionofdo-this(0xffffmeansnotime-out)*/ os_evt_wait_or(0x0004,0xffff);/*do-that*/ /*Pausefor20msuntilsignalingeventtotask1*/ os_dly_wait(2); /*Indicatetotask1completionofdo-that*/ os_evt_set(0x0004,id1