IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

[CARTE SD] SPI commande 17 différence SD/SDHC


Sujet :

Embarqué

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2013
    Messages : 9
    Points : 9
    Points
    9
    Par défaut [CARTE SD] SPI commande 17 différence SD/SDHC
    Bonjour,

    Je réalise en ce moment un projet pour lequel j'ai besoin d'utiliser une carte SD.

    Je lis par bloc de 512 octets (taille des secteurs), ce qui me permet donc de lire un secteur d'un coup.
    Pour cela, j'utilise la commande 17 (CMD17) qui prend comme argument le numéro du secteur à lire pour les cartes SD, et l'adresse du secteur pour les cartes SDHC (enfin, d'après ce que j'ai lu).
    Je dois donc, pour les cartes SDHC, multiplier le numéro par le nombre d'octet par secteur, donc je multiplie par 512.

    Je lis donc le premier secteur de ma carte SD, qui se trouve être le Master Boot Record (MBR).
    A l'offset 452, je trouve le numéro du secteur du BSR; admettons, dans l'ordre des données que j'ai lu: 0x00 0x20 0x00 0x00.
    Le numéro est donc 0x2000 (puisque c'est en little endian).

    Puisque j'utilise une carte SDHC, j'envoie donc la commande 17 avec comme argument non pas le numéro, mais l'adresse: 0x2000000000000 (décalage de 9 vers la gauche puisque multiplier par 512).
    Mais je ne trouve pas le BSR. J'essai donc sans le décalage, et donc envoie l'argument 0x20000: et là, je trouve le BSR.

    Comment cela se fait-il? Est-ce que je dois, que ce soit pour les cartes SD et pour les cartes SDHC, envoyé le numéro comme argument?
    Car je ne suis qu'au début, et je ne peux donc pas vérifié avec les secteurs contenant les fichiers (pas encore codé).



    Merci d'avance.



    PS: Je sais que je pourrais utiliser les librairies déjà codées, mais je préfére tout coder.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 191
    Points : 28 070
    Points
    28 070
    Par défaut
    Citation Envoyé par Shekyl Voir le message
    A l'offset 452, je trouve le numéro du secteur du BSR; admettons, dans l'ordre des données que j'ai lu: 0x00 0x20 0x00 0x00.
    Le numéro est donc 0x2000 (puisque c'est en little endian).

    Puisque j'utilise une carte SDHC, j'envoie donc la commande 17 avec comme argument non pas le numéro, mais l'adresse: 0x2000000000000 (décalage de 9 vers la gauche puisque multiplier par 512).
    Si c'est du LE, ça donne 0x00 00 20 00, ok, mais multiplier par 512, c'est un décalage de 9 d'accords, mais 9 bits seulement, soit un octet plus un bit.

    0x00002000 * 512(d) = 0x00400000
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2013
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Ah oui, pas fait attention ^^

    La valeur qui était calculée était bien 0x00400000.



    -----------

    Mais je pense avoir trouvé pourquoi, dans le MBR, au type de partition, j'ai 0x0B; donc une FAT32 avec adressage CHS; mais en faite, j'ai trouvé sur wikipédia que l'adressage est aussi LBA (enfin, il y a les deux dans la colonne).

    Donc comment la carte peut-elle savoir si c'est une adresse LBA ou CHS?

Discussions similaires

  1. commande perl de différence
    Par narmika dans le forum Langage
    Réponses: 7
    Dernier message: 06/04/2007, 19h15
  2. Réponses: 6
    Dernier message: 29/03/2007, 18h46
  3. Commander une carte d'aquistion 'port isa'
    Par samia_6 dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/09/2006, 17h36
  4. Différence entre commands.getoutput() et os.popen()
    Par alison239 dans le forum Général Python
    Réponses: 3
    Dernier message: 07/03/2006, 11h52
  5. commander une carte fax via access
    Par dpie dans le forum Access
    Réponses: 5
    Dernier message: 09/09/2005, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo