Forum: Mikrocontroller und Digitale Elektronik R8C13 Software auslesen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Karsten (Gast)


Lesenswert?

Hallo

Kann man die Software, die ein R8C13 durchläuft nachträglich auslesen - 
also aus dem µC auslesen und wieder im HEW sichtbar machen ?
Wenn ja wie ?

Zweite Frage:
Kann man als Programmierer des R8C13 sein Programm vor dem Auslesen 
schützen ?
Wenn ja wie ?


lg, Karsten

von Olaf (Gast)


Lesenswert?

> also aus dem µC auslesen und wieder im HEW sichtbar machen ?

Nein. Du kannst bei einigen Renesasprozessoren den Code auslesen wenn du 
ihn abloetet, die ID kennst und mit einem Parallelbrenner ausliesst. Ich 
vermute aber mal die kleinen R8C werden alleine wegen ihres kleinen 
Gehaeuse keinen Parallelmode haben.

> Kann man als Programmierer des R8C13 sein Programm vor dem Auslesen
> schützen ?

Klar. Das machst du ja jetzt bereits. :-)

> Wenn ja wie ?

Jedesmal wenn man mit dem Prozessor redet muss man eine ID uebergeben. 
Die ist bei einem neuen Prozessor defaultmaessig auf ff ff ff ff ff. Da 
kannst du auch was anderes eingeben. Aber gut merken. .-)

Olaf

von Karsten (Gast)


Lesenswert?

Danke für deine Antworten.

Wo finde ich die ID ?

Ich verwende blos die Software von Elektor (12/2005).
Also HEW und den Flasher (FDT 3.4).

lg

von Olaf (Gast)


Lesenswert?

> Wo finde ich die ID ?

Das weiss ich nicht mehr, zu lange her. :-)
Es kann sein das sie vom Flashtool aus einer Datei gelesen wird.

Aber pass auf! Du hast ja den Debugger und ein Flashtool. Beide wollen 
mit dem Prozessor reden und beide brauchen dafuer die richtige ID.

Oh..und hast du schonmal das Datenblatt deines Prozessors gelesen? Da 
sollte es einen Punkt ID Code Check Funktion geben. (Ich hab selber 
gerade nur das Datenlatt zum R8C/1A hier) Da siehst du wo die IDs im 
Prozessor liegen. Wenn dir das klar ist dann koenntet du zwei Dinge tun:

1. Ein kleines Programm schreiben das dir diese Bytes auf deinem Display 
anzeigt fuer den Fall das du gleich Mist baust.

2. Mal schauen ob die IDs nicht im normalen Programm gesetzt werden. 
Grundsaetzlich sind die IDs ja ganz normale Bytes im Programm. Die 
koennen also auch bereits in deinem Binaerfile stehen was du da 
reinflasht. Es kann aber sein das die Tools eine Funktion haben womit 
sie diese Bytes vor dem Flashen austauschen. Ich hab z.B noch in 
Erinnerung das bei einem der Flashtools von REnesas ein Fenster aufging 
wo man jedesmal dieses Bytes eintippen musste. Es kann sein das dieses 
Fenster nicht aufgeht wenn das Tool auf der Platte eine Datei findet 
welche die ID setzt.

Wie gesagt, ist schon lange her und ich benutze normalerweise andere 
Tools.

Oh..warum willst du die IDs ueberhaubt veraendern? Das macht doch nur 
Sinn wenn man Projekte in Stueckzahl laufen hat. Fuer ein bisschen 
basteln mit Elektor sehe ich da wenig Nutzen.

Olaf

von Karsten (Gast)


Lesenswert?

Hi

In meinem Datenblatt wird der Suchbegriff "ID Code Check" nicht 
gefunden.
Auch über "ID" ist nichts zu finden.

Warum ich die ID verändern möchte:
Eigentlich möchte ich blos wissen wie das geht. Habe zZ. keine Projekte 
mit hohen Stückzahlen geplant.
Ist auch nicht weiters wichtig.


lg

