Hallo alle zusammen. Ich habe einen STM32 an einen RX210 angeschlossen. Der STM32 soll den RX programmieren. Das Programm für den RX kommt aus einem Memory-Stick der über USB an den STM32 angeschlossen ist. Soweit funktioniert auch alles: Der STM öffnet und liest das File, steuert die erforderlichen Eingänge um den RX in den Boot mode zu bringen und programmiert die aus dem File gelesenen Bytes ins Flash des RX über die Standart-UART die das Bootprogramm des RX benutzt (SPI1). Der STM kann dann auch den programmierten Code aus dem RX auslesen und darstellen (über eine 2. UART im STM auf einem Terminal). Alles scheint überein zu stimmen. Der Code im RX läuft aber nicht an. Ich kann nicht feststellen ob der RX überhaupt den Reset-Vector liest. Der tut offenbar einfach nichts. Das geflashte Programm läuft aber einwandfrei, wenn ich es mit einem Emulator/Programmer in den RX flashe. Hat irgendjemand sowas abgedrehtes schon mal gemacht? Letztlich beschränkt sich diese Frage auf: Hat jmd schon mal den RX mit einem eigenen Programm geflasht? Ohne Zurhilfenahme eines Renesas-Tools? Ich mache damit jetzt schon eine Woche rum und bin für jeden Hinweis oder Tipp dankbar. Vor Allem: Ich bin jetzt, glaube ich, betriebsblind und sehe den Wald vor lauter Bäumen nicht mehr... Übrigens, das Programm das ich im Moment flashe toggelt einen Portpin, mehr nicht. Matthias
Hier gibt's ein Tool zum Flashen von RX Controllern, evtl. kannst du ja mal Quellcode vergleichen ob du am Protokoll etwas gravierend anders machst oder so? http://www.delorie.com/electronics/rx-stick/flash-tool/flash-tool.tar.gz
Matthias G. schrieb: > Das > geflashte Programm läuft aber einwandfrei, wenn ich es mit einem > Emulator/Programmer in den RX flashe. Kann es sein, dass es dabei im RAM und nicht im Flash landet? Wenn ja, dürfte es beim Aus- Einschalten nicht mehr laufen. Überprüf mal das Linker-Listing bzw. die Einstellungen für DEBUG/RELEASE.
Danke für die Antwort. Ich hab das Archiv eben geöffnet. Der Code scheint für die M32-Controller zu sein, die benutzen aber ein ganz ähnliches Protokoll zum Flashen. Ich schue es mir an. Danke nochmal, Matthias
Also ich habe mittlerweile mein Programm erweitert. Nach dem eigentlichen Flash-Vorgang wird das File auf dem USB-Stick nochmals geöffnet und mit dem Inhalt des Flash verglichen. Es gibt keine Unterschiede. Das Flash wird einwandfrei programmiert. Der Zielort RAM ist abwegig, da diese Vergleichsroutine gezielt die Adressen ausliest die die einzelne S-Record vorgibt. Aber nichts desto trotz, danke an alle die mir helfen wollen !! Matthias
Schuss ins Blaue: Nach dem Flashen per STM32 den RX abstöpseln und per normalem Programmer auslesen und gucken ob es so aussieht wie es soll?
...per normalem Programmer auslesen und gucken... Tja, wenn das mal so einfach wäre. Sobald der RX in den Boot-Mode geht löscht er automatisch sein internes Flash, die User Boot Area und sein Data Flash. Das Ding ist dann komplett leer. Ich hab diesbezüglich mit Glyn gesprochen - es gibt keine Möglichkeit in den RX hinein zu schauen ohne in den Boot-Mode zu gehen. Ich bin aber sicher, das der STM den RX richtig programmiert, der RX "springt nur nicht an". Ich denke, das ist ein Hardware-Problem. Ich bekomme noch diese Woche eine Platine die einen solideren Aufbau aller Komponenten (RX210, STM32F401, FT800 und Grafikdisplay) ermöglicht. Die Platine dient mir als Prototyp für das spätere endgültige Design. Ich bin gespannt, wie sich der RX auf der neuen Platine verhält. Trotzdem danke, Deine Idee war schon richtig - nur nicht durchführbar. Matthias
Spät melde ich mich wieder, ich weiß. Mittlerweile habe ich das Problem gelöst. Der Teufel steckte, wie immer, im Detail. Beim Auslesen eines "Registers" des Controllers werden 2 Kennungen zurückgegeben, eine Kennung für "Big Endian" und eine für "Little Endian". Eine der beiden Kennungen muss dann im Verlauf des Programmierens an den Controller zurück gegeben werden. Und ich hab aus Schusseligkeit die falsche übergeben. Mein Code lag im Format "Big Endian" vor, die Kennung die ich fälschlicherweise übergab war aber die für "Little Endian". Die Tools, mit denen ich mir den internen Flash angesehen habe, haben die Einstellung "Little Endian" erkannt und die Darstellung auf dem Bildschirm entsprechend angepasst. So dachte ich stets, alles sei richtig programmiert, was es tatsächlich aber nicht war. Darauf bin ich gekommen, nachdem ich jedes Byte untersucht habe das vom Controller kam bzw. ging. Und da fiel mir der Fehler auf. Allen, die mir helfen wollten, nochmals meinen Dank. Matthias
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.