Architecture des Systèmes à Processeur



Documents pareils
PIC EVAL Dev Board PIC18F97J60

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)

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

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Démarrer et quitter... 13

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

Leçon 1 : Les principaux composants d un ordinateur

Linux embarqué: une alternative à Windows CE?

Les sauvegardes de l ordinateur

Tsoft et Groupe Eyrolles, 2005, ISBN :

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

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

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

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

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 :

Ordinateurs, Structure et Applications

Conférence sur les microcontroleurs.

Tropimed Guide d'installation

Janvier Entretien de l ordinateur

Structure de base d un ordinateur

Cours Informatique 1. Monsieur SADOUNI Salheddine

REALISATION d'un. ORDONNANCEUR à ECHEANCES

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

NOTICE GPSTA1 I. DESCRIPTION II. ACCESSOIRES. J. R International - Eclats Antivols. 2014

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TwinCAT Backup. Mise en œuvre rapide

Vidéo HDTV. 1080p DVI HD-SDI. Blu-ray. HDTV La technologie d enregistrement qui vous touche

Ladibug TM 2.0 Logiciel de présentation visuel d'image Manuel de l utilisateur - Français

Windows 2000: W2K: Architecture. Introduction. W2K: amélioration du noyau. Gamme windows W2K pro: configuration.

La mémoire. Un ordinateur. L'octet. Le bit

Mode d emploi pour lire des livres numériques

Premiers pas sur l ordinateur Support d initiation

Clé USB 2.0 Wi-Fi n Référence

LOGICIEL DC4D MONITOR

Gestion des sauvegardes

Tablette Pegasus PC Notes. Code : Conrad sur INTERNET Version 02/ Conditions du système.

MANUEL D INSTALLATION

Mes documents Sauvegardés

Sauvegarde/Restauration

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

Installation Guide Serveur d impression et de stockage multifonctions à 2 ports USB 2.0 haute vitesse Manuel de l utilisateur

Tutoriel Papier sur le logiciel DVD Shrink

Tournage en fichiers numériques

COMMANDER la puissance par MODULATION COMMUNIQUER

Procédure de restauration F8. Série LoRdi 2012 à Dell V131 V3360 L3330

IPMailSMS Module d envoi d & SMS pour CITECT

Informatique pour scientifiques hiver Plan général Systèmes d exploitation

Retrouver de vieux programmes et jouer sur VirtualBox

Récupérer au format AVI un extrait d'un DVD à l'aide du logiciel FlaskMpeg

Le langage C. Séance n 4

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

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier

IN SYSTEM. Préconisations techniques pour Sage 100 Windows, MAC/OS, et pour Sage 100 pour SQL Server V16. Objectif :

Guide de l utilisateur ArpentGIS-Trajet 1.2 ArpentGIS-Expert 1.4

Éléments d'architecture des ordinateurs

TRANSFERT DES STANDARDS DANS SOLID 9

Connected to the FP World

Détection de pollution maritime avec GNU/Linux. Eric Bénard - eric@eukrea.com - 08 juillet 2010

Manuel programmation QUESTOR

Chapitre 1 L interface de Windows 7 9

Utilisez Toucan portable pour vos sauvegardes

TRAITEMENT DES PHOTOS A.D.S.B. COURS INFORMATIQUE GARCIN Robert

Win UR Archive. Manuel de l utilisateur. Version 3.0, mars 2009

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

PocketNet SNMP/Modbus

Introduction à l informatique en BCPST

La technologie Java Card TM

Installation de Premium-RH

Les liaisons SPI et I2C

LOT 1 - ACQUISITION DE SERVEURS INFORMATIQUES LOT 2 - ACQUISITION DE 5 POSTES INFORMATIQUES

Fonctionnement de Windows XP Mode avec Windows Virtual PC

Le Network File System de Sun (NFS)

ESPACE COLLABORATIF SHAREPOINT

UltraBackup NetStation 4. Guide de démarrage rapide

Débuter avec PsoC ou PsoC niveau 0

Prise en main. Prise en main - 0

Installation software

TP WINDOWS 2008 SERVER - OUTILS DE SAUVEGARDE ET DE RESTAURATION

Introduction à Eclipse

Systèmes embarqués D.Rossier

Ordinateurs, Structure et Applications

WebSpy Analyzer Giga 2.1 Guide de démarrage

