# TI-RTOS

TI-RTOS és un sistema operatiu en temps real desenvolupat per Texas Instruments (TI) que inclou un SDK que incorpora, a part d'un kernel anomenat "TI-RTOS Kernel" (antigament conegut com a "SYS/BIOS", i que evolucionà de "DSP/BIOS") que gestiona totes les funcionalitats del RTOS, cert programari intermediari per afegir diferents funcionalitats, com protocols de connectivitat per TCP/IP i USB, un sistema de fitxers de tipus FAT, i controladors de dispositius per a certs components de TI, de manera ràpida per al programador que desenvolupi en alguna de les seves plataformes de sistemes incrustats.

## Història

Inicialment el nucli de TI-RTOS va ésser concebut com un sistema operatiu en temps real per executar-se en un processador de senyals digitals per l'empresa Spectron Microsystems i es va anomenar SPOX. També van desenvolupar eines per treballar-hi. Posteriorment Texas Instruments va adquirir Spectron Microsystems i va unificar SPOX i les eines en un sol producte que va anomenar DSP/BIOS. Més tard es va estendre la seva compatibilitat a altres tipus de microcontroladors i es va canviar el seu nom a SYS/BIOS per acabar formant part el 2014 de l'ecosistema TI-RTOS com a TI-RTOS Kernel.

## Components

TI-RTOS incorpora els següents components per agilitzar el desenvolupament d'aplicacions per a sistemes encastats ja siguin basats en DSP com en micro controladors de Texas Instruments.

### Nucli TI-RTOS

El seu nom es SYS/BIOS i es pot utilitzar de la mateixa manera que el nom TI-RTOS Kernel, són equivalents. Es tracta d'un nucli de temps real escalable que està dissenyat per aplicacions que requereixen planificació i sincronització a temps real o també per instrumentació en temps real, i no té cap cost inicial ni per ús. Per cumplir amb la restricció de temps real el rendiment de totes les crides de sistema és determinista.
La seva arquitectura és modular de manera que a l'executable final compilat tan sols s'inclouran els mòduls que seràn necessaris. A més, els objectes es poden crear de manera dinàmica o estàtica; si es defineixen de manera estàtica l'executable final ocuparà menys espai. Proveeix estructures per suportar comunicació i sincronització entre tasques com semàfors, mailboxes, esdeveniments i missatges de longitud variable. Suporta interrupcions i es poden desactivar si no es necessiten. Els diferents mòduls que proporcionen certs serveis de manera independent, aquests es poden configurar i cridar a través d'una API. Un exemple el podem trobar a l'hora d'utilitzar semàfors en TI-RTOS, hem d'utilitzar el mòdul ti.sysbios.knl.Semaphore i configurar-lo perquè quan s'iniciï el sistema generi certes instàncies de semàfors per a després poder utilitzar-los cridant a l'API per a poder modificar el seu estat i fins i tot crear-ne de nous, eliminar-los i aturar-los temporalment. Tots els mòduls que incorpora Ti-RTOS poden ser desactivats a l'hora de compilar el nucli per així optimitzar la mida que ocupa el programari.
El software de depuració e instrumentació és configurable i es pot retirar una vegada l'aplicació és en producció, permetent la millora de l'eficiència i minimitzar la memòria utilitzada. Tota la informació relativa a la instrumentació com són logs i traces es guarden al host per evitar la necessitat de més memòria al desenvolupar l'aplicació.
SYS/BIOS s'afegeix automàticament amb la instal·lació de la suite TI-RTOS, que es pot descarregar individualment o des de l'entorn de desenvolupament integrat Code Composer Studio v6.0, encara que també es pot descarregar individualment.

### Drivers i inicialització de components

