La Tini Board 390 - Plateforme matérielle pour Java
Depuis longtemps, le matériel et le réseau formaient deux entités bien distinctes.
Les processeurs embarqués, présents dans de nombreux équipements électroménager, permettaient une communication locale à l’appareil, le fait de communiquer avec des réseaux au langage plus évolué demandant la mise en place de pont trop gros ou trop cher.
En réponse à ce problème, il a été créé TINI (Tiny InterNet Interface), une puce interprétant du JAVA et parlant TCP-IP.
Cette puce peut être présente dans un HUB ou encore peut former un module de communication réseaux à l’intérieur d’une imprimante.
Etant donné la diversité des modèles vendus, j’ai décidé de ne présenter que le modèle qui sera utilisé dans la troisième partie de ce document.
-
Tini Board (DSTINI1-1MG)
-
Tini Socket (DSTINIS-006)
Afin de compléter cette description de la Tini, voici les spécifications en Anglais.

Architecture logiciel
Aspect logiciel
Jusqu'à présent, rien ne destine physiquement la carte Tini à être dédier au langage JAVA. D’ailleurs certains professionnels ont écrit des "run-time" permettant l’interprétation du langage C/ASM (http://www.turbobit.com/tini.htm).
Cependant, le constructeur Dallas Semiconducteur fournit la run-time permettant l’interprétation des API embarqué JAVA.
La partie logiciel de la carte TINI peut être divisée en plusieurs parties :
-
La Run-Time qui est intégrée dans la flash ROM permet le lien entre la couche matériel et logiciel comme le RTOS (OS temps réel), la pile TCP/IP, la Machine Virtuel JAVA ainsi que ces API.
- Les couches hautes des protocoles réseaux comme le FTP, TELNET, DHCP, DNS
- Les outils de développement (JDK)
- Programmes
Tini OS
De petite taille, ce mini système d’exploitation permet l’organisation des fichiers systèmes, la gestion de la mémoire ainsi qu’un gestionnaire d’Entrées/Sorties.
Ce système d’exploitation est plus connu sous le nom de ‘Boot Loader’, des commandes de base y sont également présentes.
La répartition de ces éléments se fait dans les différents segments (‘Bank’) de la mémoire :
- Bank 0 pour le BootLoader
- Bank 1 à 6 pour les différentes API et les commandes slush
- Bank 7 pour les applications devant être lancées
En dépit du fait que cet OS soit embarqué, il a été conçu pour commuter de grosses tâches, il permet également de commuter différentes instances d’une JVM permettant l’interprétation du code Java, cette base permet donc l’exécution de programmes multiples.
Cette gestion de tâches commutées se réalise à l’aide d’un planificateur de tâche (Task scheduler) qui est un simple "tourniquet de Robin" fournissant des tranches d’exécution de 4 millisecondes.
A l’exception du "Garbage Collector", toutes les tâches gérées par le TINI OS sont des applications Java.
Cet OS peut gérer plusieurs processus d’un noyau permettant ainsi un système multitâches. C’est cette gestion qui entraîne des temps d’exécution serré.
Java VM
La machine virtuelle incluse dans la TINI est conforme à celle des spécifications de la plateform embarquée Java de SUN.
Il s’agit de la version 1.1 dont seuls les packages java.net, java.io, java.util sont stockés dans la mémoire flash. Le package javax.comm a été également ajoutée afin de donner la possibilité d’utiliser les ports entrées/sorties de la carte.
Il reste toujours la possibilité d’inclure d’autres packages en RAM. Le constructeur a d'ailleurs inclus ses propres package (com.dalsemi) permettant l’accès au périphérique comme le bus 1 Wire ou I²C et également les commandes de gestions internes dites "slush".
Tini Shell
La Tini contient des petites commandes shell dites "slush" permettant également un accès par postes distants. Cette application Java (package com.dalsemi) démarre lors de la dernière phase d’initialisation du système. Durant l’initialisation, une commande crée des "threads" ayant comme rôle de maintenir les sockets server permettant l’écoute des connections clientes FTP ou TELNET.
Quand la Tini est utilisée sans la couche réseaux ou qu’il n’y a aucune information sur la configuration, l’accès aux commandes est possible grâce à une console disponible sur le port série (TTY login) accessible via le JavaKit fournit avec le package constructeur.
Les commandes slush utilisent peu de ressources CPU jusqu'à ce qu’un client se connecte par FTP ou TELNET.
Une fois une session cliente authentifiée, le poste distant peut utiliser des commandes de type UNIX pour manipuler des fichiers system, lire ou modifier la configuration de la carte.
Ces commandes permettent également de lancer ou stopper les applications Java.
Bien entendu, des commandes slush peuvent être ajoutées ou supprimées par invocation de méthode disponible dans la base shell Java.
Garbage collector
La tâche d’un collecteur d’objet inutilisé peut arrêter l’application en cours tant que celui-ci balaye tous les objets et libère l’espace mémoire inutilisé. Il peut être la cause de ralentissement des délais d’exécution des applications.
Pour contrer à ce problème, le Garbage Collector de la TINI est incrémental et compact.
Il tourne dans une tâche séparée de l’OS et en dehors des circonstances normales ; son exécution ne prend que quelques millisecondes.
Il y a deux exceptions à cette règle : la première est un débordement de la mémoire (out of memory). En effet le collecteur tournera tant qu’il n’y aura pas assez d’espace libre pour répondre à la création d’un nouvel objet.
La deuxième raison intervient si toutes les autres tâches sont suspendues. Dans l’attente des E/S, le collecteur tournera tant que la pile d’objet n’aura pas été balayée ou qu’une tâche soit prête à reprendre.
Quand Tini rencontre Jini
Dallas Semiconducteur et les ingénieurs de Sun ont développé une démonstration de leurs technologies respectives qui a été présentée en Janvier 2000.
Depuis que la Tini est basée sur les API 1.1, la démonstration utilisant la technologie Jini demande l’utilisation d’un proxy.
L’un des buts de la Tini est l’utilisation complète de la technologie Jini sans proxy. Pour ce faire, le grand objectif actuel (Janvier 2001) est le support des API de Java 2 incluant les packages RMI (Remote Méthode Invocation) qui font terriblement défaut et permettant du coup l’intégration des technologies Jini.








