Découvrez comment l'utilisation maîtrisée des outils Open Source peut améliorer de façon significative l'efficience de vos équipes de développement et donc votre compétitivité.
Pour découvrir les autres présentations, rendez-vous sur notre site : http://ingenierie.openwide.fr/References/Conferences-techniques
These slides (in French language) explain how to build an embedded Linux distribution with reach features, without compromise on quality, using the tools offered by the Yocto Project.
They were presented in a seminar organized by Captronic in Aix en Provence, on May 15th, 2014
Concevoir un système Linux embarqué avec Yocto Project - Version réviséeChristian Charreyre
These slides (in French language) explain how to build an embedded Linux distribution with reach features, without compromise on quality, using the tools offered by the Yocto Project. This is the up to date version presented on December 4th, 2014.
Les slides de la présentation faite par CIO Informatique Industrielle lors du salon Synergie NTIC, sur les utilisations de Linux en contexte embarqué et industriel
Open Wide : Les interfaces graphiques dans l'embarqueAlexandre LAHAYE
Cette nouvelle conférence a réuni plus de 30 professionnels de l'embarqué à Paris et plus de 60 à Toulouse qui ont pu découvrir différents outils permettant de construire des interfaces graphiques optimisées pour leurs plateformes matérielles.
Pour découvrir les autres présentations, rendez-vous sur notre site : http://ingenierie.openwide.fr/References/Conferences-techniques
These slides (in French language) explain how to build an embedded Linux distribution with reach features, without compromise on quality, using the tools offered by the Yocto Project.
They were presented in a seminar organized by Captronic in Aix en Provence, on May 15th, 2014
Concevoir un système Linux embarqué avec Yocto Project - Version réviséeChristian Charreyre
These slides (in French language) explain how to build an embedded Linux distribution with reach features, without compromise on quality, using the tools offered by the Yocto Project. This is the up to date version presented on December 4th, 2014.
Les slides de la présentation faite par CIO Informatique Industrielle lors du salon Synergie NTIC, sur les utilisations de Linux en contexte embarqué et industriel
Open Wide : Les interfaces graphiques dans l'embarqueAlexandre LAHAYE
Cette nouvelle conférence a réuni plus de 30 professionnels de l'embarqué à Paris et plus de 60 à Toulouse qui ont pu découvrir différents outils permettant de construire des interfaces graphiques optimisées pour leurs plateformes matérielles.
Pour découvrir les autres présentations, rendez-vous sur notre site : http://ingenierie.openwide.fr/References/Conferences-techniques
Présentation au logiciel Eclipse et les outils de collaborations dont SVN. La deuxième partie est consacrée à la barre de développeur pour le
navigateur Firefox, on y retrouve les outils les plus utiles.
Créer sa distribution Linux embarqué avec Yocto ou AngströmChristian Charreyre
Création d'une distribution Linux embarqué riche à l'aide des outils de build de distribution Yocto et Angström : slides présentés lors du 5e meetup de Paris Embedded meetup
Ce cours présente la notion de système d'exploitation et en particulier les Linux embarqués qui sont spécialement conçus pour des systèmes embarqués de haut niveau avec des processeurs à usage général (GPP) comme unité de calcul principale. Il explique ensuite comment Linux embarqué démarre, quelles sont les différentes phases et modalités de stockage du système d'exploitation. Enfin, il présente la BeagleBone Black, ses caractéristiques et comment la programmer. Le cours conclut en expliquant la notion de driver de périphérique et comment ils sont conçus sous Linux à l'aide de fichiers.
Yocto une solution robuste pour construire des applications à fort contenu ap...Christian Charreyre
Ce document est la présentation effectuée par CIO Informatique Industrielle lors de la conférence "Yocto et Linux, un couple d'avenir" du salon RTS 2013
Gestion des dépendances dans un projet PHP - Forum PHP 2012Jean-Marc Fontaine
Que ce soit un framework, des modules ou des libraires spécialisées, la plupart des application web modernes utilisent du code tiers. Ce code a son propre cycle de développement. Il faut donc pouvoir intégrer régulièrement les nouvelles versions sans pour autant perdre la maîtrise de son propre cycle. La tâche n'est pas aisée si elle n'a pas été été prévue dès la conception de l'application. Nous verrons différentes approches pour gérer les dépendances dont les gestionnaires de paquet du système d'exploitation, les liens externes dans les dépôts de code, les fichiers PHAR, l'installateur PEAR et le tout récent Composer.
Open Wide accompagne ses clients depuis plus de 10 ans sur le choix des plateformes embarquées et propose de partager son expérience à travers cette conférence organisée par CapTronic. Nous aborderons également l’impact du matériel pour le choix du système d'exploitation.
Open Wide Ingénierie a présenté les différents types de licences existantes ainsi que leurs éventuelles répercussions. Par méconnaissance, ce sujet peut être un frein à l'adoption du libre dans certaines sociétés, il est donc incontournable.
Pour découvrir les autres présentations, rendez-vous sur notre site : http://ingenierie.openwide.fr/References/Conferences-techniques
Article paru en 1992 dans Tribunix, la revue de l'AFUU (Association Française des Utilisateurs d'Unix). Sans doute le premier article en français publié sur Linux !
Article published in 1992 in Tribunix, the magazine of the French Unix User Group. Possibly the first article in French ever published on Linux !
Slides présentés lors du Meetup Aix Marseille Embedded Linux du 16 Juin.
Présentation sur les GNU/Autotools accompagné d'un exemple Hello World basé sur les autotools.
Présentation au logiciel Eclipse et les outils de collaborations dont SVN. La deuxième partie est consacrée à la barre de développeur pour le
navigateur Firefox, on y retrouve les outils les plus utiles.
Créer sa distribution Linux embarqué avec Yocto ou AngströmChristian Charreyre
Création d'une distribution Linux embarqué riche à l'aide des outils de build de distribution Yocto et Angström : slides présentés lors du 5e meetup de Paris Embedded meetup
Ce cours présente la notion de système d'exploitation et en particulier les Linux embarqués qui sont spécialement conçus pour des systèmes embarqués de haut niveau avec des processeurs à usage général (GPP) comme unité de calcul principale. Il explique ensuite comment Linux embarqué démarre, quelles sont les différentes phases et modalités de stockage du système d'exploitation. Enfin, il présente la BeagleBone Black, ses caractéristiques et comment la programmer. Le cours conclut en expliquant la notion de driver de périphérique et comment ils sont conçus sous Linux à l'aide de fichiers.
Yocto une solution robuste pour construire des applications à fort contenu ap...Christian Charreyre
Ce document est la présentation effectuée par CIO Informatique Industrielle lors de la conférence "Yocto et Linux, un couple d'avenir" du salon RTS 2013
Gestion des dépendances dans un projet PHP - Forum PHP 2012Jean-Marc Fontaine
Que ce soit un framework, des modules ou des libraires spécialisées, la plupart des application web modernes utilisent du code tiers. Ce code a son propre cycle de développement. Il faut donc pouvoir intégrer régulièrement les nouvelles versions sans pour autant perdre la maîtrise de son propre cycle. La tâche n'est pas aisée si elle n'a pas été été prévue dès la conception de l'application. Nous verrons différentes approches pour gérer les dépendances dont les gestionnaires de paquet du système d'exploitation, les liens externes dans les dépôts de code, les fichiers PHAR, l'installateur PEAR et le tout récent Composer.
Open Wide accompagne ses clients depuis plus de 10 ans sur le choix des plateformes embarquées et propose de partager son expérience à travers cette conférence organisée par CapTronic. Nous aborderons également l’impact du matériel pour le choix du système d'exploitation.
Open Wide Ingénierie a présenté les différents types de licences existantes ainsi que leurs éventuelles répercussions. Par méconnaissance, ce sujet peut être un frein à l'adoption du libre dans certaines sociétés, il est donc incontournable.
Pour découvrir les autres présentations, rendez-vous sur notre site : http://ingenierie.openwide.fr/References/Conferences-techniques
Article paru en 1992 dans Tribunix, la revue de l'AFUU (Association Française des Utilisateurs d'Unix). Sans doute le premier article en français publié sur Linux !
Article published in 1992 in Tribunix, the magazine of the French Unix User Group. Possibly the first article in French ever published on Linux !
Slides présentés lors du Meetup Aix Marseille Embedded Linux du 16 Juin.
Présentation sur les GNU/Autotools accompagné d'un exemple Hello World basé sur les autotools.
Tracabilite & Identification Automatique par Bernard JEANNE-BEYLOT @JB ThèqueBernard Jeanne-Beylot
Pour une bonne Traçabilité nécessite l'utilisation des Technologies d'Identification Automatique : Code à Barres, Code 2D, Flashcode, RFID, NFC, ...
Une présentation simple de Bernard JEANNE-BEYLOT pour comprendre l'intérêt de ces technologies simples et performantes qui envahissent notre quotidien.
O livro "Networked NonProfits" discute como as organizações sem fins lucrativos podem se beneficiar da conectividade em rede na nova era digital, e como o Brasil tem um ambiente propício para o desenvolvimento de ONGs conectadas devido ao amplo acesso à internet e hábitos de uso.
O documento discute como a fotografia fine art pode ser usada na decoração, descrevendo as tecnologias envolvidas como impressão digital e tintas especiais, e como a fotografia pode trazer refúgio ao lar. Também aborda como os arquivos digitais podem ser usados na pós-produção fotográfica para fins estéticos e decorativos.
O documento discute como a fotografia fine art pode ser usada na decoração, mencionando as tecnologias digitais de impressão e como a fotografia pode trazer estética e plasticidade aos ambientes.
Este documento apresenta o portfólio de trabalhos de Eduardo Lucena de Menezes, incluindo projetos desenvolvidos para as empresas Nike do Brasil, WTB - Transporte e Logística e outras. O portfólio contém vários catálogos esportivos, catálogos de skate e cultura esportiva, além de designs para cartões, folders, papel timbrado e sites para a WTB.
Ozone in the stratosphere protects the Earth from harmful UV rays but its concentration is being reduced by ozone-depleting pollutants like CFCs and NOx. CFCs were commonly used in aerosol sprays and refrigerants until they were banned, but their effects will persist for a long time. When CFCs and NOx reach the stratosphere, their breakdown releases chlorine and nitrogen atoms that catalyze the destruction of ozone molecules, reducing the protective ozone layer. Alternatives to CFCs without chlorine, like HFCs and HCFCs, have been developed to prevent further ozone depletion.
Recorded on September 26, 2013 - This webinar, intended for community workers, gives information on maximizing income and benefits for Ontario Disability Support Plan (ODSP) recipients approaching 65. Topics covered include ODSP after 65, senior's pensions and rent subsidies, Canada Pension Plan (CPP) early retirement benefits, income fluctuations, and Old Age Security (OAS) .
Watch at:
http://yourlegalrights.on.ca/webinar/odsp-and-aging
OAS 10gR3 (32 bit) Installation on Oracle Linux 5chetanpatil1984
The document provides step-by-step instructions for installing Oracle Application Server 10g Release 3 on a Red Hat Enterprise Linux 5 64-bit system. It describes downloading binaries, copying libraries, running the installer, configuring the installation, applying patches, and resolving known issues during the configuration process. The installation is completed and configuration steps are run before logging in to test the new Oracle Application Server installation.
This document summarizes the Department of Human Development and Education at the Organization of American States (OAS). It provides the vision, mission, history, reach, recognition, target audiences, products, and partners of the Department. The Department aims to leverage technology to create learning opportunities, promote collaboration, and generate solutions for education and development in the Americas through online courses, networks, and technical cooperation missions between institutions. It has trained over 30,000 participants across 34 OAS member states.
Villa Pehuenia se encuentra en el norte de la Patagonia Argentina, a 310 km de la capital de la provincia de Neuquén. Es un pueblo de 700 habitantes conocido por sus bosques milenarios de araucarias. Se puede llegar por varias rutas provinciales desde Zapala u otras ciudades cercanas. Villa Pehuenia ofrece servicios turísticos como hospedaje, restaurantes, excursiones y actividades relacionadas con la naturaleza.
Dificuldades Diagnosticas em PAAF de mama - Marilia Cechellamcechella
Este documento discute as dificuldades diagnósticas em citologia mamária, incluindo lesões benignas que podem apresentar características de malignidade e vice-versa. Lesões como fibroadenomas, alterações proliferativas intraductais e esteatonecrose podem ter hipercellularidade ou atipias nucleares. Condições inflamatórias e alterações induzidas por tratamento também podem causar atipias. Alguns carcinomas como o lobular apresentam atipias leves, enquanto carcinomas tubulares têm baixo grau de atipia.
Les solutions libres pour les systèmes embarquésAlexandre LAHAYE
Les solutions libres ont longtemps été ignorées par l'industrie en raison des divergences entre les contraintes industrielles strictes et les pratiques du développement libre. Par ailleurs, plusieurs reproches étaient formulés contre les logiciels libres : manque de fonctionnalités clés (ex. : temps réel dur), manque de garanties et coûts de support, gestion des licences...Cela a pris des années, mais c'est maintenant acquis et parfaitement connu des acteurs majeurs de l'industrie.
NetBSD évolue constamment avec de nouvelles idées : The AnyKernel, gestionnaire de packages multiplate-formed pkgsrc, outil d'installation de paquet binaire pkgin, NetBSD Desktop project, NetBSD Logical Volume Manager (LVM) .NetBSD Veriexec subsystem, Common Address Redundancy Protocol (CARP) .
Cette conférence présentera NetBSD pour en détailler les points clés à travers sa dernière branche 6
Après avoir conquis le marché des smartphones et tablettes, Android devient incontournable dans le domaine industriel. Son utilisation pour la conception de solutions embarquées industrielles soulève toutefois des problématiques techniques spécifiques : customisation de l'OS, développement de pilotes de périphériques, capacité à répondre à des contraintes temps réel.
S'appuyant sur son expertise des technologies Linux embarqué, Open Wide Ingénierie a accompagné avec succès la réalisation de nombreux systèmes sur mesure. Les experts du pôle Mobilité et Multimédia partage leur expérience à travers cette présentation en abordant les sujets techniques indispensables avant de migrer vers Android.
Présentation effectuée au Meetup 24 Programmez (5 Avril 2022) par Christophe Villeneuve sur "Infrastructure as code Drupal".
Cette présentation aborde les rappels de l'IaC (infrastructure as code), comment l'utilisé avec le CMS Drupal et déployé automatiquement le contenu et les évolutions dans l'IaC.
Ce document est extrait de ma formation “Android - programmation avancée”.
La formation aborde les thèmes suivants : les services, les fournisseurs de contenu, les capteurs, la localisation et évidement le NDK.
Les workshops sont effectués sous Android Studio.
This document discusses building a real-time (RT) image using Yocto Project. It provides an overview of Yocto and real-time Linux options like PREEMPT_RT and Xenomai. It describes extending Yocto recipes and layers to add support for building RT kernels and images for hardware like Raspberry Pi that can run real-time applications. The document references resources for the Yocto meta-xenomai layer and using Xenomai with Yocto to build real-time enabled embedded Linux images.
This document discusses integrating the openPOWERLINK industrial Ethernet protocol stack with the Xenomai real-time Linux subsystem. It provides background on POWERLINK and Xenomai, describes a proof of concept implementation using Xenomai's RTnet networking stack, and evaluates the performance compared to using the PREEMPT_RT Linux kernel patch. While not yet stable enough for industrial use, the work integrates openPOWERLINK with Xenomai's real-time capabilities and performs better than PREEMPT_RT in initial testing. Future work is needed to further optimize and test the stack.
Les technologies Open Source pour les objets connectésAlexandre LAHAYE
Des téléphones aux vêtements, en passant par des capteurs industriels, les objets connectés envahissent notre quotidien, mobilisent des nombreux industriels et génèrent de nouveaux enjeux techniques. Cette conférence a réuni un panel de professionnels sur Paris et Toulouse qui ont pu découvrir différentes solutions Open Source pour les objets connectés et entendre des témoignages d'industriels. Nous vous invitons à télécharger les présentations de cette conférence.
Les technologies Open Source pour les objets connectésAlexandre LAHAYE
Des téléphones aux vêtements, en passant par des capteurs industriels, les objets connectés envahissent notre quotidien, mobilisent des nombreux industriels et génèrent de nouveaux enjeux techniques. Cette conférence a réuni un panel de professionnels sur Paris et Toulouse qui ont pu découvrir différentes solutions Open Source pour les objets connectés et entendre des témoignages d'industriels. Nous vous invitons à télécharger les présentations de cette conférence.
OPEN WIDE : L’open source pour les systemes embarques Temps reelAlexandre LAHAYE
Conférence Open Wide - Avril 2012 : L'Open Source pour les systèmes embarqués temps réel
Cette troisième édition organisée à Paris et Toulouse a réuni pas moins de 140 personnes au total et fait salle pleine à Toulouse avec 110 personnes ! Les participants ont pu découvrir les différentes solutions pour développer des systèmes embarqués temps réel en environnement Open Source.
Pour découvrir les autres présentations, rendez-vous sur notre site : http://ingenierie.openwide.fr/References/Conferences-techniques
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...Horgix
This is the slide deck of a talk by Alexis "Horgix" Chotard and Laurentiu Capatina presented at the MongoDB Paris User Group in June 2024 about the feedback on how PayFit move away from a monolithic hell of a self-hosted MongoDB cluster to managed alternatives. Pitch below.
March 15, 2023, 6:59 AM: a MongoDB cluster collapses. Tough luck, this cluster contains 95% of user data and is absolutely vital for even minimal operation of our application. To worsen matters, this cluster is 7 years behind on versions, is not scalable, and barely observable. Furthermore, even the data model would quickly raise eyebrows: applications communicating with each other by reading/writing in the same MongoDB documents, documents reaching the maximum limit of 16MiB with hundreds of levels of nesting, and so forth. The incident will last several days and result in the loss of many users. We've seen better scenarios.
Let's explore how PayFit found itself in this hellish situation and, more importantly, how we managed to overcome it!
On the agenda: technical stabilization, untangling data models, breaking apart a Single Point of Failure (SPOF) into several elements with a more restricted blast radius, transitioning to managed services, improving internal accesses, regaining control over risky operations, and ultimately, approaching a technical migration when it impacts all development teams.
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Open Wide : Les outils pour le développement des systemes embarques
1. Outils de développement pour Linux embarqué
Pierre FICHEUX
pierre.ficheux@openwide.fr
Thomas MONJALON
thomas.monjalon@openwide.fr
Mars 2011
Outils de développement Linux 1
embarqué
2. Programme
● Présentation d'Open Wide
● Rappels sur l'architecture d'un OS Linux
embarqué
● Briques de base: noyau Linux, Busybox, GCC
● Environnements de « production »: Buildroot,
OpenEmbedded, OpenWrt
● Mise au point: GDB/KGDB
● Instrumentation: LTTng, Ftrace
● QEMU
Outils de développement Linux 2
embarqué
3. Présentation Open Wide
● SSII/SSLL créée en septembre 2001 avec Thales
et Schneider
● Indépendant depuis 2009
● Environ 90 salariés sur Paris et Lyon
● Industrialisation de composants open source
● Quatre activités :
– OW : système d'information
– OW outsourcing: hébergement
– OW ingénierie: informatique industrielle
– OW technologies: composants Java
Outils de développement Linux 3
embarqué
6. Architecture de Linux 2/2
● Les éléments fondamentaux :
– Le noyau: en théorie, interface unique avec le
matériel, API de programmation spécifique
(modules Linux)
– Le «root filesystem» (root-fs): les commandes et
fichiers système, communs à (presque) toutes les
versions d'UNIX (API standard => POSIX)
– Un système Linux est obligatoirement
l'association noyau + root-fs
● Embarquer Linux = optimiser le noyau +
construire un root-fs léger
Outils de développement Linux 6
embarqué
7. Linux et les outils
● La structure de Linux est complexe :
– 2 espaces de mémoire
– Multi plateforme
● Cela rend difficile la disponibilité de certains
outils par rapport à d'autres environnements
RTOS (OS21, VxWorks, ...)
● L'approche open source ne simplifie par
forcément les choses :
– Parfois peu de documentation
– Foisonnement d'outils spécialisés
– Nécessite un effort de mise en place
Outils de développement Linux 7
embarqué
9. Noyau Linux
● Première version 0.01 en septembre 1991
(environ 50 Ko de code compressé)
● Dernière version: 2.6.38 (75 Mo de code
compressé)
● 26 architectures officiellement supportées
● Qualité du support variable => nécessité de
« patch » externes pour certaines architectures
(ARM, PowerPC, SH4, ...) et surtout certaines
cartes
● Difficulté de portage => pas de normalisation
pour l'ajout d'une carte pour certaines
architectures (ex: ARM)
● Nombreuses versions de constructeurs hors du
« mainline »
Outils de développement Linux 9
embarqué
10. Busybox
● GNU/Linux basé sur « coreutils » est trop
volumineux pour l'embarqué
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 877480 21 mai 2010 /bin/bash
● Busybox remplace la majorité des commandes
Linux par des versions « réduites »
$ ls -l /bin/busybox
-rwsr-xr-x 1 root root 670856 15 mars 09:45 /bin/busybox
● 95 % des OS Linux embarqués utilisent Busybox
● Simple, léger, portable
● Diffusé sous licence GPLv2
● Pas vraiment un « outil » mais un composant
incontournable !
Outils de développement Linux 10
embarqué
11. GCC (toolchain) 1/5
● Un point très complexe (après le noyau) !
● Nécessité de construire une chaîne « croisée » :
– GCC
– Binutils (as, ld, ...)
– Dépendances avec le noyau (system calls, ...)
=> erreur « Kernel too old »
– Choix d'une libC => Glibc, uClibc, Eglibc, ...
– GDB
– Toute autre bibliothèque utilisée => libstdc+
+
– Compilateur hôte
Outils de développement Linux 11
embarqué
12. GCC (toolchain) 2/5
● Interaction entre la libC et le
noyau Linux Kernel
– Appels systèmes (nombre,
définition)
Kernel headers
– Constantes
– Structures de données, etc. C Library
● Compiler la libC – et certaines
applications - nécessite les en- Applications
tête du noyau
● Disponibles dans <linux/...> et <asm/...> et
d'autres répertoires des sources du noyau
(include, ...)
Outils de développement Linux 12
embarqué
13. GCC (toolchain) 3/5
● Numéro des system calls, dans <asm/unistd.h>
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
● Définition de constantes dans <asm/generic-
fcntl.h>, inclus par <asm/fcntl.h>, inclus par
<linux/fcntl.h>
#define O_RDWR 00000002
● Structures de données dans <asm/stat.h>
struct stat {
unsigned long st_dev;
unsigned long st_ino;
[...]
};
Outils de développement Linux 13
embarqué
14. GCC (toolchain) 4/5
● Utiliser un compilateur binaire :
– ELDK: http://www.denx.de/wiki/DULG/ELDK
– Code Sourcery:
http://www.codesourcery.com/sgpp/lite/arm/portal/rel
ease644
● Installation simple
● Support (payant) possible
● Configuration connue => support par les forums
● Par contre:
– Version des composants figées
– Choix libC limité
Outils de développement Linux 14
embarqué
15. GCC (toolchain) 5/5
● Construire un compilateur
– Crosstool => obsolète
– Crosstool-NG => assez complexe à prendre
en main
– Buildroot / OpenEmbedded (voir plus loin) =>
uClibc
● Aucun ou n'est « plug and play »
● La mise au point peut prendre des jours, voire
plus !
Outils de développement Linux 15
embarqué
16. Outils de création de
distribution
Outils de développement Linux 16
embarqué
17. Création d’une distribution
● Utiliser une produit d’éditeur (Wind River, MV,
…) => €€€
● Adapter une distribution Linux classique
– Limité au niveau matériel
– Empreinte mémoire importante
● Créer la distribution « from scratch »
– Complexe
– Difficile à industrialiser: gestion des
dépendances et des évolutions
● Utiliser un outil de génération : Buildroot,
OpenEmbedded, OpenWrt, LTIB
Outils de développement Linux 17
embarqué
18. Principes des outils de
génération
● Un « moteur » crée la distribution à partir des
sources des composants adaptés en appliquant
des « patch »
● Ne fournit pas les sources: uniquement les patch
et les règles de production prenant en compte
les dépendances :-)
● Peut produire la chaîne croisée
● Produit la distribution sous diverses formes
– Image du bootloader
– Noyau Linux (zImage, uImage)
– Image de root-filesystem en EXT2, JFFS2,
CRAMFS, TAR, CPIO, ...
Outils de développement Linux 18
embarqué
19. Quelque outils disponibles
● OpenEmbedded
– Moteur écrit en Python
– Très puissant mais lourd
– Basé sur des fichiers de configuration
● Buildroot
– Au départ un démonstrateur pour uClibc
– Désormais un véritable outil, bien maintenu !
● OpenWrt
– Dérivé de BR
– Orienté vers les IAD (Internet Access Device)
● Autres: LTIB, PTXdist, ...
Outils de développement Linux 19
embarqué
20. Buildroot, histoire
● Lié au projet uClibc (micro-C-libc) : libC plus
légère que la Glibc
● But initial: produire des images de test de uClibc
● Moteur basé sur des fichiers Makefile et des
scripts-shell
● Par défaut, utilise Busybox
● Outil de configuration utilise le langage Kconfig
● Produit également la chaîne de compilation
(uniquement basée sur uClibc !)
● Pas de version « officielle » avant 2009
Outils de développement Linux 20
embarqué
21. Buildroot aujourd’hui
● Repris en 2009 par Peter Korsgaard et Thomas
Petazzoni
● Une version officielle tous les 3 mois:
2009.02, ..., 2011.02
● Projet géré sous Git
● Documentation améliorée
● Plus de 300 composants adaptés
● Support CPU x86, ARM, PowerPC, SH4, …
● Il est assez « simple » d’ajouter un support de
carte...si l’on connait bien le Makefile et Kconfig
Outils de développement Linux 21
embarqué
22. Using Buildroot « in a nutshell »
● Télé-charger depuis http://buildroot.uclibc.org
● Extraire l’archive
● Configurer par make menuconfig
● Compiler par make
● Le résultat est dans le répertoire output/images
– Bootloader (U-Boot)
– Noyau Linux
– Image(s) du root-filesystem
● La chaîne de compilation dans output/staging
Outils de développement Linux 22
embarqué
23. Configuration de Buildroot
● Type de CPU + variante, ex: arm puis arm920t
● Options de la cible
● Choix de la chaîne de compilation: interne
(uClibc) ou externe (Glibc, Eglibc, ...), Crosstool-
NG
● Composants de la distribution (répertoire
package)
● Formats des images du root-filesystem
– JFFS2, CRAMFS, SQUASHFS (flash)
– EXT2, CPIO (ramdisk)
– TAR (NFS Root)
● Noyau Linux et bootloader (non compilés par
défaut)
Outils de développement Linux 23
embarqué
24. OpenEmbedded
● Une « généralisation » de l'approche utilisée
dans BR
● Utilise un moteur écrit en Python (bitbake) et un
ensemble de règles utilisant un principe
d'héritage => « recipe » (recette)
● Pas d'interface de configuration
● Processus lourd => plusieurs heures pour la
première compilation (environ 30mn pour BR)
● TRES puissant, recommandé dans le cas ou l'on
gère un grand nombre de configurations
● Gère la notion de paquet binaire, contrairement
à BR
Outils de développement Linux 24
embarqué
25. Mise au point / instrumentation
Outils de développement Linux 25
embarqué
26. Mise au point ou
instrumentation ?
● Mise au point: résolution d'un problème de
fonctionnement
– Valgrind: pour problèmes de mémoire
– GDB / KGDB
– strace / ltrace
– Analyse de crash (LKCD / Ksymoops)
● Instrumentation: analyse préventive, profiling
– Traces en espace noyau: LTTng, Ftrace, etc.
– Profiling OProfile (noyau/utilisateur)
– Instrumentation « permanente » du système ?
Outils de développement Linux 26
embarqué
27. Mise au point en espace
utilisateur
● Syslog: indispensable au suivi correct des traces
d'un système. Version améliorée avec Rsyslog
(serveur de traces, SQL, ...)
● Valgrind: exécution du programme dans une
« machine virtuelle » => Pas de recompilation
mais performances dégradées
– Solutions propriétaires: Purify (IBM), Insure++
=> recompilation
– Voir démonstration dans Debug/Valgrind
● strace / ltrace: trace des appels systèmes et
bibliothèques. Rustique mais efficace, filtrage
des appels nécessaires.
● GDB
Outils de développement Linux 27
embarqué
28. GDB
● Mode distant (remote) basé sur un protocole
standard « remote protocol » développé pour
GDB
● Utilisation d’un agent sur la cible et d’un
débogueur croisé sur l’hôte
– Agent gdbserver pour espace utilisateur
– QEMU et/ou KGDB pour l’espace noyau
● D’autres agents intégrés dans des sondes JTAG
(ex: BDI3000 Abatron => bdiGDB, OpenOCD)
● Ces outils peuvent être intégrés à des IDE
(Eclipse, QtCreator)
Outils de développement Linux 28
embarqué
29. Mise au point à distance,
principe
Outils de développement Linux 29
embarqué
30. Espace utilisateur : gdbserver
● Cas le plus simple pour le développement
applicatif
● Fonctionne avec un lien Ethernet ou série RS-
232 entre cible et hôte
● Exemple :
# gdbserver 192.168.3.109:9999 myprog cible
Process myprog created; pid = 12810
$ arm-linux-gdb myprog hôte
GNU gdb Red Hat Linux (6.7-2rh)
...
(gdb) target remote 192.168.3.50:9999
Remote debugging using 192.168.3.50:9999
Outils de développement Linux 30
embarqué
31. KGDB 1/3
● Historiquement développé par LynsysSoft, repris
par Wind River
● Peu de mise à jour sur la version « libre »
● Patch finalement accepté dans Linux
« mainline » pour 2.6.26 => Kernel
hacking/KGDB:
● Utilisation de vmlinux (non compressé) sur le
poste de développement
● Options coté cible : Port série (cible)
– kgdboc=ttyAMA0,115200
– kgdboe=@192.168.0.1/,@192.168.0.2
– kgdbwait
Outils de développement Linux 31
embarqué
32. KGDB 2/3
● ATTENTION: kgdboe n'est plus mainline en l'état
● Coté GDB hôte :
$ gdb vmlinux
...
(gdb) b sys_sync => arrêt sur sync
(gdb) b panic
(gdb) target remote /dev/ttyS0
Port série (hôte)
Outils de développement Linux 32
embarqué
33. KGDB 3/3
● Mise au point de modules .ko => cas le plus
fréquent
● Insérer le module par modprobe ou insmod
● Obtenir les valeurs des sections :
$ cat /sys/module/helloworld/sections/.text
0Xbf000000
● Coté GDB, ajout des adresses des sections
(gdb) add-symbol-file helloworld.ko 0xbf000000 -
s .data 0xbf00052e -s .bss 0xbf000660 -s .rodata
0xbf0000ac
● Debug module_init() avec version spéciale de
GDB => pending breakpoint
(gdb) set solib-search-path
(gdb) b my_module_init
(gdb) Breakpoint 1 (my_module_init) pending.
Outils de développement Linux 33
embarqué
34. Analyse de « OOPS » noyau 1/2
● Voir le fichier Documentation/oops-tracing.txt
● Utiliser si possible une console série pour
enregistrer le oops
● Principe :
– Récupérer la valeur du « program counter »
(EIP) => « unable to handle...at virtual
addresse XXX »
– Grâce au fichier /proc/kallsyms, récupérer le
nom et l'adresse de la fonction incriminée
(souvent indiqué dans le oops)
– Calculer l'adresse de l'instruction par
EIP - adresse_fonction
– Désassembler avec objdump -D (et/ou -S)
pour retrouver la ligne
Outils de développement Linux 34
embarqué
35. Analyse de « OOPS » noyau 2/2
● On utilise GDB sur le noyau courant
● Utiliser /proc/kcore comme fichier core
# gdb vmlinux /proc/kcore
(gdb) add-symbol-file helloworld.ko ...
(gbb) list nom_de_fonction
● Voir la suite sur :
http://www.scribd.com/doc/19294114/Debugging-Kernel-Oops
Outils de développement Linux 35
embarqué
36. LKCD 1/2
● LKCD = Linux Kernel Crash Dump
● Enregistrement des données lors d'un crash
pour analyse « post mortem »
● Au reboot, copie des données sur une partition
dédiée ou bien sur un serveur
● Installation détaillée et test sur :
http://www.dedoimedo.com/computers/lkcd.html#mozTocId759823
Outils de développement Linux 36
embarqué
38. Trace en espace noyau
● Comprendre le comportement du système =>
monitoring
● Analyse de problèmes de performances (pas de
crash) => systèmes temps réel, ou parallèles
● Enregistrement d'une grande quantité de
données => optimisation nécessaire
● Types d'événements enregistrés :
– Appels systèmes
– Fonctions de traitement d'interruption
– Ordonnancement
– Réseau
Outils de développement Linux 38
embarqué
39. LTT: Linux Trace Toolkit
● Utilitaire de trace (statique) le plus célèbre pour
le noyau Linux => patch pour le noyau 2.4
● Travaux publiés en 1998/2000 par Karim
Yaghmour: http://www.linuxjournal.com/article/3829
● Deux parties :
– Enregistrement des données :
$ trace 60 result.dat
– Visualisation texte ou graphique (GTK) :
$ trace result.dat
$ traceview trace.dat
Outils de développement Linux 39
embarqué
40. LTTng, présentation 1/2
● LTTng = nouveau LTT (Mathieu Desnoyers, EP
Montréal, EficiOS), depuis 2005
● Projet très actif, nombreuses publications et
conférences
● Deux parties: enregistrement + visualisation
(LTTv)
● Instrumentation statique basée sur Markers puis
Tracepoints dans le noyau Linux
● Instrumentation dynamique (Kprobes) depuis
2009
● LTTng n’est pas dans le noyau « mainline » =>
patch nécessaire
Outils de développement Linux 40
embarqué
41. LTTng, présentation 2/2
● Architecture portable => fonctionne sur
ARM/OMAP3
● « Per-CPU buffer » => pas de problème de
verrouillage mémoire en SMP
● Trace clock: Lecture directe des « timestamps »
CPU => précision (monotone) mais adaptation
nécessaire sur certains CPU
● Selon l’auteur, il y a peu de modifications sur le
coeur du noyau, donc devrait être « mainline »
● Voir présentations CELF2009 + ELC2010 +
présentation vidéo
Outils de développement Linux 41
embarqué
43. LTTng, conclusions
● Outil puissant, portable
● Communauté dynamique, nombreuses
publications
● Installation / configuration / utilisation complexe
(ajout de points de traces dans le code +
modification fichier XML)
● Toujours pas « mainline »
● Rapprochement avec Ftrace => ex: LTTv en
cours d’adaptation pour utiliser les résultats de
Ftrace (?)
Outils de développement Linux 43
embarqué
44. Ftrace, présentation 1/2
● Initialement « Function Tracer » (2.6.27)
● « Unification » des outils de trace du noyau
● Capable de tracer entre autres : latences, IRQ,
Context switch, graphes de fonctions, etc.
● Possibilité d’ajouter des « plugins »
● Standard dans le noyau:
– valider Kernel hacking/Tracers
– choisir les traceurs dans le menu Tracers
● http://lwn.net/Articles/322666
● Voir Documentation/trace/ftrace.txt
Outils de développement Linux 44
embarqué
45. Ftrace, présentation 2/2
● Interface basée sur DebugFS
# mount -t debugfs nodev /sys/kernel/debug
● Pilotage/configuration par fichier virtuel
● /proc/sys/kernel/ftrace_enabled: active ou
non les traces (1/0)
● Principe :
– Sélectionner le traceur
– Définir un filtre
– Activer/désactiver la trace
– Exploiter le résultat
Outils de développement Linux 45
embarqué
46. Ftrace, principales entrées
● Chemin d’accès relatif à
/sys/kernel/debug/tracing
– available_tracers: traceurs disponibles
(nop, function, function_graph, …)
– current_tracer: traceur courant, contient
une des valeurs précédentes
– tracing_enabled: 1/0
– trace: résultat lisibles (texte)
– buffer_size_kb: taille du tampon circulaire
– available_filter_functions: fonction
traçables => environ 25000 entrées !
– available_events: événements disponibles
Outils de développement Linux 46
embarqué
47. Ftrace, exemple 1/2
● Exemple de pilote mydriver1.ko
● Fonctions open(), read(), write(), release()
=> printk
# echo 'mydriver1_*' > set_ftrace_filter
# cat set_ftrace_filter
mydriver1_release
mydriver1_open
mydriver1_write
mydriver1_read
# echo 1 > tracing_on
Outils de développement Linux 47
embarqué
48. Ftrace, exemple 2/2
# < /dev/mydriver1 ← accès pilote
# cat trace
# tracer: function
#
# TASK-PID CPU# TIMESTAMP
FUNCTION
# | | | | |
bash-6842 [000] 2245367.171290:
mydriver1_open <-chrdev_open
bash-6842 [001] 2245399.996460:
mydriver1_open <-chrdev_open
bash-6842 [001] 2245399.996478:
mydriver1_release <-__fput
Outils de développement Linux 48
embarqué
50. Ftrace, fonctions avancées
● set_ftrace_pid: trace un PID donné
# echo $$ > set_ftrace_pid
# cat trace
# echo -1 > set_ftrace_pid
● function_graph: graphe d’appel des fonctions
– Trace l’entrée et la sortie d’un fonction
– Calcul de temps d’exécution (DURATION)
– Affichage de la hiérarchie des appels par
{ et }
# echo function_graph > current_tracer
# cat trace
Outils de développement Linux 50
embarqué
51. Ftrace, function_graph
●
# CPU DURATION FUNCTION CALLS
● # | | | | | | |
● 1) 1.015 us | _spin_lock_irqsave();
● 1) 0.476 us | internal_add_timer();
● 1) 0.423 us | wake_up_idle_cpu();
● 1) 0.461 us | _spin_unlock_irqrestore();
● 1) 4.770 us | }
● 1) 5.725 us | }
● 1) 0.450 us | mutex_unlock();
● 1) + 24.243 us | } ← délai > 10 µs
● 1) 0.483 us | _spin_lock_irq();
● 1) 0.517 us | _spin_unlock_irq();
● 1) | prepare_to_wait() {
● 1) 0.468 us | _spin_lock_irqsave();
● 1) 0.502 us | _spin_unlock_irqrestore();
● 1) 2.411 us | }
● 1) 0.449 us | kthread_should_stop();
● 1) | schedule() {
Outils de développement Linux 51
embarqué
52. Ftrace, trace_printk() 1/2
● La fonction printk() est très utilisée pour la
mise au point mais très intrusive
– Appel scheduler
– Désactivation IRQ
– Spinlocks
– ...
● La fonction trace_printk() est équivalente
mais utilisable dans tous les contextes:
scheduler, NMI, IRQ => affichage dans trace
● Utilise quelques dizaines de µs au lieu de
quelques ms :)
Outils de développement Linux 52
embarqué
53. Ftrace, trace_printk() 2/2
● Ajout à une fonction:
trace_printk("read foo %d out of bar
%pn", bar->foo, bar);
● Affichage trace :
# TASK-PID CPU# TIMESTAMP FUNCTION
# | | | | |
<...>-10690 [003] 17279.332920: : read foo 10 out of bar
ffff880013a5bef8
● Affichage function_graph :
3) | do_one_initcall() {
3) | /* read foo 10 out of bar ffff88001191bef8 */
3) 4.221 us | }
Outils de développement Linux 53
embarqué
54. Ftrace, trace_marker 1/2
● Accès depuis l’espace utilisateur
# echo hello world > trace_marker
● Visible dans trace
bash-6842 [000] 2245230.244514: 0: hello world
● Utilisation des traces sélectives en espace
utilisateur
req.tv_sec = 0;
req.tv_nsec = 1000;
write(marker_fd, "before nanon", 12);
nanosleep(&req, NULL);
write(marker_fd, "after nanon", 11);
write(trace_fd, "0", 1);
Outils de développement Linux 54
embarqué
55. Frace, trace_marker 2/2
● Résultat avec function_graph
# CPU DURATION FUNCTION CALLS
#| | | | | | |
0) | /* before nano */
0) | kfree() {
0) 0.475 us | __phys_addr();
0) 2.062 us | }
0) 0.608 us | inotify_inode_queue_event();
...
0) | /* after nano */
0) | kfree() {
0) 0.486 us | __phys_addr();
Outils de développement Linux 55
embarqué
56. Ftrace, activation par
programme
● Dans un module on peut insérer :
if (test_for_error())
tracing_off();
● Equivalent à :
# echo 0 > tracing_on
Outils de développement Linux 56
embarqué
57. Ftrace, autres fonctions
● Profiling: function_profile_enabled
● Pile: stack_tracer_enabled
● Dump sur OOPS : ftrace_dump_on_oops
● ...
● Voir :
– http://lwn.net/Articles/365835/
– http://lwn.net/Articles/366796/
– http://lwn.net/Articles/370423/
– Documentation/trace/ftrace.txt
Outils de développement Linux 57
embarqué
58. Résultat de mesure
sched_wakeup
Outils de développement Linux 58
embarqué
59. Ftrace, trace-cmd 1/3
● Interface pour l’utilisation de Ftrace
● Evite de manipuler les entrées dans /sys
● A compiler à partir du dépôt Git
● Voir: http://lwn.net/Articles/341902
● Exemple :
# ./trace-cmd record -e all ls /bin
● Résultat :
# ./trace-cmd report
version = 0.5
cpus=4
trace-cmd-10995 [003] 235302.428904: kmem_cache_alloc:
call_site=ffffffff810df1e4 ptr=0xffff880027585a68 bytes_req=168
bytes_alloc=168 gfp_flags=GFP_KERNEL
Outils de développement Linux 59
embarqué
61. Ftrace, trace-cmd 3/3
# trace-cmd
trace-cmd version 1.1.0-rc1
usage:
trace-cmd [COMMAND] ...
commands:
record - record a trace into a trace.dat file
start - start tracing without recording into a file
extract - extract a trace from the kernel
stop - stop the kernel from recording trace data
reset - disable all kernel tracing and clear the trace buffers
report - read out the trace stored in a trace.dat file
split - parse a trace.dat file into smaller file(s)
listen - listen on a network socket for trace clients
list - list the available events, plugins or options
restore - restore a crashed record
stack - output, enable or disable kernel stack tracing
Outils de développement Linux 61
embarqué
62. Ftrace, conclusions
● Utilisation simple car intégré au noyau mainline
=> multiplateforme
● A la fois dynamique et statique
● Intégré à des extensions comme PREEMPT-RT
● Peu consommateur de ressources => peut
tourner en permanence
– Réglage de buffer_size_kb
– En cas de problème visible on peut sauver le
tampon courant et analyser
– A partir des données on peut tracer des
courbes
Outils de développement Linux 62
embarqué
63. OProfile 1/3
● Approche différente => statistique
● Proche de prof (UNIX) et gprof (GNU/Linux)
● Comptage des fonctions les plus utilisées
● Fonctionne en espace utilisateur et noyau
● Prise en compte du multi-thread pour une
application
● Nécessite des adaptations (simples) si l’on veut
« profiler » une portion précise de code
● http://oprofile.sourceforge.net
Outils de développement Linux 63
embarqué
64. OProfile 2/3
● Démarrage du démon et enregistrement
# opcontrol --start-daemon
# opcontrol --start
./myprog
● Arrêt de l’enregistement
# opcontrol --stop
● Vidage du tampon
# opcontrol --dump
● Arrêt du démon
# opcontrol --stop-daemon
Outils de développement Linux 64
embarqué
65. OProfile 3/3
● Affichage des résultats
$ opreport -l -d
● Sortie en XML
$ opreport -l -d -X > myprog.xml
● Utilisation de XSLT pour formater les données
$ xsltproc oprofile_test.xsl myprog.xml
> myprog.html
Outils de développement Linux 65
embarqué
67. QEMU, domaines d'application
● Émulation de périphériques + hyperviseur KVM
= virtualisation
– exemple : partitionnement de serveur
● Émulation processeur avec TCG (Tiny Code
Generator) = user mode
– exemple : développement d'application
embarquée
● Émulation complète avec TCG = simulation
– exemple : développement de système
embarqué
Outils de développement Linux 67
embarqué
68. QEMU, principe
Simuler du matériel en langage C
● Environnement entièrement logiciel ou
partiellement = cosimulation
● Facilités en environnement logiciel
– accès au fonctionnement interne du processeur
– interaction avec des outils logiciels
Outils de développement Linux 68
embarqué
69. QEMU, usages
● Matériel non disponible : obsolète, trop cher, non
transportable, en développement, SDK...
● Debug système non intrusif (*)
● Tests automatisés avec stimuli extérieurs (*)
● Couverture de test non intrusive (*)
● Arrêt/reprise de session de mise au point
Dans tous les cas, les contraintes, incidents et
doutes matériels n'existent plus.
(*) détaillé plus loin
Outils de développement Linux 69
embarqué
70. QEMU, mise en place (1)
● Existant ?
– processeurs : x86, ARM, MIPS, SH4, PPC,
Microblaze, etc...
– cartes : environ 30 préconfigurations
– périphériques : variés
● Suffisamment complet / proche de la réalité ?
– approche feignante : on ne simule que ce dont
le système a besoin
Outils de développement Linux 70
embarqué
71. QEMU, mise en place (2)
● Besoin ?
● Classification de l'effort restant :
0) le composant est déjà modélisé
1) il existe un modèle proche que l'on adapte
2) le composant n'est pas très important ->
"fake" (exemple : détection obligatoire)
3) le composant est nouveau ou n'a jamais
été modélisé
Outils de développement Linux 71
embarqué
72. QEMU dans le « workflow »
Une fois mis en place,
3 exemples d'utilisations
Outils de développement Linux 72
embarqué
73. QEMU, tests automatisés avec
stimuli extérieurs
● Bus de communication (série, ethernet, USB)
le "tout logiciel" ouvre des possibilités :
● Commandes d'allumage/extinction
● QMP = système de communication
bidirectionnelle au format JSON
– influer sur l'exécution (hotplug, boutons,
défauts matériels...)
– statut et événements (erreurs I/O,
watchdog...)
Outils de développement Linux 73
embarqué
74. QEMU, débusquer une régression (cas
idéal)
● Écriture de scripts de tests au cours du
développement
● Utilisables en intégration continue
car facilement automatisables
– tests à chaque commit
Outils de développement Linux 74
embarqué
75. QEMU, débusquer une régression
(cas réel)
● Régression avérée
– puis écriture du test correspondant
● Heureusement, le programme est versionné avec
Git ou un gestionnaire compatible (svn, hg)
● « git bisect run <script> » trouve le commit
fautif automatiquement
– le script compile, exécute QEMU et détecte l'erreur
– codes de retour du script :
● 0 = OK
● 125 = non testable
● 1–124, 126-127 = régression
● 128-255 = abandon
Outils de développement Linux 75
embarqué
76. QEMU, debug système non intrusif
(1)
● Environnement réel : debug avec sonde JTAG
● Environnement simulé : stub gdb dans Qemu
● GDB ouvre un seul binaire
– bootloader
– noyau
– init
– application bare board
● Application userland nécessite « OS awareness »
– dans ce cas, gdbserver est nécessaire
● N'importe quel front-end GDB est utilisable
Outils de développement Linux 76
embarqué
77. QEMU, debug système non intrusif
(2)
● Serveur pour GDB accessible par l'option « -gdb »
– Raccourci « -Ss » = attente de connexion gdb
sur le port 1234
● Connexion GDB = commande « target remote »
${PREFIX}gdb $BIN
--eval-command="target remote localhost:1234"
--eval-command="hbreak *0x$ADDR"
● Si le programme n'est pas le premier à s'exécuter
au démarrage du système, point d'arrêt matériel :
« hbreak » au lieu de « break ».
ADDR=$(${PREFIX}nm $BIN |
sed -n "s,^([^ ]*).* $FUNC$,1,p")
Outils de développement Linux 77
embarqué
78. QEMU, couverture de test non intrusive
● Particulièrement utile en certification DO-178
● Méthode classique d'analyse de la couverture de
test
– système instrumenté testé sur cible réelle
● Nouvelle approche
– système réel testé sur cible instrumentée
= projet Couverture
● Qemu fournit des traces
● xcov analyse les traces
– synthèse au niveau source ou objet
Outils de développement Linux 78
embarqué
82. Environnement industriel,
besoins
● Chaque projet définit des règles d'organisation
pour améliorer l'efficacité du développement, de
la coordination et du suivi
● Mais cela prend du temps et rarement suffisant
● Certains outils sont indisponibles ou mal connus
● Peu de processus sont automatisés
● L'organisation, l'automatisation et la fourniture
d'outils ne sont pas dans le cœur de métier
Il faut capitaliser sur la construction d'un
environnement projet efficace
Outils de développement Linux 82
embarqué
83. Environnement industriel,
concept
}
intégration
applis métier
applis std
environnement
noyau
développement
bootloader
matériel
versions
temps
outils
validation configurations
tests
métriques
spécifications
documents
suivi
Outils de développement Linux 83
embarqué
84. Environnement industriel,
apports
● Création rapide de projets types
● Collecte des licences
● Visualisation macroscopique de l'état du projet
● Visualisation de métriques et évolutions
● Releases et reproductibilité
● Profils de configurations alternatives (ex : debug)
● Assistance à la documentation (ex : changelog)
● Aggrégation et classification de documents
● Classification des outils compatibles
● Intégration d'outils
● Campagnes de validation
Outils de développement Linux 84
embarqué
85. Bibliographie 1/2
● Linux embarqué version 3 :
http://www.eyrolles.com/Informatique/Livre/linux-embarque-9782212124521
● Busybox: http://www.busybox.net
● Buildroot: http://buildroot.uclibc.org
● OE: http://www.openembedded.org
● KGDB: https://kgdb.wiki.kernel.org
● Ftrace :
– http://lwn.net/Articles/365835/
– http://lwn.net/Articles/366796/
– http://lwn.net/Articles/370423/
– Documentation/trace/ftrace.txt
Outils de développement Linux 85
embarqué
86. Bibliographie 2/2
● Qemu : http://wiki.qemu.org
● Contribuer à Qemu :
http://ingenierie.openwide.fr/content/download/2
472/18834/file/Qemu_article_technique.pdf
● Couverture : http://www.projet-couverture.com
● Fully automated bisecting :
https://lwn.net/Articles/317154
Outils de développement Linux 86
embarqué