Forum: Mikrocontroller und Digitale Elektronik STM32 UUID auslesen


von Bülent C. (mirki)


Lesenswert?

Hallo,

ich versuche gerade die 96Bit UUID in einem STM32 auszulesen
1
#define UUID_ADRESS    0x1FFFF7E8
2
#define GETUNIQUE(x)    ((x >= 0 && x < 12) ? (*(uint8_t *) (UUID_ADRESS + (x))) : 0)
1
uint8_t UID[12];
2
3
for (i=0;i<12;i++)
4
 UID[i]=GETUNIQUE(i);

Das Byteweise auslesen funktioniert irgendwie nicht, aber wenn ich immer 
32Bit Stücke auf einmal auslese, dann klappt es.
1
#define UUID_ADRESS    0x1FFFF7E8
2
#define GETUNIQUE32(x)    ((x >= 0 && x < 3) ? (*(uint32_t *) (UUID_ADRESS + 4 * (x))) : 0)
1
uint32_t UID[3];
2
3
for (i=0;i<3;i++)
4
 UID[i]=GETUNIQUE32(i);

Da ist doch irgendwo der Wurm drinne!?

: Bearbeitet durch User
von Bülent C. (mirki)


Lesenswert?

RM sagt:
The 96-bit unique device identifier can also be read in single 
bytes/half-words/words in different ways and then be concatenated using 
a custom algorithm.

Also muss es Byteweise gehen

von (prx) A. K. (prx)


Lesenswert?

Bülent C. schrieb:
> for (i=0;i<11;i++)
>  UID[i]=GETUNIQUE(i);

Das sind 11 Bytes ...

> for (i=0;i<2;i++)
>  UID[i]=GETUNIQUE32(i);

... und das 8.

von (prx) A. K. (prx)


Lesenswert?

NB: "klappt nicht" ist eine wenig hilfreiche Fehlerbeschreibung.

von Bülent C. (mirki)


Lesenswert?

A. K. schrieb:
> Bülent C. schrieb:
>> for (i=0;i<11;i++)
>>  UID[i]=GETUNIQUE(i);
>
> Das sind 11 Bytes ...
>
>> for (i=0;i<2;i++)
>>  UID[i]=GETUNIQUE32(i);
>
> ... und das 8.

Ja, hatte im Debugger auf den ersten schleifen durchgang immer geschaut.
Dennoch kann ich irgendwie nicht byteweise zugreifen...sehr merkwürdig.

von Bülent C. (mirki)


Angehängte Dateien:

Lesenswert?

Anbei Ausschnitte vom Debugging

von (prx) A. K. (prx)


Lesenswert?

Und wo ist nun das Problem? Passt doch zusammen. Dass die STM32 little 
endian speichern und der Debugger Worte als Worte und nicht als 
Bytesequenzen anzeigt ist dir doch klar, oder?

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Bülent C. schrieb:
> Anbei Ausschnitte vom Debugging

Da sehe ich 2x denselben Inhalt. Der Memory Viewer ist stellt die Daten 
halt als 32 Bit Little Endian dar, das könnte man mal auf Einzelbyte 
umstellen.

: Bearbeitet durch User
von Bülent C. (mirki)


Lesenswert?

A. K. schrieb:
> Und wo ist nun das Problem? Passt doch zusammen. Dass die STM32
> little
> endian speichern und der Debugger Worte als Worte und nicht als
> Bytesequenzen anzeigt ist dir doch klar, oder?

ääähmmm stimmt...scheiße

Danke für's aufwecken

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.