AutoBackup 4. Sauvegarde de la totalité des données personnelles ASSOCIATION INFORMATIQUE POUR TOUS - VIEILLEVIGNE Gilbert LECOCQ

Sauvegarde des données d affaires de Bell Guide de démarrage. Vous effectuez le travail Nous le sauvegarderons. Automatiquement

Service Déposant: Procédure d installation. Page 1. Service déposant. Procédure d installation Version 2.3

Mode d emploi de la mise à jour du microprogramme

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Guide de l utilisateur

Installation / Sauvegarde Restauration / Mise à jour

Préconisations Techniques & Installation de Gestimum ERP

Lutter contre les virus et les attaques... 15

ProCod. Manuel d utilisation. Software de programmation pour codeurs absolus TWK modèles CRF et DAF CRF DF 08 / 10

Quelques éléments de compilation en C et makefiles

Département de génie électrique. ELE784 - Ordinateurs et programmation système. Laboratoire #1

Boot Camp Guide d installation et de configuration

SOLUTIONS d archivage légal

Transcription:

Architecture des Systèmes à Processeur M. Starkier A. Convers Labo SD card Partie 1 17/04/2015 V3 Informations générales Le labo SD card est un travail individuel et s effectue durant 12 périodes encadrées (partie 1 : 8 périodes, partie 2 : 4 périodes). Vous devrez rendre un rapport global plus le code. Code + rapport à rendre le 04.06.2015 dernier délai. Le rendu s effectue sous forme de : a) Version informatique du code : envoyer les répertoires des deux projets compressés dans une archive à anthony.convers@heig-vd.ch (faire un make clean avant pour n inclure que les sources) b) Version informatique du rapport : fichier.pdf à envoyer à anthony.convers@heig-vd.ch c) Code imprimé (uniquement les fichiers écrits ou modifiés par vous) : à remettre à Anthony Convers, bureau A07 d) Rapport imprimé et agrafé : à déposer devant le bureau A07a (corbeille en carton) Objectif du laboratoire L objectif de ce laboratoire est d écrire et tester les drivers et fonctions de bas niveau qui permettront de communiquer avec une carte SD High Capacity. La partie 1 vous demande de réaliser les fonctions de base de lecture et écriture de données sur une carte SD HC. Dans la partie 2, on vous fournira une librairie de fonctions haut-niveau qui implémentent un système de fichiers de type FAT simplifié. Ces fonctions sont génériques et indépendantes du type de support de stockage (elles pourraient marcher aussi bien pour écrire sur un disque dur, un DVD, une clé USB, etc ). Votre travail sera d interfacer cette librairie avec vos propres fonctions bas-niveau d accès à la carte SDHC (développées dans la partie 1), de cette façon on ajoute une couche d abstraction qui permet aux applications d utiliser directement les fonctions de type «open», «read», «write», «close» fournies par la librairie FAT. Finalement vous allez écrire des fonctions qui utilisent la librairie FAT pour afficher sur l écran LCD de REPTAR la liste de fichiers contenus dans la carte SD, le contenu d un fichier texte, les informations d un fichier, etc. - 1 -

Rappelons que pour ce laboratoire comme pour les suivants d ASP, le programme écrit devra fonctionner en stand-alone sans utiliser de code déjà installé dans la carte, autrement dit : ni moniteur ni OS. Les drivers et fonctions réalisés seront utilisés dans les prochains labos en vue de l application finale : un pico-moniteur, ou (pico OS), qui permettra l accès aux fichiers d un file system chargé dans la carte SD, ainsi que la gestion et le lancement des fichiers exécutables en utilisant boutons et LCD de la carte. Ce laboratoire est noté. Vous devez rendre le code écrit commenté et un rapport. Le rapport doit montrer votre compréhension des fonctions hardwares du microcontrôleur, et expliquer comment votre code inter-réagit avec le hardware (écriture et lecture de registres). Ce rapport doit comprendre aussi une brève partie journal qui montrera votre progression au cours du labo et les problèmes auxquels vous avez pu être confrontés. - 2 -

