J.-M Friedt. FEMTO-ST/département temps-fréquence. jmfriedt@femto-st.fr. transparents à jmfriedt.free.fr. 14 janvier 2016



Documents pareils
ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

GPA770 Microélectronique appliquée Exercices série A

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Architecture des ordinateurs

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Compilation (INF 564)

Introduction au langage C

Conférence sur les microcontroleurs.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Systèmes Embarqués Libres

Développement d une carte à processeur linux

UE C avancé cours 1: introduction et révisions

ST50 Projet de fin d études Noyau Linux et multi-processeur pour une plateforme embarquée

Carte ARDUINO UNO Microcontrôleur ATMega328

Programmation C. Apprendre à développer des programmes simples dans le langage C

Rappels d architecture

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

IV- Comment fonctionne un ordinateur?

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

ELP 304 : Électronique Numérique. Cours 1 Introduction

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Exécutif temps réel Pierre-Yves Duval (cppm)

Réalisation d un réseau de capteurs de température sans fil basé sur le protocole ZigBee

SYSTEME DE PALPAGE A TRANSMISSION RADIO ETUDE DU RECEPTEUR (MI16) DOSSIER DE PRESENTATION. Contenu du dossier :

Conception de circuits numériques et architecture des ordinateurs

PIC : COURS ASSEMBLEUR

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Cours 1 : La compilation

Programmation en langage C

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Architecture matérielle des systèmes informatiques

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Prototypage électronique

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Conception et développement d'un périphérique USB pour le simulateur de vol Microsoft Flight Simulator

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Les liaisons SPI et I2C

Introduction à l algorithmique et à la programmation M1102 CM n 3

Linux embarqué: une alternative à Windows CE?

machine cible machine hôte architecture cible différente de la machine hôte

Informatique Industrielle

La programmation des ATMEL AVR

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

CM2 L architecture MIPS32

La carte à puce. Jean-Philippe Babau

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Ordinateurs, Structure et Applications

Analyse de sécurité de logiciels système par typage statique

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

PIC EVAL Dev Board PIC18F97J60

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Fiche technique CPU 315SN/PN (315-4PN33)

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Configuration de TCPIPconfig.h

Programmer en JAVA. par Tama

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Contrôle d accès UTIL TP N 1 découverte

Temps Réel. Jérôme Pouiller Septembre 2011

Plan du cours. Historique du langage Nouveautés de Java 7

ANALYSE TRAMEs LIAISON SERIE

JOG : une approche haut niveau des systèmes embarqués via Armadeus et Java

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Algorithmique et Programmation, IMA

Informatique Générale

OS Réseaux et Programmation Système - C5

Sélection du contrôleur

PROGRAMMATION D'UN MICROCONTRÔLEUR

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Débuter avec PsoC ou PsoC niveau 0

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Programmation C. J.-F. Lalande. 15 novembre 2012

Manipulations du laboratoire

Gestion de la mémoire

Construction et sécurisation d'un système Linux embarqué. Frédéric AIME

ACTIVITÉ DE PROGRAMMATION

Fiche technique CPU 314SC/DPM (314-6CG13)

Programmation système I Les entrées/sorties

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Architecture ordinateur. Organisation mémoire et Entrées/Sorties

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

UE Programmation Impérative Licence 2ème Année

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage:

COMPARAISONDESLANGAGESC, C++, JAVA ET

Cours 7 : Programmation d une chaîne d acquisition

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Flowcode - Mode d'emploi

Initiation. àl algorithmique et à la programmation. en C

Transcription:

Informatique FEMTO-ST/département temps-fréquence jmfriedt@femto-st.fr transparents à jmfriedt.free.fr 14 janvier 2016 1 / 21

16 séances/3 h Plan des cours 1 registres de config d un uc, lecture de datasheet, cross compilation, bootloader, flasher application d un blink sur ATMega, optimisations du C (TP1 de Atmega) 2 C pour microcontroleurs : volatile, tailles de variables, optimisations, C v.s asm, acces aux registres, *(type*)addr=val ;, interruptions, timer, péripheriques d un uc application aux périphériques matériels & interruptions de ATMega (TP2 de Atmega) 3 du 8 au 32 bits : exploitation de bibliothèques, et en particulier libc création de sa toolchain ARM Cortex M3, newlib pour STM32 (stubs) 4 FreeRTOS, RTEMS, environnements executifs, TinyOS TP FreeRTOS/RTEMS sur STM32 5 buildroot pour A13 linux sur un systeme embarque, exploitation du meme programme sur A13 et PC, aspects utilisateur 6 unix sur système embarqué, aspects communication sur réseau IP, endianness TP TCP/IP sur Coldfire 7 unix sur système embarqué, aspects développeur, accès au matériel kernel module sur A13 Exposé d un binôme : 10 minutes+5 minutes (5-6 transparents) 2 / 21

