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代码和配置文件中使用的功能可以大致分为四类,如下表:
Category | Modules | Description |
---|---|---|
System Services | System | 基本的低级"系统"服务 |
Startup | 允许在main()之前运行由不同模块定义的函数 | |
Defaults | 为未显示设置值的模块设置时间日志记录、断言检查和内存使用选项 | |
Main | 设置应用于应用程序代码的事件日志记录和断言检查选项 | |
Program | 设置运行时内存大小、程序生成选项以及内存段和段的选项。这个模块用作配置对象模型的"根"。这个模块在xdc.cfg的包中 | |
Memory Management | Memory | 静态或动态创建/释放堆内存 |
Diagnostics | Log and Loggers | 允许记录事件,然后将这些事件传递给日志处理程序 |
Error | 允许抛出、检查和处理由任何模块定义的错误 | |
Diags | 允许在每个模块的配置或运行时启用/禁用诊断 | |
Timestamp and Providers | 提供时间戳API,用于将调用转发到特定于平台的时间戳器(或由CSS提供的时间戳器) | |
Text | 提供字符串管理服务以最小化目标上所需的字符串数据 | |
Synchronization | Gate | 防止对关键数据结构的并发访问 |
Sync | 使用wait()和signal()函数在线程之间提供基本同步 |
SYS/BIOS包和API
SYS/BIOS提供了下列的包:
Package | Description |
---|---|
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线程、互斥锁、读写锁、屏蔽和田间变量。
参考文献:
- 《TI-RTOS Kernel (SYS/BIOS) User’s Guide》
本文标签: TI
版权声明:本文标题:TI 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1686717731h28803.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论