Hallo, ich möchte ein TPM (Trusted Platform Module) via SPI an einen uC anschließen. Ich finde eine Unmenge an Beschreibungen der Kommandos und Antworten auf https://trustedcomputinggroup.org/resources/? aber ich finde nicht, wie ich diese auf SPI verpacken muss. Ich gehe davon aus, dass ich das Kommando wie bei einer SD-Karte an das TPM sende. Aber wie erhalte ich die Antwort? Oder wann ist die Antwort bereit? Oder wann soll ich diese Abfragen? Ich senden z.B. bei einem TPM_CC_Startup mit 12 Bytes an das TPM. Die Antwort scheint aber nur 10 Bytes lang zu sein. Also scheint schon mal auszuscheiden, dass bei jedem gesendeten Kommandobyte einem Byte empfangen wird. Vermute auch, dass das Kommando erst komplett durch sein muss, das TPM es verarbeitet, bevor das TPM eine Antwort generieren und zurücksenden kann. Einfach CS selektiert lassen und CLK weiter toggeln? Oder CS loslassen und neue Übertragung starten (mit lauter 0x00?), um die 10 Byte abzuholen? Gibt es vielleicht sogar eine Spec. oder ein Datenblatt, in dem dies beschrieben ist? Vielen Dank im Voraus! Schöne Grüße, Marie
Marie M. schrieb: > Ich senden z.B. bei einem TPM_CC_Startup mit 12 Bytes an das TPM. Die Kunst ist, nicht die 12 Bytes in einem Stück via SPI zu senden, sondern jedes der 12 Bytes einzeln in einem "WriteByte" (o.ä.) Command, d.h. es gibt einen zusätzlichen Layer, der Register nachbildet, die man dann einzeln beschreiben/lesen kann. Beispiel Lesen: Man schickt 5 Bytes runter (0x80, 3 Bytes Adresse, 1 Dummy Byte) und erhält mit dem Senden des Dummy Bytes das zu lesende Byte zurück. Es gibt auch einen Flow Control Mechanismus (wird in den Eingabe-Daten beim Senden des letzten niedrigsten Adressbytes signalisiert), den ich aber nicht näher angeschaut habe. Für meinen kleinen Test ging es auch ohne. (Ich konnte z.B. von Adresse 0xD40030 ein Byte lesen).
:
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.