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.
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...