Freescale 68HC08

Freescale 68HC08

Les Freescale 68HC08 sont des microcontrôleurs de la gamme 8 bits fabriqués par Freescale[1] (précédemment Motorola) sur base du cœur CPU08[2], dérivé du dérivé du CPU du Motorola 6800.

Ils ont été conçus comme les successeurs améliorés des microcontrôleurs 6805 et 68HC05[3], pendant que les 68HC12 succédaient aux 68HC11.

Sommaire

Par rapport au 68HC05

Comme améliorations par rapport aux microcontrôleurs 68HC05, on peut citer :

  • des nouvelles instructions et de nouveaux modes d'adressages, l'assembleur restant cependant compatible au niveau du code objet avec celui du HC05 ;
  • pointeur de pile et un registre d'index sur 16 bits, permettant d'adresser directement les 64Ko de la mémoire ;
  • des périphériques améliorés ;
  • une fréquence supérieure : La fréquence « bus » cadence le CPU et les périphériques jusqu'à 25 Mhz (cycle d'instruction de 40 ns).
  • mémoire Flash sur tous les modèles

Ils sont optimisés pour le codage en langage C.

Dénominations et familles

À leur sortie fin des années 90, les micro-contrôleurs à base de CPU08 ont été identifiés de la manière suivante (exemple) :

MC68 HC 908 GP 32 CP, qui se décompose en :

  • MC68 : appellation générique des micro-contrôleurs Motorola descendant du 6800
  • HC 908 : « HC » indique le procédé de fabrication HC MOS; « 9 » indique le type de mémoire (Flash) et 08 la version du CPU
  • GP indique la famille
  • 32 : quantité approximative de mémoire Flash (en Ko)

Les lettres qui suivent indiquent le type de boitier (CP = DIL) et la gamme de température opérationnelle.

