SE4Binome2026-1

De projets-se.plil.fr
Révision datée du 11 septembre 2026 à 08:02 par Tregaud (discussion | contributions) (→‎Ordonnanceur)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Cahier des charges

L'objectif est de réaliser une carte mère.

Pico-ordinateur

Pico SE4 2026/2027

Lien GIT

https://gitea.plil.fr/tregaud/IOT4_Pico_Bouallegui_Reugo

Carte mère

Hardware

Composants

- [x] ATmega32U4

- [x] ATmega16U2

- [ ] USB A : footprint = USB_A_Molex_48037-2200_Horizontal (male)

- [ ] USB A : footprint = A verif si la meme pour femelle

- [ ] USB C

- [x] Regulateur de tension : footprint = MCP1640Bx-xCHY

- [ ] Crystal 8MHz : footprint = Crystal_SDM_3223_4pin_3.2x2.5mm

- [x] AT45DB641E

Software

Cartes filles

Les cartes filles peuvent être de différents types :

  • carte fille clavier ;
  • carte fille d'affichage ;
  • carte fille série (se comporte comme un clavier et comme un dispositif d'affichage) ;
  • carte fille réseau ;
  • carte fille mémoire de masse (alternative à la mémoire de masse de la carte mère) ;
  • carte fille son.

A choisir plus tard...

Ordonnanceur

On veut faire clignoter les leds D3 et D4 du shield.

Cela correspond aux broches D10 et D11 de l'arduino UNO.

Soit les registres PB2 et PB3 du uP

Etapes clés

  1. Sauvegarder
  2. Ordonnancer
  3. Restaurer

Initialisation des processus

Chaque processus contient l'adresse du début de la fonction, un pointeur vers la stack en mémoire et son état

typedef struct {
    uint16_t addr; // debut de la fonction
    uint16_t ptr; // Stack
    uint16_t state;
} Proc;

Les stack des processus sont calculés par la formule suivante : 0x800+(nb_proc-1)*0x50

void init_stack(uint16_t func_addr){
    Proc *p = &proc_table[nb_proc++];
    p->addr=func_addr;
    p->state=0;
    uint16_t old = SP;
    SP=0x800+(nb_proc-1)*0x50;
    asm volatile("push %0" : : "r" (func_addr & 0x00ff) );
    asm volatile("push %0" : : "r" ((func_addr & 0xff00)>>8) );
    SAVE_REGISTERS();
    p->ptr=SP;
    SP=old;
}

Scheduler

Passe simplement au processus suivant en incrémentant l'index du processus en cours.

Système de fichier

A voir plus tard

Historique des séances

08/09 :

Lecture du sujet

Recherche des datasheets

Installation Kicad 9

Début du schéma dans Kicad

10/09 :

Amphi Ordonnanceur + Système de fichiers

Début du code de l'ordonnanceur : les leds clignotent en parallèle mais avec un timer biaisé

Kicad un peu plus avancé