S'incorporen certs controladors que poden ésser cridats a través d'una API per a facilitar l'ús de perifèrics suportats. Per poder definir quins controladors i componenets utilitzar en una aplicació es poden triar utilitzant la interfície gràfica dins CCStudio.
TI-RTOS incorpora drivers per a perifèrics de comunicació com per a Ethernet, WiFi, I²C, SPI, UART i USB. També hi ha per a poder utilitzar sistemes de fitxers i connectar dispositius per USB i targetes SD (a través d'SPI), fins i tot per a connectar càmeres per a obtenció d'imatges. Així com utilitats més bàsiques com poder controlar pins d'entrada/sortida (GPIO), per a controlar timers per implementar watchdogs o fins i tot per a controlar senyals modulades per amplada de polsos.

### Serveis de xarxa

TI-RTOS Networking (antigament conegut com a NDK o Network Developers Kit) és un component ajuda al desenvolupador per afegir capacitats de connexió en xarxa, ja que combina la pila de protocols tant de IPv4 com IPv6 i permet utilitzar directament protocols com TCP, UDP, ICMP, IGMP, IP, i ARP en aplicacions de mandra transparent a la implementació dels mateixos. També s'incorporen protiocols d'aplicació com HTTP, TELNET, TFTP, DNS, DHCP. Fins i tot accés a protocols de més baix nivell com Ethernet o ports série PPP o PPPoE.
Per a poder utilitzar aquest component es necesari utilitzar TI-RTOS Kernel i afegir-lo al Code Composer Studio i es pot utilitzar sense llicències addicionals.

### Comunicació interprocessador

TI-RTOS proporciona software per fer possible la comunicació en a un sistema amb múltiples cores, per mitjà d'APIs desenvolupades a l'efecte. Texas Instruments ha utilitzat diferents solucions a la comunicació entre cores. El primer producte va ser DSP Bridge que estaba destinat als dispositius OMAP de primera generació i que actualment no té noves versions ni manteniment. Posteriorment es va utilitzar DSP/BIOS Link destinat donar suport a altra generació de dispositius i que actualment també está sense manteniment ni noves versions. Syslink 2.x és un producte que actualment està en producció té suport pero els nous dissenys de sistemes encastats amb disposisitius TI es fan amb IPC 3.x que actualment té un desenvolupament actiu.

### Instrumentació

TI-RTOS proporciona un component d'instrumentació anomenat UIA (Unfied Instrumentation Architecture), que defineix APIs i la forma de transportar les dades per permetre al software encastat registrar les dades d'instrumentació per utilitzar-les per exemple al CSS, encara que es pot fer servir individualment. Aquest component s'integra conjuntament amb altre anomenat DVT que ofereix entre altres coses una interfície d'usuari per accedir al software d'instrumentació. Des del CCS es pot accedir a aquest components per mitjà de les seves eines RTOS Analyzer i la System Analyzer.
Les funcionalitats de System Analyzer són les següents:
* Graf d'execució. Mostra els fils que s'executen.
* Concurrència. Mostra quins nuclis executen codi i quan ho fan.
* Càrrega de la CPU. Mostra les dades de càrrega SYS / BIOS recopilades per a tots els nuclis del sistema.
* Càrrega de tasca. Mostra les dades de càrrega de la CPU mesurades en un subprocés de tasca SYS / BIOS.
* Printf Registres. Mostra els missatges enviats a través de crides a Log_printf.
* Perfilador de tasques. Mostra el percentatge de tasques de temps dedicades a cada estat d'execució.
* Duració. Calcula la durada total entre parells de punts d'execució.
* Perfil del context. Calcula la durada amb consciència de les interrupcions d'altres fils i funcions.
* Anàlisi de comptes. Fa el seguiment de valors a l'aplicació.

### Sistema de fitxers

El sistema de fitxers que s'utilitza és el FatFS, un sistema de fitxers genèric desenvolupat per ChaN com a projecte personal de codi lliure. És conforme amb ANSI C (C89), independent de la plataforma i destinat a sistemes encastats basats en microcontroladors.
Té les següents limitacions:
* Tipus de sistema de fitxers. FAT, FAT32 (rev0.0) i exFAT (rev1.0).
* Nombre de fitxers oberts. Il·limitat. (depèn de la memòria disponible)
* Nombre de volums. Fins a 10.
* Mida del volum. Fins a 2 TB a 512 bytes / sector.
* Mida del fitxer. Fins a 4 GB - 1 en volum FAT i pràcticament il·limitat sobre el volum exFAT.
* Mida del clúster. Fins a 128 sectors en volum FAT i fins a 16 MB en volum exFAT.
* Mida del sector. 512, 1024, 2048 i 4096 bytes.

## Llicència

La majoria dels components de TI-RTOS són publicats sota Llicència BSD, és a dir que qualsevol usuari pot recompilar el kernel utilitzant el codi font.

## Referències

* ↑ «Category:SYSBIOS - Texas Instruments Wiki». [Consulta: 28 juny 2019].
* ↑ «Category:DSPBIOS - Texas Instruments Wiki». Arxivat de l'original el 2019-06-28. [Consulta: 28 juny 2019].
* ↑ Nucli de TI-RTOS a la pàgina de TI
* ↑ IPC 3.x
* ↑ CCS (Code Composer Studio)
* ↑ FatFs - Generic FAT Filesystem Module

## Enllaços externs

* Pàgina oficial de TI-RTOS
* Guia d'usuari de TI-RTOS
* Pàgina sobre TI-RTOS a la wiki de Texas Instruments