« Pico SE4 2023/2024 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 64 : Ligne 64 :


La programmation c'est aussi l'écriture des sous-systèmes ou des pilotes liés à chaque cartes :
La programmation c'est aussi l'écriture des sous-systèmes ou des pilotes liés à chaque cartes :
* pour la carte mère il faut écrire un sous-système de gestion de fichiers ;
* pour la carte mère, il faut écrire un sous-système de gestion de fichiers ;
* pour les cartes filles clavier
* pour la carte fille comportant une matrice de touches, il faut écrire le pilote identifiant les touches actionnées et gérant l'envoi de ces touches à la carte mère ;
* pour la carte fille gérant un clavier USB, il faut utiliser un projet LUFA pour scanner régulièrement le clavier USB et envoyer d'éventuels événements à la carte mère ;
* pour la carte fille gérant une clé USB, il faut utiliser un projet LUFA pour l'accès à la clé et écrire un sous-système de gestion de fichiers ;
* la carte fille gérant une connexion série ne nécessite qu'un modeste pilote de communication avec la carte mère ;
* pour la carte fille permettant une connexion avec le monde extérieur via de simples points d'accès USB de volume (EP Bulk), il faut écrire le pilote pour communication avec la carte mère mais aussi le programme sur le PC permettant la réception ou l'envoi de fichiers ;
* pour la carte fille permettant une connexion Ethernet au dessus d'USB (RNDIS), il faut écrire une micro-pile réseau capable de récupérer et d'envoyer des fichiers au travers de paquets Ethernet mais aussi le programme sur le PC cible capable de comprendre ces paquets Ethernet ;
* pour la carte fille incluant une puce Ethernet, il faut implanter la micro-pile réseau et le programme évoquée ci-dessus mais aussi le pilote capable de gérer la puce Ethernet.


= Détails (brouillon) =
= Détails (brouillon) =

Version du 5 juillet 2023 à 11:34

Objectif

Pour l'année académique 2023/2024 nous vous demandons de construire un pico-ordinateur comprenant les éléments suivants :

  • un processeur de type microcontrôleur ;
  • un clavier ;
  • un dispositif d'affichage ;
  • un système d'exploitation stocké dans la mémoire flash du microcontrôleur ;
  • une mémoire de masse allant au delà de la mémoire flash sus-citée ;
  • un dispositif de communication avec l'extérieur.

Pour faire en sorte que tous les éléments puissent communiquer entre eux nous vous demandons d'utiliser le bus SPI.

Organisation du travail

Vous aurez, comme d'habitude, la lourde tâche de tester ce module de travaux pratiques.

Ce sera d'autant moins facile que nous vous demandons de vous coordonner pour réaliser le pico-ordinateur : un seul exemplaire fonctionnel est attendu.

Vous allez donc devoir vous organiser pour que chaque binôme réalise une partie de l'ensemble. Cela dit des tâches identiques sont à réaliser par tous les binômes, ces tâches vos permettront de vous exercer mais aussi de tester vos réalisations spécifiques.

Tâches à réaliser

Chaque binôme réalise : Pour tous les binômes :

  • un ordonnanceur, vous écrirez en particulier une tâche de lecture sur port série et deux tâches d'envoi d'information sur bus SPI. Le partage du bus SPI doit être supervisé par l'odonnanceur ;
  • au choix, une carte fille FPGA programmée par VHDL et communicant via le bus SPI, le binôme réalise aussi la tâche d'ordonnancement utilisant la carte ;
  • au choix, une carte mère ou une carte fille, le binôme réalise aussi la tâche d'ordonnancement correspondante.

Cartes fille FPGA

Les pistes pour les cartes filles FPGA/VHDL :

  • carte VGA ;
  • carte mémoire de masse autour d'une carte mémoire SD accédée en mode direct ;
  • carte co_processeur pour Ethernet (e.g. calcul de checksum, transceiver manchester).

Cartes électroniques

Les connexions entre cartes mères et cartes filles doivent être réalisées via des connecteurs HE-10 à 8 connecteurs :

  • 2 broches pour l'alimentation ;
  • 3 broches pour les signaux SPI (MISO, MOSI, SCK) ;
  • 1 broche pour le CS (Chip Select) ;
  • 1 broche pour une éventuelle ligne d'interruption ;
  • 1 broche pour une eventuelle réinitialisation de la carte (Reset).

Cartes mères :

  • une carte CPU ATMega328p avec une flash SPI NAND.

Cartes filles :

  • une carte fille SPI avec un ATMega328p et une matrice de touches (clavier) ;
  • une carte fille SPI avec un AT90USB647 pour connexion à un clavier USB ou une clef USB ;
  • une carte fille SPI avec un ATMega16u2 pour une connexion série USB ;
  • une carte fille SPI avec un ATMega16u2 pour une connexion réseau (EP bulk ou RNDIS) ;
  • une carte fille SPI avec un ATMega328p et un ENC28J60 pour une connexion Ethernet.

Programmation système

