原创 RTX51 Tiny 2.02 中文手册 part4

2009-7-24 16:58 4403 12 12 分类: MCU/ 嵌入式

第四章RTX51 Tiny配置<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


RTX51 Tiny可根据应用的不同定制。


一、配置


建立了嵌入式应用后,RTX51 Tiny必须要配置。所有的配置设置都在CONF_TNY.A51文件中,该文件位于\KEIL\CS1\RTXTINY2\目录下。在CONF_TNY.A51中的配置选项允许:


l        指定滴答中断寄存器组。


l        指定滴答间隔(以8051机器周期为单位)。


l        指定在滴答中断中执行的代理。


l        指定循环超时。


l        允许或禁止循环任务切换。


l        指定应用程序占用长时间的中断。


l        指定是否使用code banking


l        定义RTX51 Tiny的栈项。


l        指定最小的栈空间需求。


l        指定栈错误发生时要执行的代码。


l        定义栈错误发生时要执行的代码。


l        定义空闲任务操作。


CONF_TNY.A51的默认配置包含在RTX51 Tiny库中。但是,为了保证配置的有效和正确,须得将CONF_TNY.A51文件拷贝到工程目录下并将其加入列工程中。


通过改变CONF_TNY.A51中的设置来定制RTX51 Tiny的配置。


附注:


l        如果在工程中没有包含配置文件(CONF_TNY.A51),库中的默认配置


将自动加载,后续的改变将存储在库中,这样可能会对以后的应用起到不良影响。


1、硬件定时器


下面的常数指定RTX51 Tiny的硬件定时器如何配置。


l        INT_REGBANK指定用于定时器中断的寄存器组,默认为1寄存


器组1


l        INT_CLOCK指定定时器产生中断前的指令周期数。该值用于计算定时器的重装值65536_INT_CLOCK。默认该值为10000


l        HW_TIMER_CODE是一个宏,它指出在RTX51 Tiny定时器中断结尾处要执行的代码。该宏默认是中断返回,如:


HW_TIMER_CODE MACRO


RETI


ENDM


2、循环


默认情况下,循环任务切换是使能的。下面的常数允许你配置循环任


务切换的时间或完全禁止循环切换。


l        TIMESHARING指定每个任务在循环任务切换前运行的滴答数。设为0时禁止循环任务切换。默认值为5个滴答数。


3、长中断


一般情况下,中断服务程序设计为快速执行的程序,在某些情况下,中断


服务程序可能执行较长的时间。如果一个高优先级的中断服务程序执行的时间比RTX51 Tiny滴答的时间间隔长,RTX51 Tiny定时器中断可能被中断并可能重入(被后继的RTX51 定时器中断)。


  如果要使用执行时间较长的高优先级中断,应该考虑减少ISR中执行的作


业的数量,改变RTX51 定时器的滴答率使其低一些,或者使用下面的配置选项。


l        LONG_USR_ISR指示器是否有执行时间长于滴答时间间隔的中断(滴答中断除外)。当该选项设为1RTX51 Tiny就会包括保护再入滴答中断的代码。该值默认为0,即认为中断是快速的。


4、Code Banking


以下配置选项允许你指定RTX51 Tiny应用是否使用code banking


CODE_BANKING指定是否使用code banking。使用code banking时该选项必须设为1,未使用code banking时,该选项须设为0,默认的值为0


附注


l        L51_BANK.A51 2.12及其以上的需要RTX51 Tiny程序使用code banking


5、


一些选项用于栈配置。下面的常数定义用于栈区域的内部RAM的大小和


栈的最小自由空间。一个宏允许指定当没有足够的自由栈时执行的代码。


l        RAM TOP指定片上栈顶部的地址。除所有位于栈之上的IDATA变量,否则不应修改该值。该值默认为OXFF


l        FREE_STACK指定栈允许的最小字节数。切换任务时,如果RTX51 Tiny检测到低于该值时,STACK_ERROR宏将被执行。设为0禁止栈检查,默认设置是20字节。


l        STACK_ERROR是一个指定发生栈错误(少于FREE_STACK字节数)时要执行的指令的宏。该宏默认是禁止中断并进入无限循环:


   STACK_ERROR  MACRO


   CLR   EA


SJMP


ENDM


6、空闲任务


当没有任务准备运行时,RTX51 Tiny执行一个空闲任务。空闲任务只是


一个循环,不做任何事——只是等待滴答中断切换到一个就绪的任务。下列常数允许配置空闲任务。


l        CPU_IDLE宏指定空闲任务中执行的代码。默认的指令是置位PCON寄存器的空闲模式位(大多数8051设备适用)。这将停止执行程序,降低功耗,直到有中断产生:


CPU_IDLE MACRO


ORL  PCON,﹟1


ENDM


l        CPU_IDLE MACRO指定在空闲任务中是否执行CPU_IDLE宏。


    默认为0CPU_IDLE宏不包括在空闲任务中。


二、库文件


RTX51 Tiny包括两个库文件:


l        RTX51TNY.LIB用于无代码分组(non_banking)RTX51 Tiny程序。


l        RTX51BT.LIB用于代码分组code_ bankingRTX51 Tiny程序。


\KEIL\C51\RTXTINYZ\SOURCECODE\下的RTXTINZ.PRJ工程用来建立这两个库。


附注:


l        应用时并不需要显式的包含一个RTX51 Tiny库。当使用μVision集成环境或命令行连接器时会自动执行。


l        建立RTX51 Tiny库时,默认配置文件CONF_TNY.A51包括在库中。如果在工程中未显示包含配置文件CONF_TNY.A51,将从库中包含一个默认的,后续对配置文件的修改将存储到库中,这可能对你的应用产生负面影响。


三、优化


下面的事情是为了优化RTX51 Tiny程序应该做的。


l        如果可能,禁止循环任务切换。循环切换需要13个字节的栈空间存储任务环境和所有的寄存器。当任务切换通过调用RTX51 Tiny库函数(像os_waitos_switch_task)触发时,不需要这些空间。


l        os_wait替代依靠循环超时切换任务。这将是提高系统反应时间和任务响应时间。


l        避免将滴答中断率设置的太快。

为了最小化存储器需求,从0开始对任务编号。

文章评论0条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /2 下一条