Hallo an alle, Ich habe ein fertiges Programm auf einem MSP430 zu laufen. Benutzen tue ich das eZ430-RF2500 Development Tool. Ich möchte diesen Code gegen Auslesen mit einem Passwort schützen, falls dieses in der fertigen Applkation versucht wird. Habe Diverses über BSL und BSL Script Language gelesen, verstehe es jedoch nicht ganz! Wie binde ich das BSL in den Quellcode ein?? Wie setzt man das Passwort?? Wie wird es dann abgefragt?? Was hat es mit den .txt Datein auf sich ??? Kann jemand konkrete Beispiele geben??? Diverse SLAAXX habe ich auch schon gelesen, aber irgendwie fehlt mir der Einstieg Für Hilfe wäre ich dankbar MFG
Naja, zuerst mal musst du die JTAG Fuse durchbrennen. Dann ist der Zugang nur noch per BSL möglich. BSL ist der Bootstrap Loader und der ist fest und nicht löschbar in jedem MSP430 eingebaut. Und wenn man dann den Chip auslesen will, braucht man das Passwort. Bei den älteren Versionen war das einfach der komplette Interrupt-Vektor-Speicher, bei den neuen MSPs gibts ein extra generierbares Passwort. Näheres findest du hier: http://focus.ti.com/mcu/docs/mcusupporttechdocsc.tsp?sectionId=96&tabId=1502&abstractName=slaa089e Ohne das Passwort kann man (zumindest bei den alten) den Chip nur löschen. Ich glaub bei den neuen kann man selbst das noch unterbinden.
Christian R. wrote: > Ohne das Passwort kann man (zumindest bei den alten) den Chip nur > löschen. Ich glaub bei den neuen kann man selbst das noch unterbinden. Es gab auf dem letzten CCC ( http://events.ccc.de/congress/ ) einen Vortrag, in dem beschrieben wurde, wie man das Kennwort bei einigen MSPs aus dem BSL rauskitzeln kann.
Richtig, klappt aber nur bei den alten, mit dem Pseudo-Passwort.
Danke erstmal-- In der von Christian R. angegeben Datei unter 3.7 steht: The password itself consists of the 16 interrupt vectors located at addresses FFE0h to FFFFh (256 bits) Wo programmiert man die genau rein?? in die main, header, extra datei?? Wie könnte sowas programmiert aussehen?? Sind das dann 16 Register?? MFG
Die musst du nirgends reinprogrammieren, das ist in deinem Programm automatisch drin. Nur wenn man das Original-File hat, was der Kompiler ausspuckt, kann man auch auslesen. Bei den alten mit dieser Technik lässt sich kein eigenes Passwort vergeben. Diese 256 Bit sind die Interrupt Vektor Tabelle, die dürfte bei jedem Programm anders aussehen, weil der Linker ja deinen Code für die ISRs nach Gutdünken im Programmspeicher verteilen kann. Du musst also gar nix machen. Nur darfst du dem Kunden nicht das Hex-File geben, dann könnte er den Chip auch auslesen. Macht ja aber keinen Sinn dann. Achja, zu deiner Frage ganz oben. Das TI-Text File ist ein ASCII File, was den kompletten Programmcode enthält. Mit den üblichen Tools für den MSP430 kannst du das erstellen lassen. Zum Programmieren kannst du dann das Tool MSPFET nehmen.
Programmiert habe ich mit dem Tool Code Composer. Damit wird auch der Code auf den MSP430 gespielt. Ich muss also dafür sorgen, dass der Code im TI-Text File vorliegt! Ich habe hier mal ein Beispiel Prog!! Example Script to invoke BSL, upload RAM BSL, download data faster: INIT_COMM 5438 COM1 INVOKE_BSL TX_BUFFER_SIZE RX_PASSWORD Pass.txt RX_DATA_BLOCK RAM_BSL.txt SET_PC 0x220 CHANGE_BAUD_RATE 153600 TX_DATA_BLOCK 0xC000 0x100 output.txt CLOSE_COMM Versteh ich das richtig, dass mein richtiges Programm mit dem Befehl RX_DATA_BLOCK RAM_BSL.txt raufgespielt wird?(später dann natürlich angepasst)???? Kann ich das mit dem Code Composer irgendwie machen??? Kann ich das mit MSPFET machen?? Wie kriege ich das Passwort file???? Wo müssen die .txt Files hin?? Kann mir einer eine grobe step by step Faden geben, wie das alles miteinander verknüpft werden muss MFG
Es gibt kein Passwort File. Das Passwort ist das Programm selbst (bzw. die letzten 32 Byte). Nur wenn man ohnehin das komplette File hat, kann man den MSP auslesen. Im Code Composer 3 kannst du bei PostBuild Step bei den Projektoptionen einstellen, dass er das TI-Text File erstellt. Am einfachsten machst du das dann per MSPFET in den MSP. Macht aber nur Sinn in der Produktion dann, wenn die JTAG Fuse durchgebrannt ist. Normal kannst du ja erst mal mit JTAG arbeiten.
Der Programmer von elprotronic kann ein Password erstellen, indem die nicht benutzten Bytes mit eigenen Werten beschrieben werden. Ausserdem kann man verschiedene Methoden beim Zugriff mit falschem PW einstellen: Ignorieren, Speicher löschen oder den µC komplett sperren. Ich habe mal einen Screenshot angehängt. Arno
Also ich habe jetzt in den Post Build Steps das hier eingestellt!! Create flash image: TI-TXT Das Programm wird auf den MSP gespielt. Wo legt er jetzt das TI-TXT File ab?? Kann es nicht finden
Im Projektverzeichnis und dann Debug oder Release. Je nachdem, welche Build-Konfiguration du gerade ausgewählt hast. Also da, wo auch das aktuelle .out File liegt.
Ok super--das prog liegt jetzt im TI-TXT File vor !!! Aus einem englischen Forum heißt es: I'm wondering what the format for the password text file should be.....I know it consists of the 16 interrupt vectors located at FFE0h through FFFFh, but how should the data in the file be formatted? If you tell the Linker to generate TI-TXT formatted output when you compile/assemble/link your original code. The last three lines of the output ???.txt file is what you need for the password.txt file. @ffe4 XX XX @fff2 XX XX @fffe XX XX q Wie muss ich jetzt weiter vorgehen
Was genau willst du denn machen? Das ist alles so konfus bei dir. Ich denke, du überspielst die Software mit dem CCE3 und dem JTAG Debugger? Bist du denn mit der Entwicklung komplett fertig und willst das Gerät jetzt verkaufen, oder wie? Wenn du den MSP430 gegen auslesen schützt, ist das unwiderruflich, man kann dann diesen Chip nie wieder per JTAG ansprechen. Nix debuggen, nix schreiben, nix lesen. Wenn du das wirklich willst: Das geht im CCE3 so: Taget -> Make Secure. Aber du brauchst ja dann zum Programmieren erst mal eine BSL Hardware, das geht nicht mit dem JTAG Teil. Hast du die überhaupt?
Der Code ist fertig !! Ich benutzte das eZ430-RF2500 Development Tool. Das besteht aus 2 Boards, Eins wo der MSP drauf ist und ein USB Board. Das USB Board ist verbunden mit dem PC wo mit CCE2 progammiert wird. Die Schnittstelle zwischen USB Board und MSP Board ist eine Spy-Bi Wire & MSP Application UART Schnittstelle. Die gleiche Schnittstelle ist auf der fertigen Plantine zu finden, womit man den Code raufspielt. Die JTAG soll NICHT durchgebrannt werden !!Völlig egal was mit der ist! Es soll lediglich die Variante mit BSL da rein, mit diesem Passwort !!! BSL Hardware habe ich NICHT !!! Nur die 2 Boards !! Ist diese zwingend nötig???? Hoffe es ist jetzt etwas klarer !!!
Du hast es noch nicht kapiert. Lies endlich mal die Dokus. Solange die JTAG Fuse nicht durchgebrannt ist, kann jeder den Code auslesen. Die BSl-Variante ist kein anderer Code, das ist genau der selbe Hex-Code wie das File, was per JTAG reingespielt wird. Nochmal: Es gibt kein extra BSL-Code File und kein Passwort. Das Passwort ist der Code selbst. Und der ist gleich, egal ob JTAG oder BSL. Der BSL ist ein Bootloader, der gänzlich anders angesprochen wird, als JTAG. Sowohl elektrisch als auch softwareseitig. Aber solnage du das JTAG Interface nicht durchbrennst, hat das alles keinen Sinn. Und benutze bitte CCE3, die Version 2 ist total buggy und wird auch nicht mehr supportet. Wenn du die Spy-Bi-Wire Schnittstelle als einzige zum Programmieren auf dem fertigen Board hast, kannst du den Chip nur gegen Auslesen schützen, wenn du die Fuse durchbrennst. Aber kann kommst du überhaupt gar nicht mehr ran. Designfehler deinerseits.
Ich weiß, dass es keinen Sinn macht !! Stell Dir folgendes nicht Sinvolles vor: 1.Wenn es einer über JTAG den Code rausholt, ist es völlig egal. Soll er machen. 2.Wenn einer es über BSL versucht, soll es aber NICHT gehen. Geht die 2. Variante in den MSP zu kriegen??
Rai wrote: > Ich weiß, dass es keinen Sinn macht !! > > Stell Dir folgendes nicht Sinvolles vor: > > 1.Wenn es einer über JTAG den Code rausholt, ist es völlig egal. Soll er > machen. > > 2.Wenn einer es über BSL versucht, soll es aber NICHT gehen. > > Geht die 2. Variante in den MSP zu kriegen?? Für 2. musst du überhaupt gar nix machen. Du darfst ihm nur nicht das txt File geben. Wenn er das nicht hat, kommt er per BSL nicht ran. Macht aber wie du ja auch selber sagst, keinen Sinn, denn SBW oder JTAG geht ja trotzdem.
Hi Rai, Rai wrote: > Stell Dir folgendes nicht Sinvolles vor: > > 1.Wenn es einer über JTAG den Code rausholt, ist es völlig egal. Soll er > machen. > > 2.Wenn einer es über BSL versucht, soll es aber NICHT gehen. Warum sollte man das so haben wollen? Ich verstehe die Intention nicht. Selbst die Bahn dachte mit den Call-A-Bikes, dass z.B. das komplette Eingießen gegen Auslesen helfen könnte und hat die Fuses teilweise nicht verbrannt. Die Quittung gabs dann auch.
Gut! Nehmen wir mal an, ich selber möchte das Prog vom MSP über BSL lesen. Ich habe meine Plantine mit MSP, und das Hex-File. Wie sieht Prozedur aus per BSL an den Code zu kommen und welche genaue Rolle spielt das HEX File dabei??
Beim Auslesen dient das hex oder txt File lediglich dazu, die letzten 32 Byte als Passwort dem MSP430 zu schicken, damit der Flash-Inhalt ausgelesen werden kann. Das setzt aber erst mal einen BSL Programmer voraus, und die Möglichkeit, an die Pins zu kommen. Wenn man das hex oder txt File aber sowieso hat, braucht man es nicht mehr auszulesen, ist also alles komplett sinnbefreit, was wir hier diskutieren. Vereinfacht gesagt: Über BSL ist nur ein Vergleich des Flash-Inhaltes gegen ein hex oder txt File möglich. Sind die Files unterschiedlich, kommt man an den Flash-Inhalt nicht ran. Da das File das Passwort selbst ist, kannst du nur auslesen, was du ohnehin schon hast. Also kannst du es auch gleich sein lassen. Mir ist allerdings immer noch völlig unklar, was du damit bezwecken willst. Nahezu jeder, der mit dem MSP430 arbeitet, hat einen JTAG Debugger, damit käme er immer noch an deine Software.
Danke für die tolle Aufklärung über BSL. Dass das Programm selber das Passwort ist, war mir anfangs nicht ganz klar. Dachte man muss das selber irgendwie definieren. Falls irgendeiner per BSL an den Code will, muss ich ihm also das TI-TEXT Hex File geben, ansonsten geht es nicht !!!! Nur noch eine kurze Frage zum Schluss: Der MSP sei jetzt fertig aufm PCB implementiert. Die JTAG Schnittstelle wurde nicht rausgelegt. Kommt man dann trotzdem super leicht an den Code???
Rai wrote: > Nur noch eine kurze Frage zum Schluss: > > Der MSP sei jetzt fertig aufm PCB implementiert. Die JTAG Schnittstelle > wurde nicht rausgelegt. Kommt man dann trotzdem super leicht an den > Code??? Naja, Käbelchen an die Pins löten und fertig. Aber wie programmierst du ihn denn ohne die JTAG Schnittstelle? Du sprichst in Rätseln.
Rai wrote: > Der MSP sei jetzt fertig aufm PCB implementiert. Die JTAG Schnittstelle > wurde nicht rausgelegt. Kommt man dann trotzdem super leicht an den > Code??? Naja, du musst schon lesen, was geschrieben wird. Es gibt Leute, die Schleifen sich zur Not durch die Vergussmasse bis zum MSP vor, um dort dann ihr JTAG anschließen zu können. Ich verstehe aber auf den Tod nicht, warum du nicht einfach die Fuse brennst und gut...
Wenn ich die JTAG Fuse durchbrennen lassen möchte ! An welchen Pins des MSP430 müßte welche Spannung anliegen??
Lies die Doku(SLAU138). Da stehts drin. Das maacht man nicht manuell, sondern über den JTAG-Debugger.
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.