mercredi 9 octobre 2019

Ingénieur en informatique industrielle

Voilà un beau métier mais qu'elle structure choisir pour l'apprendre, pour se former ? Une bonne école d'ingénieur en électronique ? Certainement mais vous allez faire "du Hard" concevoir des cartes électroniques à base de Microprocesseurs ou de Microcontrôleurs (Microchip) c'est la base. 

Et pour le logiciel ... et bien vous ferez une école d'informatique.

Microchip - Motorola - STMicroelectronics
Microchip - Motorola - STMicroelectronics

Apprenons à décoder une annonce d'emploi comme : Ingénieur en informatique industrielle

Je vous propose l'exemple d'annonce suivant :

Descriptif du poste :
Dans le cadre de son développement, le Groupe "Bip" Développement, recherche, un Electronicien et informaticien industriel (H/F) en vue d’intégrer à la gamme de produit la notion d’objets connectés.

Sous la responsabilité de la Direction R&D, vous aurez pour missions principales :
- Concevoir et tester des petits appareils mécatroniques connectés pour le domaine domestique et médical.
- Réaliser les schémas électroniques, routage et logiciels embarqués (langage C)
- Développer des logiciels d’interfaces de tests sur PC
- Réaliser des prototypes et des maquettes
- Rédiger des dossiers techniques
- Respecter avec rigueur normes, procédures et données d’entrées (ISO13485 et IEC 62304)
La liste des tâches n’est pas limitative.

Profil recherché :
Ingénieur ou BAC+5 en Electronique ou Informatique Industrielle, Systèmes Embarqués vous avez une expérience significative sur des missions similaires. Vous avez une bonne maitrise des microcontrôleurs (Microchip, STM32, …) et leurs plateformes de développement, des bonnes connaissances du langage « C » et méthode de développement.

Et je vais vous aider à la décoder, à mon niveau. Déjà une question pas si facile à laquelle je ne trouve pas de réponse rapidement : 

C'est quoi un Microchip ?

Avant de chercher, pour moi un chip c'est une puce alors un microchip c'est une petite puce, un terme générique. Malheureusement Wikipédia nous laisse avec une société, un microchip est alors un semi-conducteur créé par la société Microchip Technology issue d'une division de General Instrument (rachetée à Motorola).

Il y a deux grandes familles de puces, les microprocesseurs et les microcontrôleurs, un microchip est de la famille des microcontrôleurs.

Pour en terminer avec la découverte de Microcontrôleurs PIC, une autre page sur la série des PICs.

PIC10, PIC12, PIC18 ... PIC32MZ.

Une chose me chagrine finalement dans cette annonce, c'est la partie "recherche, un Electronicien et informaticien industriel (H/F)" puis plus loin dans l'annonce on insiste : "Ingénieur ou BAC+5 en Electronique ou Informatique Industrielle, Systèmes Embarqués".

C'est un peu comme si vous cherchiez quelqu'un qui est capable de courir à gauche et de courir à droite en même temps ! Cela relève de la mécanique quantique ;-)

Personnellement, j'étais plus à l'écoute de ces processeurs ARM et des noyaux temps réels comme FreeRTOS donc ce "microchip" ne m'arrange pas trop mais essayons d'aller un peu plus loin.

C'est quoi un STM32 ?

Alors cette fois, on est avec STMicroelectronics avec un microcontrôleur de la famille 32-bits ARM Cortex MCUs.

Mais au fait 32 bits, cela signifie 32 bits d'adresses, ou 32 bits de données ? Je vous laisse avec cette question, demandez moi ;) je connais la réponse.

Que nous reste t-il pour finir de décoder cette annonce à notre niveau ? Les normes que signifie la norme ISO13485 ?

C'est quoi la norme ISO 13485 ?

Des chiffres me direz-vous des chiffres, 485 me fait penser à RS 485 (une liaison série ? pas du tout !), la norme ISO 13485 précise les exigences des systèmes de management de la qualité (SMQ) pour l'industrie des dispositifs médicaux.

Il s'agit de garantir la qualité des dispositifs médicaux ...

Ici : France Certification - ISO 13485

On vous propose d'obtenir votre certification ISO 13485
Mettre en place les outils de la norme ISO 9001
Analyse du risque

C'est quoi la norme IEC 62304 ?

bsi- IEC62304 Norme pour les logiciels de dispositifs médicaux

C'est une certifications pour les logiciels des dispositifs médicaux.

Voilà vous remarquez qu'une annonce d'ingénieur en informatique industrielle touche une palette de métiers divers.

Par la suite, je creuserai une partie qui m'intéresse les STM32 et surtout quel noyau temps réel peut-on y implanter ?