Fichiers et documents fournis Vous trouverez les informations nécessaires à la réalisation des différentes étapes de ce laboratoire dans les documents ci-dessous: - Schémas de la carte REPTAR - Extraits du Technical Reference Manual (TRM) du DM3730 : o o o chapitre 24 MMC/SD/SDIO chapitre 13 SCM (Pad configuration) chapitre 3.7.1.5 CORE_CM Registers - SD specification part 1, physical layer, version 3.01 Mettez à jour votre répertoire Git pour obtenir les nouveaux fichiers. Le dossier «labo_asp_sdcard» contient les fichiers suivants (voir informations ci-dessous) : twl4030.c, sd_toolbox.c i2c.h, i2c_toolbox.h, mmchs.h, padconf.h, sd_toolbox.h, twl4030.h obj_i2c/i2c_toolbox.o Structure des fichiers pour le labo SD card (partie 1 et 2): Fichiers.c main.c main() general_init() init.c xxx_init() interrupt_init() isr() lcd_toolbox.c lcd_init() appel de la fonction general_init et des fonctions d accès au contenu de la carte SD appel des diverses fonctions _init fonction d initialisation de chaque module (GPIO, timer, LCD, i2c, mmc ) fonction d initialisation des interruptions, à appeler en dernier routine de service d interruption fonction d initialisation de l écran LCD vos fonctions d écriture LCD gpio_toolbox.c gpio_init() fonction d initialisation des GPIOs vos fonctions d accès boutons et leds - 3 -

timer_toolbox.c timer_init() fonction d initialisation des GPIOs vos fonctions d accès au timer sd_toolbox.c mmchs_conf() fonction de configuration des registres du contrôleur de carte SD du DM3730 mmc1_pad_conf() fonction qui configure les pins du DM3730 reliées au lecteur de carte SD de REPTAR mmchs_send_command () fonction permettant d envoyer une commande à la carte SD en passant par le contrôleur MMC1 du DM3730 sdhc_init() mmc1_init() twl4030.c fonction d initialisation de la carte SD par l envoi de commandes initialisation complète de la carte SD, y compris la configuration des pins, de l alimentation et des registres du contrôleur vos fonctions d accès à la carte SD configuration du chip TWL4030 par i2c (gestion de l alimentation) applications.c temps_reaction() fonction jeu temps de réaction vos applications - 4 -

Fichiers.h cfg.h bits.h stddefs.h gpio.h lcd.h timer.h prcm.h padconf.h intc.h fb_fonts.h vga_lookup.h init.h i2c.h mmchs.h sd_toolbox.h lcd_toolbox.h gpio_toolbox.h timer_toolbox.h applications.h taille de la pile définitions pour accès bit par bit (masques) définitions de types définitions pour configuration des registres GPIO du DM3730 définitions pour configuration des registres DSS du DM3730 définitions pour configuration des registres du module Timers du DM3730 définitions pour configuration des registres PRCM du DM3730 définitions pour configuration des registres SCM du DM3730 définitions pour configuration des registres INTC du DM3730 définition police bitmap de caractère définitions de couleurs standards pour le LCD définitions et prototypes initialisation de base, interruptions définitions pour configuration des registres I2C du DM3730 définitions pour configuration des registres MMCHS du DM3730 définitions pour fonctions d accès à la carte SD définitions pour fonctions d accès au LCD vos définitions pour fonctions d accès aux GPIOs vos définitions pour fonctions d accès au timer vos définitions et prototypes pour applications Fichiers.S crt0_arm.s fichier assembleur de démarrage, initialisation de la pile Fichiers divers Makefile standalone.ld newlib_stubs.c i2c_toolbox.o paramètres de compilation et linkage linker script, décrit l organisation en mémoire des sections du fichier exécutable.elf fonctions bas niveau que doivent être fournies par un système afin de rendre utilisables des librairies standard, notamment stdio et stdlib fichier objet issu de la compilation de i2c_toolbox.c - 5 -