1 qu est-ce qu un microcontrôleur? 2 comment appréhender un nouveau microcontrôleur? lecture d une datasheet 3 quels outils pour travailler sur un microcontrôleur? Quelques exemples de systèmes embarqués grand public. 3 / 21

1 qu est-ce qu un microcontrôleur? 2 comment appréhender un nouveau microcontrôleur? lecture d une datasheet 3 quels outils pour travailler sur un microcontrôleur? Quelques exemples de systèmes embarqués (Renesas), et choix des composants numériques associés. 4 / 21

Qu est-ce qu un microcontrôleur? une unité de calcul unité arithmétique et logique chargée de décoder des instructions et de les appliquer sur des opérandes Architecture du processeur 8-bits Atmega 32U4 5 / 21

Qu est-ce qu un microcontrôleur? des périphériques, souvent intégrés au sein de la même puce (compteur, générateur de signaux de communication...) Architecture du processeur 8-bits Atmega 32U4 6 / 21

Qu est-ce qu un microcontrôleur? en entrée : alimentation, horloges (circuit synchrone), tensions de référence Architecture du processeur 8-bits Atmega 32U4 7 / 21

Qu est-ce qu un microcontrôleur? en sortie : des signaux numériques (0/1=mass/alimentation) ou analogiques, des signaux périodiques Architecture du processeur 8-bits Atmega 32U4 8 / 21

Qu est-ce qu un microcontrôleur? interaction avec le monde extérieur au travers de bus de communication Architecture du processeur 8-bits Atmega 32U4 9 / 21

Qui fait quoi? les registres Liaison entre ALU et les périphériques : adressage 10 / 21

Qui fait quoi? les registres Comment connaître la position de chaque registre et sa fonction? 11 / 21

Qui fait quoi? les registres Comment connaître la position de chaque registre et sa fonction? La datasheet fournit la description complète du processeur. Ici, Atmel, 8-bit Microcontroller with 16/32K Bytes of ISP Flash and USB Controller ATmega16U4 & ATmega32U4, disponible à http://www.atmel.com/images/doc7766.pdf 12 / 21

Masques 1 OU : mettre les bits à 1 ( OU 1 = 1) 2 ET : mettre les bits à 0 ( AND 0 = 0) 3 fabriquer le masque du ET :!(1 N) met des 1 sur tous les bits sauf le Nème 4 XOR : intervertir les bits (X XOR 1 =!X alors que X XOR 0 = X) Tables de vérité : OR 0 1 0 0 1 1 1 1 AND 0 1 0 0 0 1 0 1 XOR 0 1 0 0 1 1 1 0 13 / 21

Logiciel embarqué Absence de système d exploitation le programme commence par une initialisation (pile, variables, périphériques) le programme se poursuit par une boucle infinie while (1) {...} le processeur ne doit jamais être laissé sans instruction à exécuter 14 / 21

Lien entre le logiciel et le matériel 1 tout périphérique communique avec un microprocesseur au travers de 3 bus : data, address et control Le bus prend son origine dans le processeur mais est accessible à l extérieur. D GND M16# IO16# IRQ10 IRQ11 IRQ12 IRQ15 IRQ14 DACK0# DRQ0 DACK5# DRQ5 DACK6# DRQ6 DACK7# DRQ7 +5 MASTER16# GND GND 0 19 C GND SBHE# LA23 LA22 LA21 LA20 LA19 LA18 LA17 MRDC# MWTC# SD08 SD09 SD10 SD11 SD12 SD13 SD14 SD15 KEY A CHCHK# SD7 SD6 SD5 SD4 SD3 SD2 SD1 SD0 CHRDY AEN SA19 SA18 SA17 SA16 SA15 SA14 SA13 SA12 SA11 SA10 SA09 SA08 SA07 SA06 SA05 SA04 SA03 SA02 SA01 SA00 GND 1 32 B GND RESDRV +5 IRQ9 5 DRQ2 12 ENDXFR# +12 KEY SMWTC# SMRDC# IOWC# IORC# DACK3# DRQ3 DACK1# DRQ1 REFRESH# CLK IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 DACK2# TC BALE +5 OSC GND GND Bus PC104 (photo http://www.arcom.com/pc104-xscale-titan.htm) 15 / 21

