工具/软件:TI-RTOS
早上好、
我的任务是评估从本地操作系统迁移到 RTOS 实施的成本。 与本机(while 循环)实现相比,是否有方法计算调度程序的处理“占用空间”? 在我看来、根据系统的大小和函数/中断的性质、这可能会有很大的差异、但我对这种类型的开发(以及一般的开发)不熟悉、可能会忽略一些简单的东西。 我使用的是 CCS 版本7.4,并使用 TMS320F28379D controlCARD R1.3,如果您能提供任何帮助,我们将不胜感激。
谢谢、
Eric
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI-RTOS
早上好、
我的任务是评估从本地操作系统迁移到 RTOS 实施的成本。 与本机(while 循环)实现相比,是否有方法计算调度程序的处理“占用空间”? 在我看来、根据系统的大小和函数/中断的性质、这可能会有很大的差异、但我对这种类型的开发(以及一般的开发)不熟悉、可能会忽略一些简单的东西。 我使用的是 CCS 版本7.4,并使用 TMS320F28379D controlCARD R1.3,如果您能提供任何帮助,我们将不胜感激。
谢谢、
Eric
尊敬的 Eric:
这是一个很难回答的问题、因为它实际上取决于您对 RTOS 功能的期望。 我为 F28379D controlCARD 构建了一个"标准"SYS/BIOS 示例(注:SYS/BIOS 是 TI-RTOS 中的内核)。 整个应用的闪存大小(包括.econst、.text、.cinit 等)为~16K。 该示例非常简单:1个任务在 Semaphore_pend 上阻止、1个计时器布置信标。
不过、让我们更仔细地看看内核中包含的内容。
-硬件中断支持(Hwi)
软件中断支持(一个 Swi 与一个 Hwi 基本一样、但不像高优先级和软件启动的那样。 它使用系统堆栈、如 Hwi 模块)。
-任务处理支持(以及信标、门(如互斥量)、队列(链接列表)等相关项目)
-可变大小的堆实现(类似于 malloc 的实现)
-用于配置一个计时器并使用它在内核中驱动计时的代码(例如 Task_sleep)。 应用程序可以插入定期调用的函数或一次性调用的函数(但必须处于计时器周期的间隔...这是可配置的、但我们默认为1ms)。
-内核将 TI RTS 插入一个锁以管理 RTS 函数中的线程安全
-"系统"类型支持:system_printf (leaner 和更灵活的 printf)和 System_exit 等其他内容
-引导代码:设置 CPU 和时钟速率
-各种挂钩:允许应用程序在多个位置插入自己的回调(例如重置挂钩、主函数前面的挂钩、错误挂钩、异常挂钩等)
-错误管理代码
-在内核中启用了断言检查: 在开发过程中、最好保持这种状态来捕获一些愚蠢的事情、例如传递一个无效参数(例如 Task_setPriority (taskHandle、453)...453不是有效的优先级)、但一旦您接近发布产品、就可以关闭以节省空间。
内核大小可以增大(例如添加调试功能、FatFS 或邮箱)或减小(例如、没有堆或提供内核的节拍、而不是内核占用计时器)。 请注意、内核代码占用量是固定的成本。 如果你添加更多任务、堆等。。 占用空间不会增加。
有关 RTOS 的另一个常见问题是中断延迟。 SYS/BIOS 会增加一些延迟(请参阅 SYS/BIOS 版本说明以查看基准测试)。 但是、内核也允许不受管理的中断。 对于这些应用、内核会增加零延迟、并且永远不会干扰其执行(对于许多 C28x 应用很重要)。 需要注意的是、未管理的中断无法调用到内核中。 但是、它可以发布由内核管理的另一个中断。
希望我能从较高层次回答您的问题。 这是一个很好的页面、可获得一些与 SYS/BIOS 相关的 C28特定详细信息: processors.wiki.ti.com/.../BIOS_for_the_28x
Todd
P.S. 我建议查看 SYS/BIOS 产品、而不是 TI-RTOS 产品。 我们不提供用于 C28器件的高级驱动程序、因此用于 C2000的 TI-RTOS 实际上只是用于 F28379D 用户的内核... SYS/BIOS 产品中针对该器件的示例更好。 下面是另一个页面、它稍微介绍了这一点:
processors.wiki.ti.com/.../TI-RTOS