Travail à effectuer AVANT DE COMMENCER 1- Depuis un explorateur de fichiers ou en ligne de commandes créer un nouveau répertoire de projet «labo_asp_sdcard1» dans votre workspace. Copiez vos fichiers du labo précédent. N ajoutez pas les nouveaux fichiers. Lancez Code Composer Studio et suivez le tutoriel «Utilisation de CCSv5» pour créer un nouveau projet. Vérifiez la compilation et le chargement dans la carte. 2- Ajoutez les nouveaux fichiers. Modifiez le Makefile afin que les nouveaux modules.c soient pris en compte lors de la compilation et modifiez le main pour ajouter autant de fois la directive #include comme de modules.c. Pour ajouter le module i2c il faut écrire obj_i2c/i2c_toolbox.o. Vérifier la compilation et le chargement. Etape 1 : Initialisation de la carte SD => solution fournie Vous devez lire en détail la donnée de la 1ére étape ainsi que le code des fonctions nécessaires pour initialiser une carte de type SD HC. Informations : - Le connecteur SD de la carte REPTAR est relié au contrôleur MMC1 du DM3730. (Voir schéma CPU_REPTAR) - La fréquence de référence du module MMC1 est de 96 MHz Les fonctions décrites ci-dessous sont dans le fichier sd_toolbox.c 1. La fonction mmc1_pad_conf() configure les pads du MMC1 (mux, input enable, pullups, etc.). Les pins utilisées sont sdmmc1_clk, sdmmc1_cmd et sdmmc1_dat0 à sdmmc1_dat3. Informations sur la fonction mmc1_pad_conf(): - Les pins utilisés par le MMC1 sont configurables à 1.8 V ou 3.0 V au niveau du System Control Module du DM3730 - Le module MMC1 est alimenté par un chip externe configurable par i2c, le TPS65930, compatible avec le TWL4030 - Le code pour configurer l alimentation des pins MMC1 tant au niveau du DM3730 comme du TWL4030 vous est fourni au début de la fonction mmc1_pad_conf() du fichier sd_toolbox.c 2. La fonction mmchs1_conf() configure le contrôleur MMC1 du DM3730 en suivant les procédures expliquées dans le chapitre 24, pages 3426 à 3430 avec deux exceptions : wake-up configuration ne sera pas fait, et un reset des lignes mmc sera ajouté après le software reset (vois registre SYSCTL bit SRA). 3. La fonction sdhc_init() permet d initialiser la carte SD en lui envoyant des commandes. - 6 -

a. Les commandes utilisées sont : CMD0, 2, 3, 6, 7, 8, 9, 13, 17, 24, 55 et ACMD6, 41 et 5. b. Les informations pour comprendre le protocole sont disponible dans : les chapitres 4.1 4.2 (sauf 4.2.1) et les figures 4-2 et 4-9 de la Spécification SD, ainsi que la figure 24-35 du TRM du DM3730. Note : les procédures sont simplifié sachant que nous utilisons une carte SD et non une carte MMC ni SDIO 1 c. Toutes les commandes, réponses et registres sont décrits dans la spécification SD (chapitres 4.7, 4.9 et 5). d. La figure 24-43 du TRM du DM3730 explique comment envoyer une commande avec le contrôleur MMC/SD. La fonction fournie mmchs_send_command(ulong cmdindx, ulong cmdarg, uchar acmd, uchar nblocks) implémente la procédure de cette organigramme, où : i. cmdindx est l index de la commande (chiffre entre 0 et 55) ii. cmdarg est le contenu du registre MMCHS_ARG iii. acmd est un flag qui doit être à 1 pour les commandes de type ACMD (Application-specific commands) iv. nblocks est le nombre de blocs de 512 bytes à envoyer (minimum 1) e. Tous les registres récupérés avec les différentes commandes lors de la procédure d initialisation doivent être stockés dans des variables globales (cid_reg, rca, csd_reg, scr_reg), voir fichier sd_toolbox.c f. Pendant le transfert de données, la fréquence utilisée sera de 24MHz (vitesse standard) et la largeur de bus sera de 4 bits g. Les modes HS (High Speed) et UHS (Ultra High Speed) ne seront pas implémentés Informations : la carte SD contient une machine d états qui change d état à chaque fois qu elle reçoit des commandes. C est pourquoi il est impératif de respecter l ordre d envoi donné dans les documents. La fonction d initialisation doit faire avancer la machine jusqu à l état «transfer state (tran)», en plus elle doit obtenir les registres OCR, CID, CSD, RCA et SCR. Avant de passer au «transfer state» (CMD7) la fréquence est changé à 24MHz. Une fois que la carte est en «transfer state» vous pouvez récupérer le SCR register et ensuite envoyer la commande ACMD6 pour changer la largeur de bus à 4 bits. Vérifiez que les valeurs des registres obtenus sont cohérentes avec la documentation 4. Pour tester la procédure d initialisation, vous devez réaliser l étape 2 pour compléter la fonction sdhc_init(). Etape 2 : Lire et afficher les informations de la carte SD Ecrire les fonctions décrites ci-dessous dans le fichier sd_toolbox.c Les tester en appelant les fonctions depuis le main. 1. Trouver dans le tableau (chapitre 4.7.4) de la Spécification SD les numéros des commandes pour lire les registres CID et CSD. 2. Compléter le code dans la fonction sdhc_init() pour obtenir les registres CID et CSD et stocker les valeurs des registres dans les variables globales cid_reg et csd_reg. Utiliser les defines suivants (du fichier mmchs.h) pour récupérer la réponse aux commandes : - MMCHS1_REG(MMCHS_RSP10) accède aux bits 31 à 0. - MMCHS1_REG(MMCHS_RSP32) accède aux bits 63 à 32. - MMCHS1_REG(MMCHS_RSP54) accède aux bits 95 à 64. - MMCHS1_REG(MMCHS_RSP76) accède aux bits 127 à 96. 3. Tester la procédure d initialisation de la carte SD en appelant la fonction mmc1_init() depuis le main. - 7 -

