SysIO

Librairie et outils pour l’embarqué

SysIo est un projet Open Source sous
CeCILL Free Software License Version 2.1
dont l’objectif est d’offrir une bibliothèque C, C++ et Python pour accèder
aux ressources matérielles du système par une interface standardisée.

La partie spécifique à une architecture matérielle a été séparée de
façon à permettre le portage vers différentes plateformes.

Ce projet est en développement, pour l’instant, il fournit les modules:

sur plateforme Linux/Unix. Il fournit en plus les modules:

sur plateforme Raspberry Pi (A/B/B+/Pi2/Pi3).

Pour chaque module, un ou plusieurs exemples sont fournis.

Vous pouvez récupérer la toute dernière version de développement grâce à git :

$ git clone http://github.com/epsilonrt/sysio.git

Sa documentation complète est consultable sur le site :
http://www.epsilonrt.fr/sysio

Installation rapide

git clone http://github.com/epsilonrt/sysio.git
cd sysio
make
sudo make install

AvrIO

Bibliothèque C modulaire pour ATMEL AVR

AvrIO est un projet Open Source sous
CeCILL Free Software License Version 2.1
dont l’objectif est d’offrir une bibliothèque C pour les microcontrôleurs AVR
d’Atmel.
AvrIO est développé en C et en assembleur.
Il utilise la chaîne de développement GNU GCC disponible sur
la plupart des plateformes : Windows, Linux et autres Unix like, MacOS…

AvrIO est diffusé par github et sa documentation est publiée sur ce site.

Pourquoi AvrIO ?

Lorsque l’on souhaite developper un projet utilisant un microcontrôleur, on se
heurte rapidement à la problématique de choisir un système de prototypage.
Il existe un grand nombre de cartes prototypes dont la plus connue dans le monde
ATMEL est sans nul doute ARDUINO.

Certes cette solution est séduisante car elle
fournit une solution "Tout-en-Un" à l’amateur soucieux d’arriver rapidement à
une solution en DIY.

Le problème se complique lorsqu’on souhaite passer son projet à une étape
un peu plus professionnelle, voir industrielle en developpant une carte spécifique.

On a alors 2 choix possibles:

  1. respecter l’architecture matérielle d’une carte ARDUINO et utiliser la
    librairie ARDUINO, ce qui est loin d’être souple, ou
  2. modifier la librairie ARDUINO pour l’adapter à la nouvelle carte, ce qui est
    loin d’être simple (car la librairie ARDUINO n’est pas prévue pour cela).

Si on ajoute à cela:

  1. un fort couplage entre l’IDE
    ARDUINO et sa librairie (on est plus ou moins obliger d’utiliser l’IDE prévue…)
  2. L’absence de prise en compte de l’utilisation d’un
    débogueur comme
    AVR Dragon ou
    JTAG ICE,

cela fait beaucoup dans un contexte professionnel…

AvrIO fournit une solution élégante permettant de gommer les différences entre
le code mis au point lors de la phase de prototypage sur une carte du type
d’ARDUINO (DVK, USBKEY, STK …) et la phase de production sur la carte finale.
Il reprend en cela les avantages de la
conception orienté "Objet"

En clair, aucune ligne de code de l’application mise au point lors du prototypage
n’est modifiée pour la solution finale.

Cela est rendu possible en effectuant une séparation stricte entre le code et
la description matérielle. Cette description est réaliséé grâce à des fichiers
d’entête dans le dossier board. Le développeur aura donc uniquement à créer
un nouveau dossier board pour sa nouvelle carte en utilisant comme modèles
les nombreux exemples du dossier
board d’AvrIO.

AvrIO n’est pas lié à un IDE spécifique, on peut l’utiliser en ligne de
commande (make, make program, make debug …), avec
Geany,
AvrStudio 4,
CodeLite, Eclipse

Il suffit que l’IDE en question ai prévu l’intégration de projet utilisant un
Makefile.

Pour ma part, j’ai une préférence pour CodeLite,
qui est solution multiplateforme et puissante. CodeLite
me permet sous Linux un débogage via GDB
avec des fonctionnalités très proches d’AVR Studio 4 sous Windows… Mais il
ne s’agit là que d’un avis personnel.

AvrIO est développé :

  • de façon modulaire, c’est à dire, qu’il est découpé en modules.
    Chaque module peut être validé ou non, configuré et adapté facilement
    grâce à des fichiers séparés du code source. Les dépendances entre modules
    sont limitées au stricte nécessaire.
  • de façon à réduire l’occupation mémoire que ce soit RAM ou FLASH permettant
    son utilisation sur les modèles les plus économiques de la famille AVR (tiny).

AvrIO complète la bibliothèque C standard
avr-libc dans plusieurs domaines:

En plus des modules internes, AvrIO peut intègrer d’autres projets Open Source comme par exemple:

sans modification de leur licence.

AvrIO est pré-configurée pour un grand nombre de cartes cibles industrielles
mais peut être adapté facilement à une carte cible personnelle :

Vous pouvez récupérer la toute dernière version de développement grâce à git :

$ git clone http://github.com/epsilonrt/avrio.git

Installation rapide

git clone http://github.com/epsilonrt/avrio.git
cd avrio
sudo make install

make set-profile
# Remove AVRIO_ROOT=... in /home/pascal/.profile
# AVRIO_ROOT=/home/pascal/src/avrio was added
#  in /home/pascal/.profile
# You must log out for this to take effect.