Avec un début de piste Ici : AxiomCafe - Implémentation d'un noyau temps réel (chibiOS sur STM32-PIO3)

Et la suite de la piste avec le "site sérieux" de STMicroelectronics :

STM32 step-by-step

C'est passionnant !

lundi 8 avril 2019

C'est quoi FreeRTOS ?

Nous sommes dans les noyaux temps réels et la mise en œuvre des meilleures technologies, alors FreeRTOS est un système d'exploitation temps réel, faible empreinte, portable préemptif et Open Source pour microcontrôleurs, il a été porté sur 33 architectures différentes ce qui en fait sa force.

JDN - FreeRTOS, l'ancêtre des OS temps réel

Alors quand on lit cela, on pourrait penser que c'est un vieux truc déjà remplacé mais je ne crois pas. FreeRTOS est très léger, il ne pèse que 6 Ko à 12 Ko. Il est composé de trois fichiers écrits en langage C.

Un point faible : une prise en main qui peut s'avérer complexe.

FreeRTOS - Noyau Temps Réel

Je trouve la page Wikipédia de FreeRTOS bien faite on va assez loin dans la compréhension du noyau temps réel et de sa description. Avec une description de l'ordonnanceur des tâches et de on mode de fonctionnement.

Wikipédia - FreeRTOS

On peut y voir le diagramme d'états d'une tâche.

SourceForge - FreeRTOS - Real Time Kernel Download

FreeRTOS - Queues, Mutexes, Sémaphores

Les Queues de messages sont des formes primaires de communications inter-tâches du noyau temps réel.

FreeRTOS - Documentation

FreeRTOS - Supported Plateformes

ARMv8-M

Pour ma part, je préférerai la plateforme Windows :

Windows Simulator for Visual Studio Express and Eclipse with MingW (GCC)

FreeRTOS - Windows Port

FreeRTOS - Getting Started with Simple FreeRTOS Projects

Voilà ici, il y a tout pour bien démarrer et prendre en main FreeRTOS afin de développer vos propres applications pour systèmes embarqués. Ce noyau temps réel est écrit en langage C donc il suffit d'un bon compilateur et on peut démarrer son exécution.

Pour des informations concernant le développement en Langage C avec Eclipse et MinGW, je vous laisse avec les articles suivants :

Développer en Langage C avec Eclipse et MinGW

Have fun! No paine!

Comment développer pour FreeRTOS avec Windows

J'ai compris que développer en C pour FreeRTOS n'est pas forcément une évidence sous windows, je fais donc quelques recherches récentes et je trouve AWS :

AWS - Mise en route avec le simulateur d'appareils Windows

Il faut ouvrir un compte AWS. Et cela va commencer à vous coûter de l'argent. Mais c'est une porte d'entrée pour comprendre comment on peut faire du développement sous Windows avec FreeRTOS.

On peut trouver de la même manière : 

Azure RTOS

Le tout pour l'IoT...

Autre sujet : 

FreeRTOS dans l'Azure

Pour l'instant, that's all Folks!

Vous avez des idées, des conseils n'hésitez pas commentez.

jeudi 28 mars 2019

Architecture du processeur ARM

Je voudrais en quelques mots rapides avoir une idée de ce que je peux dire de "L'architecture ARM". Dont voici le bloc diagramme que je trouve rapidement sur Internet.

ARM
Architecture ARM en SoC

On parle de SoC ou System On Chip avec ces composants autour du processeur ARM (de la société Acorn Computer) ARM signifie Acorn Risc Machine.

Ce processeur Risc supplante les processeurs à architecture Misc dont le MC68020 de Motorolla sur lequel j'ai travaillé, snif.

Architecture Misc Motorolla MC 68020

Risc signifie : Reduce Instruction Set Computing - processeur à jeu d'instructions réduit.
De mémoire je vous cite ce que je reconnais sur ce Chip :
JTAG : sonde on s'en sert pour le debug connaitre l'état du processeur
PIO : Programmable Input Output
Mémoire SRAM, Flash
CAN : Convertisseur Analogique Numérique permet de connecter des signaux, de faire du Traitement de Signaux
USART : Liaison Série
...

Voilà je reviendrai quand j'aurais d'autre demande sur l'informatique embarquée.

vendredi 25 août 2017

Wind River Workbench Project

Il s'agit de la création d'un projet Workbench pour VxWorks : Workbench est l'environnement de développement de VxWorks qui va avec.

Je suis donc dans la machine virtuelle Linux Fedora de Wind River qui fait tourner mon WorkBench et je tente de créer un projet.