Le système d'exploitation du pico-ordinateur doit avoir les fonctionnalités d'un DOS (Disk Operating System), à savoir :

  • lecture des commandes tapées par l'utilisateur ;
  • téléchargement d'exécutables ou de sources via le dispositif de communication extérieur  ;
  • sauvegarde et chargement d'exécutables ou de sources via la mémoire de masse ;
  • permettre l'affichage de chaînes de caractères ;
  • comprend un interpréteur micro-python pour faire tourner les sources ;
  • les différentes fonctionnalités sont réalisées sous forme de tâches gérées par un ordonnanceur.

La programmation c'est aussi l'écriture des sous-systèmes ou des pilotes liés à chaque cartes :

  • pour la carte mère, il faut écrire un sous-système de gestion de fichiers ;
  • pour la carte fille comportant une matrice de touches, il faut écrire le pilote identifiant les touches actionnées et gérant l'envoi de ces touches à la carte mère ;
  • pour la carte fille gérant un clavier USB, il faut utiliser un projet LUFA pour scanner régulièrement le clavier USB et envoyer d'éventuels événements à la carte mère ;
  • pour la carte fille gérant une clé USB, il faut utiliser un projet LUFA pour l'accès à la clé et écrire un sous-système de gestion de fichiers ;
  • la carte fille gérant une connexion série ne nécessite qu'un modeste pilote de communication avec la carte mère ;
  • pour la carte fille permettant une connexion avec le monde extérieur via de simples points d'accès USB de volume (EP Bulk), il faut écrire le pilote pour communication avec la carte mère mais aussi le programme sur le PC permettant la réception ou l'envoi de fichiers ;
  • pour la carte fille permettant une connexion Ethernet au dessus d'USB (RNDIS), il faut écrire une micro-pile réseau capable de récupérer et d'envoyer des fichiers au travers de paquets Ethernet mais aussi le programme sur le PC cible capable de comprendre ces paquets Ethernet ;
  • pour la carte fille incluant une puce Ethernet, il faut implanter la micro-pile réseau et le programme évoquée ci-dessus mais aussi le pilote capable de gérer la puce Ethernet.

Détails (brouillon)

 La structure de la plateforme de projet :
* Processeur du pico :
  1) ATMega328p (utilisation possible d'Arduino nano ou mini)
  2) ATMega{16,32}u{2,4} pour avoir directement une connexion USB
  3) ATXMega (kit de dév disponibles) pour avoir plusieurs UART, faire du DMA, non testé
  4) ARM cortex-M0 (ce serait probablement le mieux mais ça me paraît joueur)
* Clavier :
  1) Port série
  2) Clavier maison avec matrice de touches
  3) Clavier USB avec un AT90USB647 LUFA/Host
* Ecran :
  1) Port série
  2) Ecran LCD
  *) FPGA VGA (à faire dans tous les cas)
* BIOS en mémoire Flash du processeur
* Mémoire de masse
  1) EEPROM du SoC
  2) Flash SPI
  3) Clef USB avec un AT90USB647 LUFA/Host
  4) FPGA mémoire M.2 :D
* Communication extérieure
  1) Port série
  2) Connexion USB "vendeur spécifique"
  3) Puce Ethernet 10Mb/s ENC28J60
  4) Connexion USB LUFA/RNDIS
5) Ethernet natif sur des ARM
 Des architectures possibles :
 * Compacte :
    - un ATMega*u*,
    - son port série (TX) pour la communication vers FPGA/VGA,
    - son port série (RX) pour le clavier (terminal série),
    - son port SPI pour la mémoire de masse,
    - son module USB pour la connexion "vendeur spécifique".
 * Distribuée bus série partagé :
    - un ATMega328p,
    - un port série partagé (TX pour sélectionner un gestionnaire) :
      = 'V' pour vidéo, envoi vers le gestionnaire vidéo FPGA/VGA,
      = 'S' communication avec le gestionnaire série (un ATMega*u* LUFA/CDC),
      = 'C' communication avec le gestionnaire clavier (un AT90USB647 LUFA/Host/Clavier),
      = 'M' communication avec le gestionnaire mémoire de masse (un ATMega* avec une flash SPI),
      = 'R' communication avec le gestionnaire réseau (un ATMega*u* LUFA/RNDIS).
 * Distribuée bus SPI :
    - un ATMega328p,
    - son port série pour le gestionnaire vidéo FPGA/VGA,
    - son bus SPI :
       = communication avec le gestionnaire série (un ATMega*u* LUFA/CDC),
       = communication avec le gestionnaire clavier (un AT90USB647 LUFA/Host/Clavier),
       = communication avec le gestionnaire mémoire de masse (un ATMega* avec une flash SPI),
       = communication avec le gestionnaire réseau (un ATMega*u* LUFA/RNDIS).
 * Distribuée avec plusieurs UART :
    - un ATXMega,
    - port série (TX) vers le gestionnaire vidéo FPGA/VGA,
    - port série (RX) pour les entrées clavier série,
    - port série avec le gestionnaire clavier (un AT90USB647 LUFA/Host/Clavier),
    - port série avec le gestionnaire mémoire de masse (un ATMega* avec une flash SPI),
    - port série avec le gestionnaire réseau (un ATMega*u* LUFA/RNDIS).