Les dénominations ont changé lorsque ces composants sont devenus RoHS en 2006 : Le « MC68HC908 » a été remplacé par « MC908 ». Ainsi, le MC68HC908GP32 est devenu MC908GP32. À l'exception d'une famille (AP, les MC908 sont fabriqués en procédé HC MOS de 0,5 micron.

En 2004, est apparue la nouvelle génération des MC908 : les MC9S08. Ceux-ci sont fabriquées en procédé HC MOS 0,25 microns, possèdent des périphériques améliorés, ont quelques modes d'adressage et instructions supplémentaires et sont (trois fois) plus rapides que les MC908[4]. Un micro contrôleur actuel se dénomme par exemple MC9S08QG8CPE. Ils sont également optimisés du point de vue consommation et possèdent différents modes d'arrêt qui placent le contrôleur dans différents états de très basse consommation.

Il existe de nombreuses familles, différant par le nombre et la nature des périphériques. En général :

  • Qx sont des entrées de gamme à bas coût ;
  • Gx sont des familles d'usage général ;
  • Rx sont dédiées aux télécommandes ;
  • Lx sont des familles avec gestion de LCD ;
  • Jx sont des familles avec périphérique USB ;
  • xZ sont des familles avec bus CAN ;
  • Ax sont des familles avec timers améliorés.

Architecture et caractéristiques

  • L'Architecture est du type « von Neumann » , en opposition avec l'architecture type « Harvard ». La mémoire de mots de 8 bits est adressée de manière linéaire sur 16 bits, sans banques ou pages. Le programme et les données résident indifféremment en RAM ou ROM. Les registres d'entrée-sortie et les registres des autres périphériques sont mappés dans la mémoire et se gèrent de la même manière qu'une case mémoire banalisée.
  • Pointeur de pile et registre d'index sur 16 bits, permettant d'adresser 64 Ko de mémoire
  • Mémoire ROM du type Flash
  • Jeu de 89 instructions CISC permettant un code assembleur intuitif, compact et lisible, facilitant la maintenance.
  • Jusqu'à 64 vecteurs d'interruption distincts, de priorité fixe. Le sauvetage du contexte sur la pile est automatique.
  • Le registre d'index et le pointeur de pile peuvent être utilisés pour réaliser des opérations directement sur 16 bits.
  • Instructions arithmétiques de multiplication entière « MUL » de 8x8 bits et de division « DIV » de 16 par 8 bits, avec résultat et reste sur 8 bits.
  • Oscillateur interne et PLL sur tous les modèles S08
  • Le modèle de programmation, c'est-à-dire le jeu de registres du CPU qui sont accessibles au programmeur consiste en :
    • un accumulateur A de 8 bits,
    • un registre d'index (H:X) de 16 bits,
    • un pointeur de pile (SP) de 16 bits,
    • un compteur ordinal (PC) de 16 bits,
    • un registre d'état (CCR) de 8 bits.

Instructions et modes d'adressage

Les instructions CPU08 sont codées sur 1,2 ou 3 octets, dépendant du mode d'adressage. Elles s'exécutent en 1 à 11 cycles d'horloge, 3 à 4 en moyenne . Ce sont des instructions CISC, qui sont en fait équivalentes à plusieurs instructions RISC. Par exemple, une seule instruction CBEQ X+, LOOP :

  • compare la valeur de l'accumulateur A à celle contenue à l'adresse mémoire pointée par le registre d'index;
  • branche au label LOOP si égalité;
  • incrémente le registre d'index.

Le CPU08 met en œuvre plusieurs modes d'adressage de base différents :

inhérent (ou implicite ou absolu) : L'opérande est implicite, par exemple : CLRA (Clear A), MUL (Multiply). Ces instructions sont en général codées sur un seul octet.

immédiat : La valeur de l'opérande est contenue dans l'instruction. Par exemple : LDA #10 (Charge A ou LoaD A) avec la valeur 10.

direct : Ce mode d'adressage permet d'adresser les 256 premiers octets de la mémoire (de 0x00 à 0xFF, zone aussi appelée « page zéro »). Il optimise les instructions dans la mesure où l'adresse de cette zone est représentée par un seul octet, ce qui réduit la taille de l'instruction et la vitesse d'exécution de celle-ci. À remarquer que les ports d'entrée-sortie sont mappés dans cette zone. Par exemple : LDA $00 (charge A avec le contenu de l'adresse $00 (en général le port A)).

étendu : Ce mode permet d'adresser toute la mémoire avec une adresse sur 16 bits.

relatif : Ce mode d'adressage ajoute un opérande de 8 bits signé (de +127 à - 127) au compteur ordinal (PC). Ce mode d'adressage est utilisé principalement pour les instructions de branchement, et en particulier pour les boucles. Par exemple : DBNZA LOOP (Decrement and Branch if Not Zero ou décrémente l'accumulateur A, et branche à l'étiquette LOOP si A est différent de 0).

indexé sans déplacement, avec déplacement de 8 bits, avec déplacement de 16 bits, avec post-incrément, avec post-incrément et déplacement sur 8 bits. L'adresse est contenue dans le registre d'index (H:X). Un déplacement de 8 ou 16 bits peut lui être ajouté et il peut être incrémenté après l'opération. Les modes d'adressage post-incrémentés sont utilisés uniquement avec les instructions DBNZ (Decrement and Branch if Not Zero) et CBEQ (Compare and Branch in EQual). Ils permettent de réaliser des contrôles de boucles particulièrement efficaces.

indexé sur le pointeur de pile, avec déplacement de 8 bits et avec déplacement de 16 bits. L'adressage relatif sur le pointeur de pile est particulièrement utile pour le code écrit en C : Les variables locales et les paramètres des fonctions sont adressées relativement au pointeur de pile, ce qui permet de libérer l'espace mémoire à la sortie de la fonction.

de mémoire à mémoire . Certaines opérations ne nécessitent pas le transfert via l'accumulateur. Par exemple : MOV #$55,$00 (place la valeur 55 à l'adresse mémoire 00 (le PORT A)).

Environnement de développement

L'environnement de développement proposé par Freescale s'appelle CodeWarrior[5]. Il comprend :

  • un assembleur ;
  • un compilateur C ;
  • un débogueur ;
  • un simulateur.

Le module "Processor Expert" de UNIS[6] inclus dans CodeWarrior configure graphiquement les périphériques et génère le code C correspondant. CodeWarrior est gratuit dans sa version proposée en « Special Edition » jusqu'à 32 Ko de code objet en C. L'assembleur est illimité.

Programmation et débogage

Les MC68HC908 se programmaient/déboguaient via une liaison série mobilisant 3 à 4 pattes du contrôleur. Un programme particulier (appelé « moniteur ») intégré en ROM permettait la communication. L'interface PC - cible appelée « MON08 » se fondait généralement sur le port série. L'entrée en mode « moniteur » était déclenchée par l'application d'une haute tension (7,5 à 9 V) sur la patte d'interruption externe à la mise sous tension.

Les MC9S08 ont hérité du module de débogage intégré des 68H12 et ColdFire, le BDM (Background Debug Module). La programmation/debug s'effectue via une seule patte du contrôleur et par USB du côté PC. L'interface cible – PC ou sonde est appelée « pod BDM »

Le module BDM intégré aux contrôleurs MC9S08 permet un débogage « In Circuit » en temps réel non intrusif, ne mobilisant pas de ressources du uC avec des points d'arrêt conditionnels ainsi que des possibilités de traçage du bus. Il permet d'éviter dans une certaine mesure l'utilisation d'un émulateur. La sonde BDM s'adapte automatiquement à la tension et à la fréquence de la cible.

Freescale soutient la réalisation de sondes BDM « Open Source » sous licence GPL dont le code et le hardware sont ouverts[7].

Évolutions

La famille S08 a amené à des évolutions :

  • Vers le bas avec la famille RS08 mettant en œuvre un CPU S08 simplifié, optimisant la surface de silicium.
  • Vers le haut : en 2007, Freescale a sorti les contrôleurs « Flexis »[8]. Ceux-ci intègrent les mêmes périphériques S08 mais un cœur 32 bits ColdFire V1 (MCF51). L'accent est mis sur la compatibilité avec les S08 :
    • périphériques identiques,
    • brochage identique,
    • même IDE (CodeWarrior),
    • même matériel de programmation/debug (BDM). Le BDM « open source » est identique et également supporté,
    • les applications écrites en C pour les S08 se recompilent sans modification pour les MCF51 (pour autant que le code source ne contienne pas d'assembleur).

À noter également que Freescale produit des puces RF 2,4 GHz (pour protocole Zigbee) intégrant un microcontrôleur MC9S08 (exemple).

Notes et références


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Freescale 68HC08 de Wikipédia en français (auteurs)

Игры ⚽ Нужен реферат?

Regardez d'autres dictionnaires:

  • Freescale 68HC08 — El 68HC08 es una familia de microcontroladores de Freescale (antes Motorola) de 8 bits y arquitectura de von Neumann, con un solo bloque de memoria. Es conocida también simplemente por HC08. Los HC08 son microcontroladores de propósito general,… …   Wikipedia Español

  • Freescale 68HC08 — The 68HC08 (HC08 in short) is a broad family of 8 bit microcontrollers from Freescale Semiconductor (formerly Motorola Semiconductor).HC08 s are fully code compatible with their predecessors, the Motorola 68HC05. Like all Motorola processors that …   Wikipedia

  • Freescale ColdFire — развитие микропроцессорной архитектуры 68k ориентированное на применение во встраиваемых приложениях компании Freescale Semiconductor (бывшее подразделение Motorola). Набор инструкций ColdFire совместим на уровне ассемблера, но не на уровне… …   Википедия

  • Freescale ColdFire — This article is about the microprocessor. For the science fiction novels, see Coldfire Trilogy. The Freescale ColdFire is a microprocessor that derives from the Motorola 68000 family architecture, manufactured for embedded systems development by… …   Wikipedia

  • 68HC08 — Der 68HC08 ist ein 8 Bit Mikrocontroller (MCU) der Firma Freescale Semiconductor. Freescale Semiconductor ist die Halbleitersparte von Motorola, sie wurde 2004 ausgegliedert. Neben dem ursprünglichen 68HC08 Mikrocontroller sind weitere Varianten… …   Deutsch Wikipedia

  • Freescale 68HC11 — Motorola MC68HC11, plastic DIP. The MC68HC11A8 is available …   Wikipedia

  • Freescale 683XX — The Freescale 683xx (formerly Motorola 683xx) is a family of compatible microcontrollers that use a Freescale 68000 based CPU core. The family was designed using a Hardware Description Language, making the parts synthesizable, and amenable to… …   Wikipedia

  • Freescale DragonBall — Motorola DragonBall EZ Microprocessor Motorola/Freescale Semiconductor s DragonBall, or MC68328, is a microcontroller design based on the famous 68000 core, but implemented as an all in one low power solution for handheld computer use. It was… …   Wikipedia

  • List of Freescale products — The following is a partial list of Freescale Semiconductor products, including products formerly manufactured by Motorola until 2004.MicroprocessorsEarly microprocessors*Motorola MC14500B Industrial Control Unit (ICU) (1 bit) *Motorola 6800 (8… …   Wikipedia

  • Liste der Freescale-Produkte — Dies ist eine nicht ganz vollständige Liste der Freescale Semiconductor (ehemals Motorola) bis etwa 2004. Inhaltsverzeichnis 1 Mikroprozessoren 1.1 Frühe Mikroprozessoren 1.2 68000 Serie (CISC) …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”