#include <stdio.h> #include <stdlib.h> #include <sys/io.h> Relation matériel-logiciel : ISA int main(int argc,char **argv) {unsigned char val; ioperm(0x378,3,1); // autorisation d acces if (argc==1) {val=0xff;printf("%s val\n",argv[0]);} else val=atoi(argv[1]); outb(val,0x378);sleep(1); } composant2 composant 74138 composant3 (ADC) CS# composant4 ALE E# 74688 adresse carte (constante) P=Q# A3 A9 A0 A2 74574 D0 D7 Schéma générique de connection d un composant à un bus Différence entre Motorola et Intel : dans le premier cas tout est mémoire, dans le second cas distinction entre in/out et mov [?]. 16 / 21

Périphériques matériels : GPIO General Purpose Input Output : entrée-sortie numérique Un latch, aussi appelé GPIO, mémorise son entrée sur un coup d horloge ou un niveau de commande Fonction souvent partagée avec une autre fonctionnalité (à sélectionner à l initialisation) un port aime généralement absorber du courant un port est bidirectionnel : sa direction est définie par le programmeur un port en entrée doit avoir un état connu. Un interrupteur ne reste pas flottant : résistances de tirage. 17 / 21

Périphériques matériels : timers Un microprocesseur est un composant numérique synchrone : base de temps cadence toutes les opérations Des compteurs internes sont configurés pour diverses tâches : déclencher périodiquement un évènement (e.g. ordonnanceur préemptif de Linux (kernel/timer.c signed long sched schedule_timeout(signed long timeout) { struct timer_list timer; unsigned long expire; switch (timeout) {case MAX_SCHEDULE_TIMEOUT: schedule(); goto out; default: if (timeout < 0) {dump_stack(); current->state = TASK_RUNNING; goto out; } } expire = timeout + jiffies; setup_timer_on_stack(&timer, process_timeout, (unsigned lo mod_timer(&timer, expire, false, TIMER_NOT_PINNED); schedule();... } 18 / 21

Périphériques matériels : timers Un microprocesseur est un composant numérique synchrone : base de temps cadence toutes les opérations Des compteurs internes sont configurés pour diverses tâches : déclencher périodiquement un évènement (e.g. ordonnanceur préemptif de Linux (kernel/timer.c déclencher une évènement sur un GPIO sans contrôle explicite du logiciel (oscillation périodique, largeur d impulsion PWM) capturer un évènement (Input Capture) pour le dater commander l activation d autres périphériques 19 / 21

Outils de compilation Toutes nos applications exploiteront gcc pour convertir un code source en C vers un binaire exécutable sur la cible la cible n est pas basée sur l architecture x86 d intel du PC cross-compilation gcc est exploitable pour à peu près toutes les architectures : liste des cibles supportées par gcc 1 * Alpha * ARM * Atmel AVR * Blackfin * HC12 * H8/300 * IA-32 (x86) * x86-64 * IA-64 * Motorola 68000 * MIPS * PA-RISC * PDP-11 * PowerPC * R8C/M16C/M32C * SPU * System/390/zSeries * SuperH * SPARC * VAX un outil unique à maîtriser pour s affranchir des limitations sur le logiciel 1. http://www.gnu.org/software/gcc/backends.html 20 / 21

Outils de compilation le bootloader se charge de réceptionner les octets émis par le PC à destination du microcontrôleur et de les écrire en mémoire un programme spécifique sur le PC fournit les données dans le format attendu (programmeur) binutils fournit les outils de conversion entre formats : objdump et objcopy Mise en pratique Premier pas sur l Atmega 32U4 Outils : sous Debian/GNU Linux, paquets avrdude, gcc-avr et avr-libc Carte : Olimex 21 / 21