Lundi 17 novembre 2008

Bonjour à tous !

Je me suis intéréssé à la programmation des cartes à puces.
Après quelques recherches sur le web, je m'aperçoi qu'il n'y a peu de tuto ou d'exemples de programmes.

Je fait donc ce petit blog pour partager mes experiences, mes prgrammes et documentations.

Par Orange
Ecrire un commentaire - Voir les 1 commentaires - Recommander
Lundi 17 novembre 2008
On retrouve les cartes à puce partout : carte bancaire, carte vitale, téléphonique, sim de téléphone, télécarte ....
Elles respectent des norme : dimensions physiques, contact de la puce, position de ces conatcts ...

Il existe plusieurs type de cartes :

- les carte synchrones : elles contiennent uniquement de la mémoire. Elles servait à l'époque pour les premières télécarte. Très peu de sécurité, ces télécartes ont pu être piratées très facilement.... On trouve dans cette catégorie, des mémoires I2C, et des mémoires protégées

- les cartes synchrones / smart card : elle contiennent un microcontroleur. Elles peuvent donc embarqué une certaine intelligence et servent pour le décryptage des démodulateurs satélite, ou pour la sim de votre téléphone par exemple.
On trouve 2 type de cartes synchrones dans le commerce :
      * les cartes completement vierges de programme : vous achetez la carte, c'est à vous de la programmer de A à Z
      * les carte à OS : elles contienne un interprétateur de code (par exemple en Java), qui facilite sa programmation, grace à un language évolué

La suite de ce blog portera sur les carte à microcontroleur.


Par Orange
Ecrire un commentaire - Voir les commentaires - Recommander
Lundi 17 novembre 2008
J'ai choisi cette carte pour mes montage.
C'est une des première carte à être commercialisé.
Elle contient un PIC16F84, c'est pas grand chose, mais à l'époque c'était pas mal. De plus elle est simple d'utilisation.
Son nom vient de sa couleur : dorée
Pour companser le manque de mémoire du PIC, la carte contient une EEPROM : 24C16

Voici son shémas interne :

Vous pouvez trouver les datasheet des composant qu'elle contient ici :

www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/9/pic16f84A.pdf

www.gs.ru/soft/si/SS1-15/24c16.pdf

Le PIC contient une mémoire flash pour stocker votre programme. Vous pouvez donc l'éffacer plusieurs fois.
Bigonoff proposeun cour complet sur ce microcontroleur :

http://www.abcelectronique.com/bigonoff/charger.php?par=c0dd7&fic=part1

Les contacts du connecteur sont toujours les mêmes, pour les autres carte (C1 sera toujours Vcc, C2 toujours le reset ... )
On remarque qu'il y a donc qu'un seul contact pour transmettre les données : C7. Ceci nous obligera donc à faire une liaison half duplex (la carte et le lecteur ne peuvent pas "parler" en même temp).
Par Orange
Ecrire un commentaire - Voir les 1 commentaires - Recommander
Lundi 17 novembre 2008
Il existe d'autre carte. Les plus courantes sont :

La silver, qui contient un PIC16F876 et une EEPROM 24C64
La Fun, qui contient un microcontroleur ATMEL AT90S8515 et une EEPROM qui varie selon la version de la carte
La Jupiter, qui contient un AT90S2343 et une mémoire 24C16

Dans les carte à OS, on trouve principalement la BasicCard ou la JavaCard.

Je m'intéresserai d'abord à la carte gold, puis me pense me pencher sur une carte plus évolué, à OS ouvert.
Par Orange
Ecrire un commentaire - Voir les commentaires - Recommander
Lundi 17 novembre 2008
Il vous faut : un éditeur + un compilateur.

Pour ma part je choisi l'environnement PCW avec son compilateur CCS
Vous pouvez utiliser MPLAB qui est gratuit, avec un compilateur C.



Ecrivons un promier programme : l'envoi du fameux "hello world".

Vous pouvez faire une nouveau projet :
Choisez le bon PIC (16F84), et configurer bien les fusible :

  • « Oscillator » ou « Osc », pouvant prendre les valeurs :

    - RC pour un oscillateur à cellule résistance – condensateur,

    - XT pour un oscillateur à quartz jusqu’à une fréquence de 4 MHz incluse,

    - HS pour un oscillateur à quartz de fréquence supérieure à 4 MHz (10 et 20 MHz en particulier).

   -  LP est réservée à un usage avec un oscillateur à quartz à très basse fréquence tel celui utilisant un quartz horloger à 32,768 kHz.

        Dans notre cas : XT ou HS, suivant votre programmateur de carte

  • WDT ou WDTE est le fusible de validation du timer chien de garde (Watch Dog Timer Enable). Nous allons pas nous en servir pour l'instant.
  •   PWRT ou PWRTE est le fusible de validation du timer de reset à la mise sous tension (PoWer up Reset Timer Enable). Ce fusible est généralement programmé. Il permet de bénéficier d’un délai d’attente après la stabilisation de la tension d’alimentation avant que le programme ne démarre son exécution ce qui est une attitude prudente.
  •   CP ou CP0 est le fusible de protection de la mémoire de programme contre une lecture non autorisée. On le laisse déactivé.
Mon programme :

#include "puce3.h"

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   while(1)
   {

      delay_ms(1000);
      printf("Hello world");
   }
}

L'en-tête :

#include <16F84.h>

#FUSES NOWDT                     //No Watch Dog Timer
#FUSES HS                        //High speed Osc (> 4mhz)
#FUSES PUT                       //Power Up Timer
#FUSES NOPROTECT                 //Code not protected from reading

#use delay(clock=6000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B7,rcv=PIN_A1,bits=8)



Il suffit ensuite de compilez votre programme !
Celui ci envoie toutes les seconde "Hello world", que l'on pourra visualisé sur un terminal...


Par Orange
Ecrire un commentaire - Voir les commentaires - Recommander

Recherche

Calendrier

Novembre 2009
L M M J V S D
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
<< < > >>
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus