Valeur des octets dans un .hex

Bonjour,

Je commence =C3=A0 coder un bootloader afin de pouvoir mettre =C3=A0 jour l'application d'un micro-contr=C3=B4leur AVR (Atmega644) via une interface MIDI, en utilisant les SySex.

Pour cela, je dois m'assurer que le 8e bit de chacun des octets que j'envoie soit nul.

Pour tout =C3=A7a, aucun probl=C3=A8me.

Le truc, c'est qu'en examinant (enfin, en survolant =C3=A7a serait plus exact) le contenu du .hex de mon application (pas le bootloader, hein : il est pas encore cod=C3=A9 :-) ) avec un =C3=A9diteur hexad=C3=A9cimal, je= remarque que les valeurs des octets ne d=C3=A9passent jamais 0x7F. On est m=C3=AAme assez loin puisque =C3=A7a ne d=C3=A9passe m=C3=AAme pas 0= x50.

Donc ma question porte sur la valeur de ces octets. Peut-=C3=AAtre qu'il y a une chose (raison technique, norme ou je ne sais quoi) qui fait que la valeur de ces octets ne d=C3=A9passera jamais 0x7F et dans ce cas, je pourrais m'affranchir d'un encodage 8 bits -> 7 bits. Je penche plut=C3=B4t sur le fait que c'est juste un =C2=AB coup de chance = =C2=BB dans mon cas ...

Vous avez une id=C3=A9e ?

Merci, Lo=C3=AFc

Reply to
Loïc GRENON
Loading thread data ...

On 19 juil, 19:02, Lo=EFc GRENON

Un fichier HEX est =E9ditable, donc cod=E9 en ASCII : ca explique pourquoi, avec un =E9diteur hexad=E9cimal, toutes les valeurs soient

Reply to
Jean-Christophe

Le Tue, 19 Jul 2011 10:26:37 -0700, Jean-Christophe a écrit :

Reply to
moi-meme

moi-meme a tapoté du bout de ses petites papattes :

JC veut dire qu'en ouvrant un fichier hexa codé ASCII on ne verra que des codes ASCII : donc des chiffres (30 à 39), les lettres de A à F (donc 41 à46 en majuscules ou 61 à 66 en minuscules, selon le codeur) et l'espace (20).

--
LeLapin
Reply to
LeLapin

LeLapin a tapoté du bout de ses petites papattes :

J'oubliais CR et LF, le cas échéant.

--
LeLapin
Reply to
LeLapin

Le mardi 19 juillet 2011 =C3=A0 21:44 +0200, LeLapin a =C3=A9crit :

ue pourquoi,

caract=C3=A8res de 0 =C3=A0 9=20

en d=C3=A9cimal).

que des=20

F (donc 41 =C3=A046=20

ce (20).

Et DEL, EOT, ACK, NUL et tous les autres non imprimables, non ?

Reply to
Loïc GRENON

Loïc GRENON a tapoté du bout de ses petites papattes :

Qu'est-ce que ça viendrait foutre dans un fichier hexa affiché en Ascii ?

--
LeLapin
Reply to
LeLapin

Le mardi 19 juillet 2011 =C3=A0 22:00 +0200, LeLapin a =C3=A9crit :

ique pourquoi,

x caract=C3=A8res de 0 =C3=A0 9=20

5 en d=C3=A9cimal).

a que des=20

=A0 F (donc 41=20

r) et l'espace=20

en Ascii=20

Qui a dit que c'est *affich=C3=A9* en ASCII ? Perso, je vois les valeurs hexa ... donc c'est affich=C3=A9 en hexa ...

Reply to
Loïc GRENON

Le mardi 19 juillet 2011 =C3=A0 21:44 +0200, LeLapin a =C3=A9crit :

e pourquoi,

aract=C3=A8res de 0 =C3=A0=20

n d=C3=A9cimal).

e=20

=A0 F=20

odeur)=20

Ok, merci. Mais euh, maintenant, je me demande : quand je passe ce fichier hex au programme de flashage (avrdude), il ne fait que lire b=C3=AAtement ces caract=C3=A8res ASCII et les envoie tels quels au =C2=B5C ou il y a un trai= tement de fait dessus ?

En gros, pour revenir =C3=A0 mon probl=C3=A8me de d=C3=A9part : ma conversi= on 8 bits ->

7 bits, je peux m'en affranchir ou non ?

Merci !

