Forum: Mikrocontroller und Digitale Elektronik TMS320F28027 Security Unlocking


von Fritz F. (fritz1)


Lesenswert?

Hallo,

mit UNIFLASH habe ich in den TMS320F28027 ein PASSWORT (Key 0 (0xAE0) 
programmiert.

Jetzt komme ich mit dem JTAG-Debugger XDS100V2 natürlich nicht mehr in 
den TMS320F28027.

Im Technical Reference Manual steht unter 1.2.3.3.1 C ein Code Example 
to Unsecure, aber wie kann ich das im TMS320F28027 starten, wenn ich mit 
dem Debugger da nicht reinkomme?

Kennt sich da jemand aus?

Danke für Hilfe.

VG Fritz

von Alexander (alecxs)


Lesenswert?

Gar nicht. Geht nur über Bruteforce in der .ccxml wobei Key0 dein Trial 
ist und Key1 - Key7 0xFFFF sind. Vor jedem Trial ist ein Reset 
erforderlich.

von Fritz F. (fritz1)


Lesenswert?

Danke Alexander. Jetzt muss ich nur noch verstehen/herhausbekommen was 
Bruteforce in der .ccxml ist.

von Alexander (alecxs)


Lesenswert?

Bruteforce ist dasselbe wie Trial & Error, also alle 65535 Passwörter 
ausprobieren. Du kannst das Passwort auch direkt in der GUI im Uniflash 
eingeben. Oder eben über CCS Studio, die .ccxml liese sich mit einem 
Skript bearbeiten. Wichtig ist der Reset, da jedes falsche PW sofort 
sperrt. Also muss in der Richtung noch was gebastelt werden.

: Bearbeitet durch User
von Fritz F. (fritz1)


Lesenswert?

Danke Alexander für die Hinweise.

Hier das Problem genauer beschrieben:

Zunächst habe ich den F28027 mit dem CCSV12/XDS100V2 mit einem 
LED-Blink-Programm programmiert.

Danach über UNIFLASH -> Settings & Utilities -> Code Security ein 
TEST-Password

Key 7 (0xAE7): FFFF

Key 6 (0xAE6): FFFF

Key 5 (0xAE5): FFFF

Key 4 (0xAE4): FFFF

Key 3 (0xAE3): FFFF

Key 2 (0xAE2): FFFF

Key 1 (0xAE1): FFFF

Key 0 (0xAE0): 8848


eingegeben und den Button "LOCK" geklickt.

Dann habe ich UNIFLASH beendet und versucht über den CCSV12 / XDS100V2- 
Debugger in den F28027 zu kommen.

Dies funktionierte, wie zu erwarten war, nicht.

Danach habe ich UNIFLASH wieder gestartet und über
UNIFLASH -> Settings & Utilities -> Code Security Password
das Password eigegeben und den Button "UNLOCK" geklickt.

Danach kam die Fehlermeldung

Error connecting to the target: (Error -1135 @ 0x0) The debug probe 
reported an error.
Confirm debug probe configuration and connections, reset the debug 
probe, and retry the operation.
(Emulation package 20.3.0.3656)

Meine Frage:

wie kann ich das das Password wieder auf UNLOCK setzen?

Wie komme ich über den CCSV12 wieder in den F28027?

Danke für Antworten.

Alexander: Wie ist der RESET auszuführen.


Mein PCB hat ein RESET-Switch.

VG Frirtz

von Alexander (alecxs)


Lesenswert?

Du hast alles richtig gemacht. reset the debug probe and retry the 
operation, mehr kann ich auch nicht dazu sagen.

von Dieter S. (ds1)


Lesenswert?

Eventuell mal in SPRUFN6A ("TMS320x2802x Piccolo Boot ROM Reference 
Guide") Seite 20 lesen ("wait" boot mode), insbesondere den Hinweis für 
"2802x devices". Vielleicht ist das ja der Grund warum es Probleme gibt.

von Fritz F. (fritz1)


Lesenswert?

Danke für die Hinweise.


TI Support Forums - TI E2E Community

angeschrieben.

Schauen wir, was die sagen...

VG Fritz

von Dieter S. (ds1)


Lesenswert?

Ist denn nun der TMS320F28027 im "wait boot mode" per Konfiguration der 
"Boot Mode Selection" Pins? Dann sollte es funktionieren, siehe Doku.

von Fritz F. (fritz1)


Lesenswert?

Dieter, Sorry, auf TI und GOOGLE gibt es kein SPRUFN6A.

von Dieter S. (ds1)


Lesenswert?

Es ist schon schwer so eine Suchmaschine zu benutzen...

https://hardr.io/C2000%20Piccolo%20References/BootRom.sprufn6a.pdf

Die Rev. B davon gibt es auch, allerdings ist meiner Meinung nach die 
Erklärung in der alten Version besser.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Fritz F. schrieb:
> auf ... GOOGLE gibt es kein SPRUFN6A.
Auf Google durchaus und gleich an erster Stelle,
wenn man auf "Stattdessen suchen nach: SPRUFN6A" klickt:
https://www.google.com/search?q=SPRUFN6A&nfpr=1

von Alexander (alecxs)


Lesenswert?

Google ist einfach schlecht geworden. Ich nutze nur noch DuckDuckGo

https://duckduckgo.com/?q="SPRUFN6A";

von Fritz F. (fritz1)


Lesenswert?

Danke Alexander, der Link funktioniert

Bei

https://hardr.io/C2000%20Piccolo%20References/BootRom.sprufn6a.pdf

kommt hier

Warnung: Mögliches Sicherheitsrisiko erkannt...

von Dieter S. (ds1)


Lesenswert?

Ich bin raus, der TO hat offensichtlich keine Lust sich mit der Doku 
auseinanderzusetzen. Selbst wenn man den "bösen" Link 
(SSL_ERROR_BAD_CERT_DOMAIN, weil das Zertifikat der Webseite nicht für 
den exakten Name ist) nicht herunterlädt steht alles auch im Datenblatt 
des Chip unter "9.1.9 Security". Aber man müßte es halt auch lesen...

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Fritz F. schrieb:
> Warnung: Mögliches Sicherheitsrisiko erkannt...

Ja das stimmt. Du kannst aber irgendwo weiterklicken, Ausnahme 
hinzufügen... das ist nur ein https Fehler.

von Fritz F. (fritz1)


Lesenswert?

Unter
9.1.9 Security NOTE

• Falls zukünftig eine Neuprogrammierung eines gesicherten Geräts über 
JTAG erforderlich sein sollte, ist es wichtig, die Platine so zu 
konstruieren, dass das Gerät beim Einschalten in den Wartemodus versetzt 
werden kann (wenn eine Neuprogrammierung erforderlich ist)....

Ich muss schauen, ob das bei meiner HARDWARE möglich  ist und dann sehe 
ich weiter.

Alleine über UNIFLASH und den UNLOCK-Button scheint es def. nicht zu 
fkt.
Interessant ist auf die Rev. des Datab. Das erste erschien 2008. Erst 
2021 wurde  9.1.9  in der Form hinzugefügt.

VG Fritz

von Fritz F. (fritz1)


Lesenswert?

TI schreibt das gleiche -> Wartemodus.
D.H. IO34 auf 3,3V TDO auf GND, TRST# ist auf GND.

Nach RESET läuft das BLINK-Prog. erwartungsgemäß nicht mehr.

Jetzt den TDO wieder lösen (hight-impe) und den XDS100V2 drauf.

Wenn ich jetzt mit UNIFLASH versuche das PASSWORT zurückzusetzen kommt 
wieder die FEHLERmeldung....

Schauen wir, was TI sagt.

VG Fritz

von Dieter S. (ds1)


Lesenswert?

Fritz F. schrieb:
> TI schreibt das gleiche -> Wartemodus.
> D.H. IO34 auf 3,3V TDO auf GND, TRST# ist auf GND.

Das ist der "SCI Mode" und nicht "Wait", ist es wirklich so schwer 
"Table 9-1. Boot Mode Selection" zu lesen?

von Fritz F. (fritz1)


Lesenswert?

Hallo Dieter,

beim Umsetzen der Tabelle auf die Hardware ist der Fehler entstanden, 
und dann habe ich hier den Hardwarestatus wiedergegeben.

Jetzt konnte ich über UNIFLASH das PASSWORT eingeben und UNLOCK -> 
klick.

Der XDS100V2 nahm auch fehlerlos Verbindung auf.

Danach habe ich das Passwort auf 0xffff gesetzt und LOCK -> klick, in 
der Annahme, dass jetzt der F28027 wieder frei ist.

Nachdem ich die Verbindungen io34 und TDO gekappt hatte (hight impe.), 
RESET gegeben hatte, den XDS100V2 ab und wieder angeschlossen und den 
CCSV12 gestartet hatte, fkt. die Verbindung immer noch nicht.

Ist das kein "Freischalten", wenn ich als PASSWORT alle 8 0xffff wähle?

Danke für Antworten
VG Fritz

von Alexander (alecxs)


Lesenswert?

Nein. Passwort einmal gesetzt bleibt.

von Dieter S. (ds1)


Lesenswert?

Laut Datenblatt sollte der Unlock passen, Zitat aus "TMS320x2802x 
Piccolo Boot ROM Reference Guide":

"If the CSM passwords are erased (all 0xFFFFs) then this has the effect 
of unlocking the CSM."

Eventuell mal prüfen ob der Speicherbereich mit dem Passwort auch 
tatsächlich auf 0xFFFF gesetzt ist.

UNIFLASH kann aber auch ein "Unlock", wobei das "Unlock" wohl nicht bei 
allen Versionen bzw. OS Varianten verfügbar ist (unter Windows sollte es 
funktionieren).

Nachtrag: Eventuell auch versuchen den Flash vollständig zu löschen.

: Bearbeitet durch User
von Fritz F. (fritz1)


Lesenswert?

Hallo,

alles OK.

Man muss mit UNIFLASH noch den FLASH-Sektor A löschen!!!!

>To clear the programmed password, please erase Sector A of Flash memory.

Weil oben im FLASH-Sektor A ab 0x3F7FF8 das PASSWORT wohl steht.

Nur blöd, damit ist das Prog. auch gelöscht und man muss neu flashen.

Es gibt wohl auch keine Möglichkeit, nur gezielt ab 0x3F7FF8 das 
PASSWORT dort auf 0xFFFF zusetzen?

VG Fritz

P.S.: Danke Dieter, dass du weiterhin mitgelesen hast. Dein Tipp war 
goldeswert.

von Fritz F. (fritz1)


Lesenswert?

>Es gibt wohl auch keine Möglichkeit, nur gezielt ab 0x3F7FF8 das
>PASSWORT dort auf 0xFFFF zusetzen?

Vielleicht hat jemand darüber Kenntnisse, wie groß die Bereiche sein 
müssen, um das FLASH zu progarmmieren.

Dann könnte man den Bereich in's RAM laden, die Zellen bei 0x3F7FF8 
entsprechned auf 0xFFFF setzen und in's FLASH zurückspeichern.

VG Fritz

von Dieter S. (ds1)


Lesenswert?

Die Speicherbereiche sind im Datenblatt genau dokumentiert ("9.2 Memory 
Maps").

Ich sehe das Problem nicht, wenn man das Passwort kennt kann man per 
JTAG auf den Chip zugreifen und den Speicher auslesen. Wenn man dann das 
Passwort durch Löschen des Speichers zurückgesetzt hat schreibt man den 
vorher ausgelesenen Speicher zurück in den Flash.

von Fritz F. (fritz1)


Lesenswert?

DIETER: Wie groß ist die min. Größe eines Speicherbereiches, den man 
beim F28027 in's FLASH brennen kann?
Wortweise, nich wirklich.

von Dieter S. (ds1)


Lesenswert?

Ich verstehe den Sinn der Frage nicht: soll "min. Größe" die kleinste 
Größe sein? Das ist ein Bit, das dann "0" ist ("1" ist der gelöschte 
Zustand), aber das ist dann sicher kein sinvolles Programm oder Code.

Beschreib doch mal genau was Du erreichen willst.

von Fritz F. (fritz1)


Lesenswert?

Unfortunately re-programming a specific address is not possible without 
erasing the entire flash sector. The smallest amount of memory that can 
be erased at a time is a single sector.

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.