Module TINI - page d`accueil

publicité
Traitement de données
Présentation du module TINI
Présentation du module :
Le module Tini se décline en plusieurs versions, il est constitué d’une carte d’application et d’un module
processeur :
Les modules processeurs DS80C390 ou DS80C400
dont les caractéristiques principales sont :
Processeur DS80C400 (noyau 8051)
Trois ports séries
Un bus 1-WIRE
Un bus CAN 2.0 B
Une horloge temps réel
Une connexion au réseau 10/100 Base T
1MO de Flash et 1MO de NV RAM
(DS80C400) et 512 ou 1Mo de Flash et 1Mo
de RAM (DS80C390)
Les cartes supports DSTINI1 pour le module DS80C390 et DSTINIm400 pour le module DS80C400.
Le module TINI dispose d’un système d’exploitation TINI OS embarqué incluant entre autre une machine
virtuelle JAVA.
#njc Lycée « la Briquerie »
Présentation du module TINI
& page 1/10
Configuration
Le module peut soit être livré vierge de toutes données en mémoire soit encore il nécessite une mise jour. Le
module tini dispose pour cela d’un « bootloader » qui lui permet de télécharger en mémoire Flash son système
d’exploitation embarqué.
Pour le choix du système, on peut utiliser plusieurs versions régulièrement mises à jour. On peut pour cela
visiter le site du constructeur ou utiliser un système adapté à l’application (attention à la compatibilité des
applications existantes).
L’ensemble des modules logiciels est téléchargeable sur le site du constructeur Dallas.
Il existe deux familles de systèmes :
Les versions 1.0x qui prennent en charge l’ensemble du matériel aux travers de bibliothèques C ou de
classes JAVA fournies. Ces versions ne prennent pas en charge quelques fonctions avancées comme,
par exemple, IPV6. Ce sont les versions les plus utilisées.
Les versions 1.1x qui prennent en charge certaines fonctionnalités avancées. Ces versions ne prennent
plus en charge certains périphériques dont le soin de la gestion sera confié au programmeur.
Mise à jour ou installation du système (Version 1.0x).
Les 2 fichiers à transférer dans le module sont :
bin/tini.tbin : Fichier intégrant le système d’exploitation (Unix like) ainsi que la machine JAVA
virtuelle.
bin/slush.tbin : Fichier contenant l’interpréteur de commande.
Le chargement des fichiers est réalisé à l’aide du programme MicroControler Tool Kit (MTK). Le µC du
module dispose d’un BootLoader en ROM qu’il active lorsqu’un ordinateur est connecté au port Série 1 (port
série avec prise femelle).
On démarre la procédure en exécutant le programme MTK puis en configurant le type de cible (DSTINI) et le
port série auquel il est connecté.
Il est nécessaire alors de réaliser un RESET du module
Le module répond alors avec le message suivant :
#njc Lycée « la Briquerie »
Présentation du module TINI
& page 2/10
A présent on charge le fichier tini.tbin à partir du menu File -> Load Tbin
Le module répond par :
Il se peut que le module se déconnecte car on vient de mettre son système à jour. On se reconnecte et on charge
à présent le fichier de l’interpréteur de commandes slush.tbin de la même manière.
Il s’agit à présent de lancer le système d’exploitation en entrant ’E’ suivi d’un retour chariot dans la fenêtre de
commande.
Frappez une touche au clavier pour obtenir le login :
Welcome to slush. (Version 1.02)
TINI login: root
TINI password:
TINI />
Le mot de passe par défaut est tini
La commande help permet de connaître les différentes commandes disponibles. La commande ipconfig nous
permet de configurer les paramètres réseaux.
#njc Lycée « la Briquerie »
Présentation du module TINI
& page 3/10
Paramétrage de l’adresse IP.
Nous allons définir une adresse IP pour notre module puis vérifier le résultat. Un « ping » nous assure de la
connectivité.
Nous disposons maintenant, en plus de la connexion via le port série, d’une liaison avec le module grâce à
telnet et ftp car il dispose des serveurs correspondants. Le chargement des programmes et des fichiers de
données se fera par l’intermédiaire du serveur ftp et l’exécution des commandes par le serveur telnet.
L’environnent de programmation.
Les programmes, que l’on souhaite réaliser, peuvent se développer en langage C ou en Java car le module Tini
dispose d’une machine Java embarquée.
#njc Lycée « la Briquerie »
Présentation du module TINI
& page 4/10
Nous utiliserons la programmation en langage Java car les outils pour le C sont, à l’heure d’aujourd’hui, peut
performants ou trop chères.
La machine Java du module sait exécuter des programmes Java 2 classiques. C’est pourquoi le développement
exige l’installation d’un Java SDK sur le PC de développement (ou d’un autre outils comme JavaBuilder de
Borland ou Eclipse).
Pour le Java SDK, on télécharge ce kit depuis le site de SUN. Toutes les versions récentes sont compatibles
(pour les versions postérieures à la 1.3.x comme pour version 1.4.2 et 1.5 on devra préciser une option lors de la
compilation).
http://java.sun.com/j2se/1.4.2/download.html ou http://java.sun.com/j2se/1.5.0/download.jsp
Après avoir installé l’environnement java, on dispose d’un répertoire bin qui contient les exécutables
nécessaires au développement :
Pour pouvoir lancer directement les programmes, on peut :
Compléter la variable d’environnement PATH pour obtenir un accès aux exécutables du JSDK.
Créer des fichiers batchs contenant les commandes nécessaires (avec les chemins des exécutables)
Proposition de définition d’un environnement de travail.
Afin d’optimiser le développement, on peut, comme le montre cet exemple, organiser l’espace de travail :
Sur le disque D on créé un répertoire pour abriter nos projets et on y place une copie du kit de
développement du module Tini. Ce dernier contient, dans son répertoire bin, entre autre, les classes *.jar
qui vont nous servir lors du développement (voir suite).
Pour chacun de nos projets nous allons créer un répertoire de travail qui contiendra :
Un dossier src pour le programme source : *.java
Un dossier bin pour le fichier *.class exécutable par la machine java et éventuellement le fichier *.tini
version compilée du fichier *.class pour le module tini.
Un fichier appelé, par exemple, prep_tini.bat qui va exécuter les tâches requises sur le fichier source.
On pourrait, comme c’est indiqué par la suite exécuter ces commandes manuellement.
Le dossier du projet Hello et le fichier de préparation correspondant qui tient compte des chemins des
commandes et fichiers à utiliser :
#njc Lycée « la Briquerie »
Présentation du module TINI
& page 5/10
Création d’un premier programme
Il suffit d’un éditeur de texte quelconque pour saisir le code source java.
Soit le fichier source Hello.java
public class Hello
{
public static void main(String[] args)
{
System.out.println( Bonjour tout le monde!!! );
}
}
La première étape consiste à en faire un fichier .class, en le compilant avec javac du j2sdk. La commande
javac Hello.java crée le fichier Hello.class
On remarque dans la ligne de commnde de la page précédente (fichier prep_tini.bat) des options :
-bootclasspath %TINI_DIR%\bin\tiniclasses.jar pour l’accès aux classes de tini (non utile pour cet
exemple car on utilise aucune classe spécifique du module tini).
-target 1.1 pour préciser que l’on utilise dans le cas du jdk de version postérieure à la 1.3x
-d bin pour préciser la destination du fichier *.class obtenu après compilation.
Ce fichier n’est pas exécutable par la machine virtuelle du module TINI (Machine virtuelle spécifique car
fonctionnant sur un processeur 8 bits).
Il nous faut convertir ce fichier avec TINIConvertor.
TINIConvertor
TINIConvertor est un outil en ligne de commande fourni par Dallas semi-conducteur et qui converti les fichiers
de classe Java en applications pour TINI.
C'est un utilitaire Java, fourni dans le kit de développement logiciel pour TINI. Il se trouve dans le fichier
tini.jar situé dans le dossier bin du TINI SDK. TINIConvertor est employé pour produire des fichiers ‘.tini’, qui
peuvent alors être chargés (typiquement par ftp) dans le système de fichiers du module TINI et être exécutés
avec la commande ‘java’ de ‘slush’.
Pourquoi Avons-nous besoin de TINIConvertor ?
Les fichiers classes java contiennent le ‘byte code’ exécutable par n’importe qu’elle machine Java (=>
portabilité). La machine Java traditionnelle recherche les classes d’objet et les méthodes par une technique de
résolution de noms. Cette technique est trop lourde à mettre en oeuvre sur un processeur 8 bits. Le convertisseur
réalise donc une conversion de ces noms pour créer une table d’index. La machine virtuelle Java (spécifique)
installée dans le module TINI utilisera cette table d’index.
Pour plus de détails sur l’utilisation de TINIConvertor, veuillez vous référer au document TINI_GUIDE.pdf .
La conversion est lancée par la commande :
java classpath tini.jar TINIConvertor -f Hello.class o Hello.tini d tini.db
#njc Lycée « la Briquerie »
Présentation du module TINI
& page 6/10
TINIconvertor est inclus dans la classe tini.jar du SDK de TINI et elle utilise le fichier tini.db qui contient les
outils de conversion.
Une ligne de commande incluant les chemins des fichiers et outils est incluse dans notre fichier prep_tini.bat
afin qu’il produise, à partir du fichier *.class le fichier *.tini à télécharger dans le module tini.
Téléchargement et exécution du programme.
Le code du fichier *.tini est prêt à être exécuté ; il faut le télécharger dans le module au moyen d’un client FTP
comme, par exemple IE, puisque le module comporte un serveur FTP. Attention, le transfert requière le mode
authentifié (root, tini).
On peut ensuite se connecter avec telnet pour lancer le programme par la ligne de commande :
java Hello.tini &
Où le symbole & permet de lancer le programme en mode système (en mode application sans &).
Utilisation des entrées/sorties du module TINI.
On se propose maintenant de créer un nouveau programme permettant de commander une led connectée à une
broche d’e/s du module TINI.
On donne le programme source Blinky.java :
import com.dalsemi.system.BitPort;
class Blinky {
public static void main(String[] args) {
BitPort bp;
bp = new BitPort(BitPort.Port5Bit2);
for (;;) {
bp.clear();
try {
Thread.sleep(250);
} catch (InterruptedException ie) {}
bp.set();
#njc Lycée « la Briquerie »
// Objet d E/S spécifique au TINI
// Allume la LED
// Pause d 1/4 de seconde
// Eteint la LED
Présentation du module TINI
& page 7/10
try {
Thread.sleep(250);
} catch (InterruptedException ie) {}
}
// Pause d 1/4 de seconde
}
}
Dans ce programme :
On importe la classe com.dalsemi.system.BitPort du SDK TINI qui nous permet de commander le bit d’e/s
2 du port 5 auquel est connectée la led.
bp est un objet instance de cette classe et les méthode bp.set et bp.clear permette de placer la sortie à 1
ou à 0.
La méthode thread.sleep permet de réaliser une temporisation.
Pour compiler ce programme, il faudra préciser le chemin du fichier tiniclasses.jar fourni par le constructeur et
qui contient la classe com.dalsemi.system.BitPort
La ligne de compilation doit contenir l’option : -bootclasspath ..\..\bin\tiniclasses.jar ; option que nous avons déjà
placée dans dans le fichier de commande prep_tini.bat.
Automatisation du transfert.
Afin d’améliorer la rapidité du test d’un programme, on peut automatiser le transfert du fichier vers le module
TINI en utilisant un fichier batch que nous appellerons, par exemple : trs_tini.bat
Ce fichier utilise, en entrée, le fichier trsp.cmd contenant les paramètres des commandes à exécuter.
Il suffira, en résumé, après écriture d’un fichier source de lancer les fichiers prep_tini.bat et trs_tini.bat pour
télécharger le fichier à exécuter dans la mémoire du module TINI.
Exécution du programme
Exécutons le programme par l’intermédiaire d’un client telnet :
#njc Lycée « la Briquerie »
Présentation du module TINI
& page 8/10
On constate bien sa présence dans la liste des processus en cours d’exécution. Pour le stopper il suffit d’utiliser
la commande kill 4 (ici 4 représente le n° du processus à stopper).
Utilisation du serveur Web embarqué.
Le module TINI dispose d’un serveur web embarqué, nous proposons dans cet exemple sa mise en uvre.
On souhaite afficher la page suivante :
On se propose d’utiliser les méthodes décrites précédemment pour utiliser le fichier source Helloweb.java
On utilise les fichiers suivants :
Le dossier du projet :
#njc Lycée « la Briquerie »
Présentation du module TINI
& page 9/10
Le source du fichier index.html :
Le fichier prep_tini.bat :
Le fichier tel_tini.bat :
Le fichier trs_tini.bat :
Le fichier trsp.cmd :
#njc Lycée « la Briquerie »
Présentation du module TINI
& page 10/10
Téléchargement