单片机学习小组
直播中

雅博电子科技

12年用户 548经验值
擅长:2223
私信 关注

有哪些措施可以去优化RTX51 Tiny程序呢

怎样去配置RTX51 tiny的硬件定时器呢?
怎样去配置RTX51 Tiny的库文件呢?

回帖(1)

李雨充

2022-1-26 09:42:49
配置RTX51 Tiny
(一) 硬件定时器
INT_REGBANK指定RTX51 Tiny Timer中断使用的寄存器组。 默认设置为1(对于寄存器组1)。
INT_CLOCK指定定时器产生中断之前的周期数。 该数字可以是1000-65535的值。 小数字会产生更快的中断。 该数字用于计算定时器的重载值(65536-INT_CLOCK)。 默认设置为10000
HW_TIMER_CODE是一个宏,指示代码在RTX51 Tiny Timer Tick Interrupt结束时执行。
此宏的默认设置是从中断(RETI)返回。
如下:
HW_TIMER_CODE MACRO ; Empty Macro by defaultRETIENDM (二)轮转(Round-Robin)
默认情况下启用循环任务切换。 以下EQUate允许您配置Round-Robin任务切换时间或完全禁用Round-Robin。
TIMESHARING指定每个任务在循环任务切换之前运行的RTX51 Tiny计时器滴答的数量。
值为0将禁用Round-Robin任务切换。 默认设置为5个计时器滴答。
(三)长中断
通常,中断服务例程(ISR)旨在快速执行。 在某些情况下,您的ISR可能会在很长一段时间内执行。 如果高优先级ISR的执行时间超过RTX51定时器滴答间隔,则RTX51定时器中断可能会被中断(通过ISR)并可能被重新进入(通过后续的RTX51定时器中断)。
如果使用长时间执行的高优先级中断,则应考虑减少ISR中执行的工作量,将RTX51 Timer Tick速率更改为较慢的速率,或使用以下配置选项。
LONG_USR_INTR指定应用程序是否具有执行时间超过计时器滴答间隔的中断(RTX51 Tiny Timer Tick Interrupt除外)。 当此配置选项设置为1时,RTX51 Tiny包含用于保护RTX51 Tiny Timer Tick Interrupt免于重入的代码。 快速中断的默认设置为0
(四)代码块
CODE_BANKING指定应用程序是否使用代组。
如果使用CODE_BANKING,则此选项必须设置为值1;
如果不使用CODE_BANKING,则必须将值设置为0。 没有代码存储区的默认设置为0
注:
L51_BANK.A51使用代码存储的RTX51 Tiny程序需要2.12或更高版本。
(五)堆
有几个选项可用于堆栈配置。
以下EQUates定义用于堆栈区域的内部RAM的大小以及堆栈上的最小可用空间。
宏允许您指定在CPU堆栈上没有足够的可用堆栈时执行的代码。
RAMTOP指定片上堆栈的顶部地址。
除非 IDATA 变量位于堆栈上方,否则不应更改此值。 默认设置为0xFF
FREE_STACK 指定堆栈上可用的最小字节数。
切换到任务时,如果 RTX51 Tiny 检测到的值小于指定的值,则执行STACK_ERROR 宏。
值为0将禁用堆栈检查。 默认设置为20个字节。
STACK_ERROR是一个宏,它指定在发生堆栈错误时执行的指令(少于FREE_STACK字节可用)。 默认宏禁用中断并进入无限循环。
(六)空闲任务
当没有任何任务准备好运行时,RTX51 Tiny执行空闲任务。 空闲任务是一个简单的循环,什么都不做 - 它只等待RTX51 Tiny Timer Tick Interrupt切换到准备就绪的任务。
以下EQUates允许您配置RTX51 Tiny Idle Task的不同方面。
CPU_IDLE是一个宏,指定要在空闲任务中执行的代码。 默认指令设置PCON寄存器中的空闲模式位(在大多数8051器件上可用)。 这通过暂停程序执行直到发生中断来节省功耗。 例如:
CPU_IDLE MACROORL PCON,#1; 将8051 CPU设置为IDLEENDM CPU_IDLE_CODE指定是否在空闲任务中执行CPU_IDLE宏。 默认设置为0
因此CPU_IDLE宏不包含在空闲任务中。
(七)库文件
RTX51 Tiny包含两个库文件:
RTX51TNY.LIB用于NON_BANKING的RTX51 Tiny程序。
RTX51BT.LIB用于CODE_BANKING的RTX51 Tiny程序。
在 KEIL  C51  RTXTINY2  SOURCECODE 文件夹中找到的RTXTINY2.PRJ项目用于构建这两个库。
注意
您不应该在应用程序中明确包含任何一个RTX51 Tiny库。
当您使用μVisionIDE或使用命令行链接器时,这会自动完成。
构建RTX51 Tiny库时,库中包含默认配置文件(CONF_TNY.A51)。 如果未在项目中明确包含配置文件(CONF_TNY.A51),则将包含库中的默认文件。 存储在库中的配置文件的后续更改可能会对应用程序的操作产生负面影响。
(八)优化
可以采取以下措施来优化RTX51 Tiny程序。
如果可能,禁用Round-Robin任务切换。
Round-Robin需要13个字节的堆栈空间来存储任务上下文和所有寄存器。
如果通过调用RTX51 Tiny库例程(如os_waitos_switch_task)触发任务切换,则不需要此空间。
使用os_wait例程而不是依赖Round-Robin超时来切换任务。 这改善了系统响应时间和任务响应时间。
避免过快地设置定时器节拍中断率。 将计时器滴答的超时设置为较小的值会增加每秒的滴答数,但会减少可用于任务的时间量(因为计时器滴答中断需要100-200个循环才能执行)。
将超时值设置得足够高,以最小化定时器节拍中断处理程序的影响。
要最小化RTX51 Tiny的内存要求,请从0开始按顺序编号您的任务。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分