admin 管理员组

文章数量: 887021

TI

文章目录

  • 什么是SYS/BIOS
  • SYS/BIOS和TI-RTOS有什么关系
  • SYS/BIOS和XDCtools有什么关系
    • SYS/BIOS作为包的集合
    • 使用XDCtools配置SYS/BIOS
    • XDCtools模块和运行时的API
  • SYS/BIOS包和API
    • SYS/BIOS Object Creation
    • POSIX Thread Support

什么是SYS/BIOS

SYS/BIOS是一个可伸缩的实时内核。它是为需要实时调度和同步或实时检测的应用程序而设计的。SYS/BIOS提供了抢占式多线程、硬件抽象、实时分析和配置工具。SYS/BIOS有助于最小化目标上的内存和CPU的需求。

SYS/BIOS和TI-RTOS有什么关系

TI-RTOS是针对TI设备的可扩展、一站式嵌入式工具生态系统。它从实时多任务内核(SYS/BIOS)扩展到一个完整的RTOS解决方案,包括附加的中间组件和设备驱动程序。通过提供预先测试和预集成的基本系统软件组件,TI-RTOS可以使开发者能够更加专注于应用程序的开发。

SYS/BIOS是TI-RTOS产品的"TI-RTOS内核"组件,这个两个名字都指向的是相同的组件。

SYS/BIOS和XDCtools有什么关系

XDCtools提供TI-RTOS及其组件(包括SYS/BIOS)所需的底层核心工具。要使用SYS/BIOS,必须同时安装XDCtools和SYS/BIOS

XDCtools对SYS/BIOS用户很重要,因为:

  • XDCtools提供用户用来配置应用程序使用的SYS/BIOS和XDCtools模块的技术。
  • XDCtools提供用于构建配置文件的工具。此构建步骤生成源代码文件,然后编译这些文件并与应用程序代码链接。
  • XDCtools提供了许多模块和运行时的API,SYS/BIOS利用这些模块和API进行内存分配、日志记录、系统控制等。

XDCtools有时被称为“RTSC”(Real Time Software Components),这是Eclipse生态系统中的开源项目名称,它提供可重用的软件组件(称为"包")以用于嵌入式系统。

SYS/BIOS作为包的集合

SYS/BIOS和XDCtools是一组"包",每个包都提供了产品功能的一个子集。XDCtools使用包的命名约定来帮助可读性,并确保从不同来源传递的包不会发生命名空间冲突,这会给系统集成商带来问题。XDCtools的命令规则和Java很相似。

SYS/BIOS包符合这个约定,名称由一个分层命名模式组成,每个级别用句点(".")分隔,例如“ti.sysbios.knl”。这样命名的好处就是反映了安装SYS.BIOS的文件系统中包的物理布局,“ti.sysbios.knl”这个包就可以再下面的文件路径中找到。

E:\mmWaveSDK\bios_6_73_01_01\packages\ti\sysbios\knl

下面的这张图说明了创建应用程序的工具体系结构

XDCtools提供的xdc.runtime包包含应用程序可以与SYS/BIOS中的模块和api一起使用的模块和api。

使用XDCtools配置SYS/BIOS

配置是使用SYS/BIOS一个必要的部分,用于以下目的:

  • 指定了应用程序将使用的模块和包
  • 它可以静态地为应用程序使用的模块创建对象
  • 它验证显示和隐式使用的模块集,以确保它们是兼容的
  • 它静态地为系统、模块和对象设置参数,以更改其运行时行为

应用程序地配置存储在一个或多个扩展名为"*.cfg"的脚本文件中。XDCtools对这些文件进行解析,以生成相应的C源代码、C头文件和链接器命令文件,然后将这些文件编译并链接到最终的应用程序中。个人感觉和makefile文件作用差不多

下面的图描述了典型的SYS/BIOS应用程序的构建流程

配置文件(*.cfg)使用类似JavaScript的语法来设置属性和调用对象提供的方法。可以使用下列的几种方式修改配置文件:

1. 使用CSS中的虚拟配置工具(XGCONF)进行配置
2. 在CCS的XGCONF编辑器的cfg Script选项卡中编辑配置文本
3. 直接使用text编辑器编辑*.cfg文件

XDCtools模块和运行时的API

XDCtools包含了几个模块,这些这模块在运行的时候提供SYS/BIOS应用程序成功运行所需的基本系统服务。大多数模块位于XDCtools中的xdc.runtime包中,在默认情况下,在build期间所有的SYS/BIOS应用程序都会自动被添加到xdc.runtime包中

XDCtools提供的在C代码和配置文件中使用的功能可以大致分为四类,如下表:

CategoryModulesDescription
System ServicesSystem基本的低级"系统"服务
Startup允许在main()之前运行由不同模块定义的函数
Defaults为未显示设置值的模块设置时间日志记录、断言检查和内存使用选项
Main设置应用于应用程序代码的事件日志记录和断言检查选项
Program设置运行时内存大小、程序生成选项以及内存段和段的选项。这个模块用作配置对象模型的"根"。这个模块在xdc.cfg的包中
Memory ManagementMemory静态或动态创建/释放堆内存
DiagnosticsLog and Loggers允许记录事件,然后将这些事件传递给日志处理程序
Error允许抛出、检查和处理由任何模块定义的错误
Diags允许在每个模块的配置或运行时启用/禁用诊断
Timestamp and Providers提供时间戳API,用于将调用转发到特定于平台的时间戳器(或由CSS提供的时间戳器)
Text提供字符串管理服务以最小化目标上所需的字符串数据
SynchronizationGate防止对关键数据结构的并发访问
Sync使用wait()和signal()函数在线程之间提供基本同步

SYS/BIOS包和API

SYS/BIOS提供了下列的包:

PackageDescription
ti.sysbios.family.*包含特定于目标/设备的功能
ti.sysbios.gates包含IGateProvider接口的多个实现,可在各种情况下使用。其中包括GateHwi、GateSwi、GateTask、GateMutex和GateMutexPri
ti.sysbios.hal包含Hwi,Timer,Seconds和Cache模块
ti.sysbios.heaps提供XDCtools IHeap接口的几种实现。其中包括HeapBuf(固定大小的缓冲区)、HeapMem(可变大小的缓冲区)和HeapMultiBuf(多个固定大小的缓冲区)
ti.sysbios.interfaces包含要实现的模块的接口,例如,基于设备或平台
ti.sysbios.knl包含SYS/BIOS内核的模块,包括Swi,Task,Idle和Clock。还包含与进程通信相关的模块:Event、Mailbox和Semaphore
ti.sysbios.utils包含加载模块,该模块提供全局CPU负载和线程特定负载

SYS/BIOS Object Creation

一些模块支持实例对象的创建。这些模块包括Hwi、Task、Swi、Semaphore、Mailbox、Queue、Event、Clock、Timer以及各种的类型的Gate和Heap模块。例如,任务模块允许创建多个任务对象。每个任务对象对应于具有自己的function,priority和timing。

POSIX Thread Support

SYS/BIOS还提供POSIX线程(pthread)api的子集。这些包括pthread线程、互斥锁、读写锁、屏蔽和田间变量。

参考文献:

  1. 《TI-RTOS Kernel (SYS/BIOS) User’s Guide》

本文标签: TI