FP1 : étude de la communication avec la carte a puce I/ Analyse du fonctionnement de la carte a puce I.1/ Cette fonction réalise : -La lecture des données stockées dans la carte à puce -L écriture de données sur la carte à puce -Elle commande les différentes interfaces en fonction de ces données I.2/ VCC & VSS sont les broche d alimentation de la carte a puce RAZ est la broche qui effectue un reset elle est reliée au µc par l intermédiaire de PC2 CLK est l horloge, qui est utilisé pour la transmission de donnée série elle est reliée au µc par l intermédiaire de PC3 E/S est la broche par laquelle les donnée sont transmit en série elle est reliée au µc par l intermédiaire de PC4 La mémoire principale est effacée et écrite octet par octet. Lors de l effacement, les 8 bits, constituant l octet, sont mis au niveau logique 1. Lors de l écriture, les changements se font bit par bit. Seuls ceux devant passés à zéros sont changés. Normalement un changement de données en mémoire consiste en une procédure d effacement puis d écriture. Cela dépend en fait du contenu de l octet en mémoire principale comparé à la nouvelle donnée à écrire. Si aucun des 8 bits ne requiert un passage de 0 à 1, la procédure d effacement est supprimée. Vice versa, l accès en écriture sera supprimé si aucun passage de 1 à 0 n est nécessaire. Les opérations d effacement et d écriture prennent au minimum 2.5 ms chacune. La transmission s effectue sur 2 fils (donnée et horloge), c est une transmission série et le lsb de chaque octet est envoyé en premier, la validation de chaque bit se fait sur front descendant de CLK La mémoire principale est une EEPROM de 256 octet, on y stocke les donnée utile au système (jeton, crédit, unité, ) La mémoire de protection est une mémoire de 32 bits (4 octet) c est une prom, elle permet de protéger les 32 premier octet de la mémoire principale. Pour protéger le n^emme octets de la mémoire principale il suffit d écrire (mettre a 0L) le n^emme bit de la mémoire de protection La mémoire de sécurité est de 4 octets, elle sert à protéger la carte contre une écriture illicite
On souhaite que l identifiant de l industriel ne puisse pas être modifié, quelle action faut-il appliquer sur la mémoire? L identifiant de l industriel se trouve à l adresse $11 sur la mémoire principale. Il faut donc écrire le bit $11 (soit 17 en décimal) de la mémoire de protection D après la documentation technique de la carte à puce, quel est la gamme de fréquence autorisée pour l horloge? La gamme de fréquence pour l horloge de la carte a puce est de 7KHz a 50KHz On va vérifier que le programme assembleur respecte cette contrainte. Voici la partie du programme qui permet de créer l horloge : bset jsr bclr jsr port,y clk temp portc,y clk temp Calculer à l aide des instructions du 68HC11 et de son temps de cycle, la durée d une période d horloge et conclure sur le respect des contraintes de fréquence. Analyse : bset port,y clk 8Co Ton jsr temp 6Co bclr portc,y clk 8Co Toff jsr temp 6Co Temp dx #8 3Co Tp dex 3Co Bne tp 3Co Rts 5Co Donc le sous programme temp réalise une temporisation de Ton = 8+6+3+8*(3+3)+5 Co = 70Co Toff = 8+6+3+8*(3+3)+5 Co = 70Co 1Co = 4*1/7373200 = 542.5ns Une période de cette temporisation dure donc 140Co soit 75950ns f= 1/T = 1/75950*10^-9 = 13.17KHz Ce nombre ce situe entre 7Khz et 50Khz ce qui donc nous correspond Lecture du mode de lavage programmé sur une carte jeton Quelles sont les différences entre carte jeton et carte crédit? -la carte jeton est a usage unique or la carte crédit est restitué au client tant qu elle a du crédit -la carte jeton est programmé pour un type de lavage or la carte crédit permet l utilisation de Tous les types de lavages
PLAN MEMOIRE PARTIEL DE LA CARTE A PUCE Mémoire principale : Bits de poids faibles Bits de poids forts HEX. 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 ID 2 3 4 type unité 5 6 7 8 9 A B C D E F Mémoire de protection : 0 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 31 0L Mémoire de sécurité : $0 $1 $2 $3 Octet de référence Octet de référence 1 2 Compteur d erreurs Octet de refermer 3
La procédure reset and ATR consiste en la lecture des 4 premières adresses de l EEPROM soit 32 bits. Elle s achève par une mise en haute impédance de la ligne I/O soit un niveau logique 1 par la résistance de rappel à Vcc. Après un ATR le composant attend une commande. Chaque commande commence avec des conditions de démarrage, incluant une commande de 3 octets cadencée par autant d impulsion d horloge que nécessaire et fini par des conditions d arrêt. Définition de démarrage et arrêt : Condition de démarrage : Un front descendant sur I/O avec l Horloge au niveau haut. Condition d arrêt : Un front montant sur I/O pendant l état haut de l horloge. Après la réception de la commande, 2 modes sont possibles : Outgoing Data pour des opérations de lecture. Processing mode pour l effacement et l écriture. Descriptif des différents modes : Mode Outgoing Data Ce mode est dédié aux données sortantes. Le premier bit est valide sur la broche I/O après le premier front d'horloge descendant. Après le dernier bit, un front supplémentaire est nécessaire pour basculer la broche en état haute impédance et la carte est prête pour l'envoi d'une nouvelle commande. Durant ce mode aucun démarrage ou stop n'est nécessaire. Mode Processing Dans ce mode, la carte fonctionne en autonomie. La carte a cependant besoin d'être alimentée continuellement en front d'horloge jusqu'à ce que la broche I/O qui est passée à l'état bas après le premier front, re-bascule en état haute impédance. Durant ce mode aucun démarrage ou stop n'est nécessaire. Note : La broche RST doit être maintenue à l'état bas durant ces modes. Si RST passe à l'état haut pendant un état bas de l'horloge, toutes les opérations sont annulées et la broche I/O passe en haute impédance. (Break). Les 3 octets à envoyer pour réaliser une lecture d une case mémoire de la mémoire principale sont les suivant : -mot de contrôle -adresse -donnée III modification du nombre d unité d une carte de crédit après lavage
L opération préalable qui est nécessaire d effectuer sur la carte afin de modifier les données est d effectuer une vérification du PSC (programmable security code) II.3/ MANIPULATION Programme lecture_eleve.s modifié ******************************************************** * Operation - Lecture nombre d'unites sur la carte * * * * Entree: sortie: modif: * ******************************************************** prog_unites jsr startifd ldab #%00110000 ; instruction 1er octet jsr IFD ldab #$41 ; instruction 2e octet jsr IFD ldab #$FF ; instruction 3e octet n est pas prit jsr IFD ; en compte jsr stopifd
Envoie de la commande de lecture de l adresse $41 Réponse de la carte :
VERIFICATION DU PSC Début Lecture de EC (compteur d erreur) Oui Ec bloqué? (ec=$00) Non Mise a jour de EC passage de 0 d un bits Comparer 1 er octet code Comparer 2me octet code Comparer 3me octet code maj de EC (ec = $7) = effacer ec Tentative Lecture de EC Oui Comp echec? (ec = $7) non Fin
VERIFICATION DU PSC Début $31 xxx xxx $39 $00 $05 Aussi $06 ou $03 au Premier passage $33 $01 Code1 $33 $02 Code2 $33 $03 Code3 $39 $00 $FF $31 xxx xxx Fin
****************************************************** * Operation - Modification credits sur la carte * * * * Entree: sortie: modif: * ****************************************************** prog_credit jsr clr_aff ; effacement de l'afficheur ldx #txtinst0 ; Pointage vers le texte appui BP1 jsr aff_txt ; affichage du texte appui BP1 jsr appui_bp2 envoi_trame jsr clr_aff ; effacement de l'afficheur ldx #txttrame ; Pointage vers le texte Envoi trame jsr aff_txt ; affichage du texte Envoi trame jsr temp1s jsr startifd ldab #$38 ; commande d'ecriture jsr IFD ldab #$41 ; adresse ou l'on va ecrire jsr IFD ldab #$44 ; donnée a ecrire jsr IFD jsr stopifd2 jsr temp1s ldaa #$0F staa ddrc saut1 bset portc,y clk jsr temp bclr portc,y clk jsr temp brclr portc,y inout saut1 ; test de fin de procedure jsr temp1s jsr temp1s rts
Vérification que $44 a bien été écrit à l adresse $41
$44 a donc bien été écrit à l adresse $41