Workbench->File->New->Wind River Workbench Project
Quelles sont les options qui s'offrent à nous :

Wind River Workbench Project->Host OS or Wind River VxWorks 6.9
Je choisie Wind River VxWorks 6.9 :
Wind River VxWorks 6.9 -> Build Type

Les options :
Boot Loader / BSP Project
Downloadable Kernel Module
Kernel Librairies
...

Je choisie Boot Loader / BSP Project :

Boot Loader / BSP Project
To Be Continued
 

mardi 29 octobre 2013

VxWorks VxSim Evaluation Tutorial - Fr

VxWorks Simulator ou VxSim est décrit dans le document : Wind River VxWorks Simulator USER’S GUIDE 6.1 (que l'on ne trouve plus sur le net)

Il s'agit du simulateur de board VxWorks également nommé VxWorks Simulator BSP. C'est un logiciel capable de simuler les caractéristiques nécessaires à l'exécution du noyau temps réel VxWorks sur votre machine hôte. A fin d'utiliser ce simulateur, on doit créer une image VxWorks et la charger sur le simulateur.

Caractéristiques supportées par VxSim

Concernant VxWorks

Real Time Processes (RTP) : processus temps réel
Détection d'erreurs et Reporting
ISR Stack Protection (sous Linux et Solaris)
Shared Data Regions
Shared Librairies (sous Windows et Linux)
ROMFS
VxMP (shared-memory object)
VxFusion (distribued message queue)
Wind River System Viewer

Simulation de l'électronique

VxWorks Console
Timer Système
Memory Management Unit - MMU pour tirer parti des RTP (Real Time Processes)
NVRAM (RAM non volatile)
Virtual Disk Support - simulation d'un disque pouvant être utilisé comme système de fichiers VxWorks
TimeStamp Driver
Real-Time Clock

Limitations de la simulation

Le VxWim s'exécute sur la machine hôte, il ne peut donc pas être représentatif d'une exécution sur machine cible (BSP Board Support Package). La simulation ne se faisant pas au niveau instruction machine, on ne peut donc pas développer de driver.

Configurer et construire une image VxWorks

Par défaut, le fichier de configuration, contenu dans le VxWorks Simulator BSP, construit une image complète avec les composants suivants :

le kernel shell  et son interpréteur de commandes en langage C
le Wind River System Viewer
kernel hardening features (such as text segment write protection)
error detection and reporting features
the ROM-based file system (ROMFS)
shared libraries and shared data regions
POSIX support
C++ support
basic memory management support (INCLUDE_MMU_BASIC)
real time process (RTP) support
the network stack 
virtual disk support
non-volatile RAM

Composants optionnels

Pour utiliser les composants optionnels il nous faudra être capcable de construire une nouvelle image.

VxMP
Capacités multiprocesseur, paramètres : INCLUDE_SM_COMMON, INCLUDE_BOOT_LINE_INIT, and INCLUDE_SM_OB.
Par défaut VxMP utilise 8KB de mémoire pour modifier cette caractéristique utiliser SM_MEM_SIZE
Pour modifier la taille du pool de mémoire partagée il faudra utiliser le paramètre : SM_OBJ_MEM_SIZE

Shared Memory END Driver
Pour utiliser cette capacité smEnd il faut paramétrer INCLUDE_SM_NET

Construire votre image VxWorks

Pour le simulateur VxSim BSP ou pour une carte cible électronique c'est le même processus, il consiste dans l'utilisation de VxWorks Makefile Standards. Cette image peut être construite en utilisant soit le compilateur Wind River soit le compilateur Wind River GNU.

Dans Workbench : File->New Project :


VxWorks - New Project


VxWorks - New VxWorks Image Project


VxWorks - MyVxWorksImage Project


MyVxWorksImage - Choix du BSP
Et là, je suis un peu embêté car dans la documentation, on me dit que le Simulateur VxWorks :
Dans Windows s'appelle : simpc
Dans Solaris s'appelle : solaris
Dans Linux : linux

Et je ne vois pas de simpc dans la liste, n'ayant pas de BSP, je verrai cela plus tard ...

To Be Continued

VxWorks - Wind River General Purpose Platform 6.9 - 2

On aura vu l'instabilité de cette plateforme ... sous Virtual PC en tous cas et l'apparition d'une méchante erreur lors de l'exécution de Workbench 3.3.

C'est amusant car dans le premier document qui s'ouvre avec Fedora 13, le Read Me Fisrt, on vous explique comment graver un DVD bootable ??! Mais si ce n'est déjà fait, je ne vois pas comment accéder à ce document.

Acharné, j'ai plusieurs fois lancé l'image ISO de Wind River Plateforme sous Virtual PC, sous Windows 7 ça semble fonctionner et puis j'essaye Oracle Virtual Box sous Windows XP et cela semble bien fonctionner :

Wind River Workbench for VxWorks In Oracle VirtualBox
Voilà enfin mon espace de travail :


Workbench for VxWorks
La Wind River Plateforme a été crée pour tester VxWorks selon trois modes de fonctionnement en utilisant le VxWorks Simulator en :
  • single-processing mode
  • symmetric multiprocessing (SMP) mode
  • et asymmetric multiprocessing (AMP) mode
Il y a trois documents présents sur mon espace de travail :
  • VxWorks VxSim Evaluation User Guide
  • VxWorks SMP Evaluation User Guide
  • VxWorks AMP Evaluation User Guide
To Be Continued

jeudi 24 octobre 2013

VxWorks - Wind River General Purpose Platform 6.9

Une fois que nous avons téléchargé la version d'évaluation de Wind River General Purpose Platform 6.9 Evaluation qui se trouve plus Ici,  que peut-on en faire ? Doit-on forcément créer un DVD bootable pour transformer votre plateforme host en machine Linux ? Peut-on créer une machine virtuelle qui fonctionne avec cette image ISO ?

Maj 08/10/2018 nouveau lien vers le Evaluation Center :
https://www.windriver.com/evaluations/
https://www.windriver.com/evaluations/

Création d'une nouvelle machine virtuelle avec Virtual PC 2007 :

VxWorks - Machine Virtuelle avec Wind River Plateforme
Double clique sur "Nouvel Ordinateur Virtuel" et utiliser le menu "CD" pour capturer l'image ISO : DVD-R168838.1-1-14_1113.iso. Afin que cette nouvelle machine boot sur l'image de Wind River Plateform.

Il n'y a pas de difficulté à proprement parler, la seule chose est que l'on peut croire à de nombreuses reprises que cela ne va pas fonctionner. 

Virtual PC avec Wind River Plateforme Evaluation

Voici donc les écrans que l'on obtient lorsque la machine virtuelle boot sur l'image afin de montrer que cela fonctionne.

D'abord le BIOS détecte les disques puis exécute le boot de l'image : 

Le BIOS de la machine virtuelle démarre et détecte les disques
L'image ISO est détectée par le BIOS et commence à être chargée, à cet instant on voit que c'est un Linux :

L'image ISO est détectée par le BIOS
Si on appuie sur TAB on accède à des options du boot Linux. Le boot se lance automatiquement.

Automatique boot de IsoLinux
Vous pouvez essayer la combinaison des touches Alt-TAB à ce moment et d'autres options apparaissent. Puis quelques insultes mais rien de grave :

Linux
Ensuite, c'est le chargement du système Linux, le fameux Fedora 13 que l'on aura repéré dans la documentation :

Chargement de Fedora 13
Puis c'est à nouveau un peu curieux, on dirait que la machine n'utilise pas la bonne résolution d'écran :

Automatique Boot
On dirait que le système reboot encore plusieurs fois :

Linux Wind River Plateforme Evaluation for VxWorks
Certain des [OK] que nous voyons en vert étaient en rouge, puis après un dernier reboot, vient le lancement du Linux, avec l'affichage du fichier PRODUCT EVALUATION LICENCE AGREEMENT :

Linux de Wind River Plateforme dans la machine virtuelle
En cliquant sur le bouton "Close", on vous demande ensuite d'accepter les termes de la licence :

Linux Licence Wind River Plateforme
Tapez "yes" cliquez sur "Ok", ça y est en on y est enfin :

Wind River Platforme Linux Evaluation for VxWorks

Wind River Plateforme Evaluation for VxWorks

Vous avouerez que ce n'est pas sans mal et qu'il est bon de voir enfin notre machine virtuelle PC avec le Linux correctement exécuté. Mais en cliquant sur Workbench 3.3, c'est à dire l'environnement de développement Eclipse particularisé pour VxWorks :


An error has occured - Execution of Workbench for VxWorks 
Ce n'est pas gagné !!!

To Be Continued
 

Linux Fedora 13 for Wind River Plateform - Qwerty To Azerty Keyboard

Lors de l'utilisation de cette plateforme, vous allez avoir un petit souci de clavier. Comme d'habitude elle est configurée pour fonctionner avec un claviers QWERTY et nous aimerions bien travailler avec un clavier AZERTY étant donnée que notre clavier physique est en AZERTY.

La solution, c'est ici : Ajouter un clavier dans System -> Preferences -> Keyboard :

Fedora 13 Linux - Ajouter un clavier
Onglet Layouts -> Bouton Add... :

Fedora 13 Linux - Ajout du clavier France
Choisissez "France". Et voilà on est sauvé on peut commencer à travailler ...

Noyaux Temps Réel - Généralités

Afin de comprendre le système d'exploitation, le noyau ou RTOS pour Real Time Operating System, il faut apprécier les moyens donnés, par le micro-processeur, au Noyau.

Trois types de moyens :

1 - les IT ou interruptions : programme cours déclenché par le positionnement d'une pinoche externe au processeur.

2 - la mémoire : deux types de mémoires la stack pour changer de contexte empiler les registres et l'adresse de retour d'un sous-programme.

3 - les primitives de commutation de contexte : TST : test and set permet de tester et de setter un bit lors du même cycle d'exécution ainsi on peut par exemple positionner un sémaphore correctement et réaliser des mutex proprement.

L'existence d'un Noyau ou Kernel implique une partition de la mémoire physique en deux régions distinctes, une partie noyau et une partie utilisateur.

Lorsque le noyau peut exécuter plusieurs tâches en parallèle, on dit qu'il est multitâches. Il s'appuie sur les notions de :
- commutation de contexte : certains processeurs fournissent des mécanismes de sauvegarde de contexte en interne ce qui évite la sauvegarde en mémoire vive, plus lente.
- ordonnancement : de deux types, en temps partagé selon un algo, en temps réel pour assurer l'exécution d'une tâche en un temps donné
- temps partagé

Il existe deux approches opposées d'architecture logicielle du noyau, monolithique et/ou micro-noyau mais les deux approches noyau monolithique modulaire et micro-noyaux hybrides se rejoignent quasiment.

VxWorks - Introduction

C'est un système d'exploitation temps réel multitâche utilisé dans les systèmes embarqués. Ce noyau est développé par la firme Wind River acquise par Intel en 2009.

Intel to Acquire Wind River Systems for Approximately $884 Million

Depuis la version 6.0, l'IDE de VxWorks est Workbench, développé par la société Wind River et basé sur l'environnement de développement Eclipse.

Caractéristiques du Noyau VxWorks

Adressage virtuel mais pas de protection mémoire, pas de swap. Il n'existe qu'un seul espace d'adressage dans le système.
Noyau modulaire
Le noyau possède deux interfaces : POSIX 1003[GAL 95] et propriétaire
Disponible pour de très nombreuses architectures (matérielles) BSP (Board Support Package)

Un seul espace d'adressage, corruption possible des données de l'exécutif (tout le monde voit tout).
Donc pour conserver la cohérences des données partagées entre tâches, il faut des mécanismes de synchronisation.

Abstractions de l'exécutif :
  • Tâches.
  • Sémaphores.
  • File de messages et pipes.

Pourquoi un seul espace d'adressage ?

Le contexte des tâches est plus petit (moins d'espace méméoire)
Les appels au services du Noyau se font comme de simples appels de fonctions.
Toutes les tâches applicatives s'exécutent dans le même contexte d'exécution : "superviseurs/privilégiées".
Communication entre tâches sans traverser le Noyau.

Ce sont les contraintes qui correspondent bien aux systèmes embarqués temps réel.

Ordonnacement à priorité fixe préhemptif HPF (Highest Priority First) de 0 à 255
Algorithme de Round-Robin pour les tâches de même priorité

Architecture Logicielle de VxWorks

Le noyau VxWorks est constitué de tâches et de bibliothèques (ou agences) :

Exemple de bibliothèques :
taskLib : Gestion des tâches.
sockLib : Sockets BSD.
ftpLib : Client FTP.

Exemple de tâches systèmes :
tShell : Shell "à la UNIX" pour la cible.
tLogTask : Prise de journal.
tRlogind : Connexion par la commande rlogin sur la cible.

Cibles : RACK VME 68000

Pour aller plus loin :
Frank Singhoff
Bureau C-203
Université de Brest, France
LISyC/EA 3883
singhoff@univ-brest.fr

Evaluation 

La version d'évaluation de Wind River General Purpose Platform 6.9 Evaluation se trouve Ici.

Il s'agit de télécharger une image Iso de la Wind River General Purpose Platform 6.9 et peut-être que l'on arrivera à installer le tout sur une plateforme hôte :

Platform Host OS Support
Microsoft Windows XP Professional with Service Pack 3

Et si on essayait de travailler avec un Simulator ? Il doit bien en exister un car, bon je ne trouve plus la doc  Ici. Ce n'est plus en accès libre.

Mais cette page existe toujours ...