von Juergen (Gast)


Lesenswert?

Du mußt ins Hardware Manual gucken, z.B. rej09b0111_r8c13hm.pdf .

von Sebastian B. (m0nkey)


Lesenswert?

Hi,

also bei einem R32C und einem V850 Compiler steht es in der "fvector.h". 
Sieht dann zum Beispiel so aus:
1
_asm("  .id  ""\"#FFFFFFFFFFFFFF\"");

Wobei die Hex-Werte der ID-Code ist. Das ist aber von deinem Compiler 
abhängig wo du diesen einstellst. Am besten du schaust mal in den 
ASM-Dateien oder dort wo die Interrupt Vectoren definiert werden.

Du musst also eher im Compiler Manual, als im Hardware Manual nachsehen.

Aber wie schon gesagt wurde, wenn du da Mist baust und den ID Code nicht 
mehr weißt, dann kannst du den Controller wegschmeißen. Denn ohne 
ID-Code kommt man dann nicht mehr drauf. Wenn man z.B. einen Fehler beim 
flashen des Controllers hat, kann es auch passieren, dass der ID-Code 
einen undefinierten Zustand annimmt. Dann ist der Controller auch nur 
noch Schrott. :D

Außerdem es es wohl möglich den Binärcode mit einem Debugger wieder vom 
Controller auszulesen, vorausgesetzt du kennst den ID-Code. Allerdings 
ist dass dann ASM-Code und lässt sich nicht ohne den Original Code 
wieder nach C überführen. Außer du nutzt einen Disassembler, dann sind 
die Funktions und Variablen Namen einfach nur durchnummeriert und haben 
keine echten Namen mehr.

Gruß
m0nKeY

von Osche R. (Gast)


Lesenswert?

Karsten schrieb:

> Wo finde ich die ID ?

in den fixed interrupt vectors. Die haben 24 bit und sind als u32 
definiert. Die obersten Bytes ergeben die ID. Default ist 7x 0x00 oder 
0xFF.


Wenn Du "ALeRASE" als ID angibst, dann wird der Controller gelöscht und 
die Default-ID wiederhergestellt. Dann ist zwar der Inhalt futsch, aber 
zumindest die Hardware wieder benutzbar.

Kann aber sein, dass der R8C/1x dieses Feature noch nicht kennt, der ist 
ja steinalt.

von Sebastian B. (m0nkey)


Lesenswert?

om pf schrieb:
> Karsten schrieb:
>
>> Wo finde ich die ID ?
>
> in den fixed interrupt vectors. Die haben 24 bit und sind als u32
> definiert. Die obersten Bytes ergeben die ID. Default ist 7x 0x00 oder
> 0xFF.
>
>
> Wenn Du "ALeRASE" als ID angibst, dann wird der Controller gelöscht und
> die Default-ID wiederhergestellt. Dann ist zwar der Inhalt futsch, aber
> zumindest die Hardware wieder benutzbar.
>
> Kann aber sein, dass der R8C/1x dieses Feature noch nicht kennt, der ist
> ja steinalt.

Das ist der Ort, wo die ID intern im Controller zu finden ist. 
Interessanter für ihn wird sein, wo man die ID im Projekt einstellt.

von Osche R. (Gast)


Lesenswert?

genau dort. Beim KPIT GNU Compiler heisst die Datei "fixed_vects.asm", 
bei IAR und NC30 wird's ähnlich sein. Da kommt die ID mit rein:

    .long    (_UndefinedInstruction_ISR + 0x31000000)
    .long    (_Overflow_ISR             + 0x32000000)
    .long    _BRK_Instruction_ISR
    .long    (_AddressMatch_ISR         + 0x33000000)
    .long    (_SingleStep_ISR           + 0x34000000)
    .long    (_WatchdogTimer_ISR        + 0x35000000)
    .long    (0                         + 0x36000000)
    .long    (0                         + 0x37000000)
    .long    (_start                    + 0xBF000000)

(mit der ID "1234567" als ASCII.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.