Informations : le chapitre 5 de la Spécification SD décrit les registres internes de la carte SD, les registres CID et CSD sont détaillés dans les parties 5.2 et 5.3. Pour le registre CSD on utilise la version 2.0. 4. Ecrire une fonction pour récupérer le nom du produit (PNM dans le registre CID) et afficher le nom sur l écran LCD. (Le nom de produit sera affiché en caractères ASCII). 5. Ecrire une fonction pour récupérer la taille de la carte (C_SIZE dans le registre CSD) et afficher la taille sur l écran LCD. (la capacité totale = ((C_SIZE + 1) * 512K) bytes). Etape 3 : Ecrire un bloc de données Ecrire la fonction décrite ci-dessous dans le fichier sd_toolbox.c La tester en appelant la fonction depuis le main. 1. Ecrire la fonction mmchs_write_block(ulong *data, ulong block). Aidez-vous de l organigramme de la figure 24-39 du manuel du DM37 et du chapitre 4.3 de la Spécification SD (pages 27 et 28) 2. Dans le fichier main, déclarer et initialiser en tant que variable globale, un tableau ulong de 128 éléments avec les données à écrire 3. Appeler la fonction en passant comme paramètre l adresse du tableau et le numéro de bloc de la carte SD Etape 4 : Lire un bloc de données Ecrire la fonction décrite ci-dessous dans le fichier sd_toolbox.c La tester en appelant la fonction depuis le main. Base-vous sur la fonction d écriture déjà codée dans l étape précédente 1. Ecrire la fonction mmchs_read_block(ulong *data, ulong block) 2. Réinitialiser à 0 le tableau qui accueillera les données à lire dans le main 3. Appeler la fonction en passant comme paramètre l adresse du tableau et le numéro de bloc de la carte SD que vous avez écrit dans le point précédent Etape 5 : Ecrire plusieurs blocs de données Ecrire la fonction décrite ci-dessous dans le fichier sd_toolbox.c 1. Ecrire la fonction mmchs_write_multiple_block(const uchar *data, ulong block, uchar nblocks) où data est le tableau qui contient les données à écrire, block est le numéro de bloc de la carte SD et nblock est le nombre de blocs à écrire (maximum 8) La fonction doit appeler mmchs_write_block pour nblocks=1 Une fois le transfert terminé, la commande CMD12 doit être envoyée 2. Cette fonction ne pourra être testée qu à l étape suivante Etape 6 : Lire plusieurs blocs de données Ecrire la fonction décrite ci-dessous dans le fichier sd_toolbox.c - 8 -

5. Ecrire la fonction mmchs_read_multiple_block(uchar *data, ulong block, uchar nblocks). Afin d éviter des problèmes d alignement, utiliser un buffer interne de type ulong pour lire les données, et ensuite copier les données à l adresse passée en paramètre avec memcpy. La fonction doit appeler mmchs_read_block pour nblocks=1 Une fois le transfert terminé, la commande CMD12 doit être envoyée 6. Ecrivez une fonction de test qui réalise les tâches suivantes: a. Initialiser la carte SD b. Remplir un tableau c. Appeler la fonction mmchs_write_multiple_block d. Réinitialiser le tableau avec des zéros e. Appeler la fonction mmchs_read_multiple_block f. Vérifier les données dans le tableau 7. Tester la fonction avec nblocks=1 en appelant votre fonction de test depuis le main 8. Tester la fonction avec nblocks=2 9. Tester la fonction avec nblocks=8 N oubliez pas de sauvegarder votre répertoire workspace qui vous sera nécessaire pour le prochain labo. Le répertoire étudiant est effacé à chaque extinction de machine. - 9 -