(D=C3=A9sol=C3=A9 si ce message apparait en double mais il n'a pas l'air d'= =C3=AAtre bien pass=C3=A9 ...)

Reply to
Loïc GRENON

Loïc GRENON a tapoté du bout de ses petites papattes :

Bon, je recommence. Prenons l'exemple des fichiers .hex tels que définis par Intel. Si tu ouvres ton fichier avec le bloc-notes, tu auras un truc du genre : :10246200464C5549442050524F46494C4500464C33

Dans ce format, il n'y a pas d'espace (20). Mais il y a CR LF en fin de ligne, que le bloc-notes interprètera comme un saut de ligne.

Mais si tu l'ouvres avec un éditeur hexadécimal, tu verras :

3A 31 30 32 34 36 32 30 30 34 36 34 43 35 35 34 39... et 13 10 à la fin de la ligne. Capito ?
--
LeLapin
Reply to
LeLapin

LeLapin a tapoté du bout de ses petites papattes :

Désolé, on ne le voit pas because c'est interprété par mon newser, mais juste avant le premier chiffre il y a un ":"

--
LeLapin
Reply to
LeLapin

Le mardi 19 juillet 2011 =C3=A0 22:17 +0200, LeLapin a =C3=A9crit :

rra que des=20

=C3=A0 F (donc 41=20

eur) et l'espace=20

=A9 en Ascii=20

s

u=20

=20

fin=20

Je sais ce qu'est un code ASCII, merci ;) Mais l=C3=A0, t'es en train de me dire que les fichiers HEX sont compos=C3= =A9s uniquement des caract=C3=A8res ASCII affichables ou j'ai toujours rien compris ?

Reply to
Loïc GRENON

Loïc GRENON a tapoté du bout de ses petites papattes :

Si ton flasheur sait décoder des fichiers .hex correctement, c'est bon, sinon utilise Hex2Bin :

et tu auras un fichier binaire avec de vrais octets qui se suivent.

J'ai pas très bien compris pourquoi tu voulais convertir de 8 à 7 bits.

--
LeLapin
Reply to
LeLapin

Le mardi 19 juillet 2011 =C3=A0 22:24 +0200, Lo=C3=AFc GRENON a =C3=A9crit = :

verra que des=20

=C3=A0 F (donc 41=20

odeur) et l'espace=20

=C3=A9 en Ascii=20

urs

tu=20

=20

a fin=20

=C3=A9s

D'ailleurs, =C3=A7a commence bien par 3A 31 30 mais le reste ne correspond pas et la fin non plus

Reply to
Loïc GRENON

Loïc GRENON a tapoté du bout de ses petites papattes :

Si tu as tout compris. Un fichier .hex ne contient que des ":", des "0" à "9" et des "A" à "F", et des CR/LF.

--
LeLapin
Reply to
LeLapin

Loïc GRENON a tapoté du bout de ses petites papattes :

Evidemment, je te donne juste un exemple ! :D Ouvre ton .hex avec le Bloc-notes et tu verras comment c'est fait.

--
LeLapin
Reply to
LeLapin

Le mardi 19 juillet 2011 =C3=A0 22:25 +0200, LeLapin a =C3=A9crit :

traitement

on,=20

Aaaah, =C3=A7a a l'air d'=C3=AAtre une piste :)

ersion 8 bits ->

7 bits.

Parce que je veux faire un bootloader afin de mettre =C3=A0 jour mon appli = en utilisant une interface MIDI et les SySex. Et en MIDI, les messages de donn=C3=A9es sont cod=C3=A9s sur 7 bits, sinon = (si le

8e bit est =C3=A0 1), c'est un message de statut ou syst=C3=A8me.
Reply to
Loïc GRENON

Loïc GRENON a tapoté du bout de ses petites papattes :

Ben oui mais pour dire à ton device Midi que tu lui envoies des sysex tu dois envoyer un F0 au début et un F7 à la fin, et l'intérieur d'un sysex est en 8 bits (avec parfois le poids fort à 1).

--
LeLapin
Reply to
LeLapin

LeLapin a tapoté du bout de ses petites papattes :

Ce qui veut dire que dans le code destiné à ton µC tu n'auras pas le droit d'envoyer un F7... sinon ça fermera ton encapsulation sysex.

--
LeLapin
Reply to
LeLapin

LeLapin a tapoté du bout de ses petites papattes :

Si tu utilises un PIC 16, comme je viens de le remarquer, il a son code en 14 bits (2x7 donc), je suppose que c'est fait pour simplifier le téléchargement de code en gardant tout ce qui est >7F pour le contrôle du transfert.

--
LeLapin
Reply to
LeLapin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.