mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ESP32 als ISP


Autor: Marius S. (fhler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin mittlerweile bei meinem Projekt 
Beitrag "ESP32 Arduino IDE vs IDF" an dem Punkt angelangt wo 
ich nun einen AtTiny85 programmieren will. Nachdem ich mich die letzten 
beiden Tage etwas eingelesen habe, bin ich zum Schluss gekommen das ich 
wohl das ArduinoISP Beispiel größtenteils verwenden kann. Ich muss jetzt 
quasi den Ablauf programmieren die der PC für mich normalerweise 
übernimmt. Jedoch stellt sich bei mir die Frage: Die zu programmierenden 
Dateien (.hex für den Flash und .eep für den/das EEPROM) liegen im 
SPIFFS des ESP32.


-Kannn ich deren Inhalt einfach in eine Variable schreiben und dann 
Programmieren? (Vermute jedoch das funktioniert ehr nicht auch wegen den 
Escape-Sequenzen). Die Daten im Beispielprogramm werden jedenfalls mit 
Serial.read() eingelesen aber ich habe ja in dem Sinne keine serielle 
Verbindung zu den zu programmierenden Daten.

Gruß

Marius

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Du hast mit dem SPIFFS ein normales Filesystem. Denn Du da die Datei 
reingeschrieben hast, bekommst Du sie auch so wieder.
file.read(buf, anz), bitmap.seek(position) usw, usw.

Wo sind in einem .hex denn Escapesquenzen?

Gruß aus Berlin
Michael

Autor: Marius S. (fhler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
vielen Dank für deine Antwort.

Mit Escape-Sequenzen meinte ich \r\n  für einen Zeilenumbruch in der 
Hex-Datei. Beispielsweise.

Autor: Marius S. (fhler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Programm wird zwar programmiert, derzeit noch über die Arduino IDE 
(Hochladen mit Programmer). Jedoch scheint es offenbar Probleme mit dem 
Auslesen des Programmspeichers zu geben.

Nachdem das Programm programmiert wurde, passiert leider nichts mehr. 
Nach einer gewissen Zeit wird der Programmiermodus dann beendet und der 
AtTiny fängt mit dem Abarbeiten des Programms an.

Der Programmer läuft mit dem Beispielprogrammer aus der IDE.

Habt ihr Ideen woran es liegen könnnte? Der MISO-Pin beim AtTiny ist als 
Ausgang gesetzt.

EDIT: Kann es evtl sein das ich durch das einstellen der falschen 
Taktfrequenz in der IDE den AtTiny "zerschossen" habe? Zumindest geht er 
nach dem herstellen der Spannungsversorgung nicht mehr in den 
Programmiermodus. (Normalerweise geht der AtTiny85 nach dem PowerUp für 
6 Sekunden in den Programmiermodus)

Gruß Marius

: Bearbeitet durch User
Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

irgendwie habe ich Deine PM wohl ignoriert, sorry.
Ich blicke im Moment nicht ganz durch, was Du da treibst.
Über das Thema ESP8266/ESP32 als ISP-Programmer für AVR zu nutzen, hatte 
auch mit einem Beaknnten darüber diskutiert und mich im Netz umgeschut, 
was es schon gab. Allerdings blieb es dabei, weil wir keine reale 
Anwendung dafür hatten.

"zerschießen" in dem Sinn geht sicherlich, spätestens, wenn man die 
Fuses mit angefasst hat. Sollte sich doch aber eigentlich an einem 
ISP-Programmer schell klären lassen.
Ich hole da im Zweifel den Dragon oder ein STK500 aus der Versenkung und 
starte das alte AVR-Studio, einfach, weil das hier sowieso verfügbar 
ist.

Gruß aus Berlin
Michael

: Bearbeitet durch User
Autor: Marius S. (fhler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

im Anhang eine kurze Skizze. Ich will letztendlich Controller C 
programmieren (bzw. er soll sich am Ende selbst programmieren und die 
Programmdaten über den SPI-Bus bereitgestellt werden). Ich bekomme die 
Programmdaten schon bis zum Controller B übertragen.

Ich hänge gerade an der Stelle C das Programmierte zu verifizieren. Das 
macht er ja derzeit leider nicht, weil ????

Um die Fragezeichen geht es mir halt im Moment.

Gruß Marius

Autor: Marc V. (Firma: Vescomp) (logarithmus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marius S. schrieb:
> im Anhang eine kurze Skizze. Ich will letztendlich Controller C
> programmieren (bzw. er soll sich am Ende selbst programmieren und die
> Programmdaten über den SPI-Bus bereitgestellt werden). Ich bekomme die
> Programmdaten schon bis zum Controller B übertragen.

 Wozu ISP wenn C sich selbst programmieren soll ?
 Dafür brauchst du einen Bootloader im C.

 ISP ist nichts weiter als SPI + eine Leitung für Reset.
 Und in jedem DaBla stehen die entsprechenden Befehle fürs
 programmieren - lesen (und verstehen) musst du das aber selbst.

Autor: fhler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marc V. schrieb:
> Wozu ISP wenn C sich selbst programmieren soll ?
>  Dafür brauchst du einen Bootloader im C.
>
>  ISP ist nichts weiter als SPI + eine Leitung für Reset.
>  Und in jedem DaBla stehen die entsprechenden Befehle fürs
>  programmieren - lesen (und verstehen) musst du das aber selbst.

Hallo Marc,

Weil B das eigentliche Programm verschlüsselt bereitstellt und C die 
Daten erst entschlüsseln muss und sich dann selbst programmieren soll. 
Nenn es von meinetwegen einen modifizierten Bootloader.

Beim Rest gebe ich dir vollkommen recht, im Datenblatt bin ich auch 
fündig geworden auch was den Ablauf der Programmierung angeht. Es geht 
mir jedoch im Moment darum warum der fertige ISPcode, den ich gefunden 
habe, bzw das ist das leicht modifizierte ISP Beispiel, nicht vernünftig 
läuft. Einmalig hat es funktioniert aber danach nur noch halb (keine 
Überprüfung des programmierten Programms).

Gruß Marius

Autor: Marc V. (Firma: Vescomp) (logarithmus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fhler schrieb:
> mir jedoch im Moment darum warum der fertige ISPcode, den ich gefunden
> habe, bzw das ist das leicht modifizierte ISP Beispiel, nicht vernünftig
> läuft. Einmalig hat es funktioniert aber danach nur noch halb (keine
> Überprüfung des programmierten Programms).

 Hast du Bootloader Code im T85 ?
 Wenn ja, dann ist es wirklich ein Bootloader und verschlüsseln
 ist möglich.

 Wenn nicht, dann stimmt es zwar mit ISP, aber dann wird es nix mit
 verschlüsseln.

 Du musst es schon genau bezeichnen, ob Bootloader oder ISP, wo du
 diesen Beispiel gefunden hast (link), was genau du angeblich
 leicht modifiziert hast...

: Bearbeitet durch User
Autor: Marius S. (fhler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marc V. schrieb:

>  Hast du Bootloader Code im T85 ?
>  Wenn ja, dann ist es wirklich ein Bootloader und verschlüsseln
>  ist möglich.

http://www.farnell.com/datasheets/1698186.pdf  s. Kapitel 19 (Seite 140) 
im Datenblatt. Und vorher die Entschlüsselung durchzuführen sollte nicht 
das Problem sein.

>  Du musst es schon genau bezeichnen, ob Bootloader oder ISP, wo du
>  diesen Beispiel gefunden hast (link), was genau du angeblich
>  leicht modifiziert hast...

https://github.com/pcbreflux/espressif/blob/master/esp32/arduino/sketchbook/ESP32_ArduinoISP/ESP32_ArduinoISP.ino

Das ist 1:1 das Beispiel aus der ArduinoIDE lediglich ein Pin geändert 
und ein Befehl auskommentiert.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Marius S. schrieb:
> Und vorher die Entschlüsselung durchzuführen sollte nicht
> das Problem sein.

natürlich kann der AVR seinen Flash aus dem Flash selbst programmieren 
und dazwischen auch mit den Bytes Handstände machen.

Dazu müssen die Daten aber erstmal in den Flash.
Mit ISP-Programming kannst Du Flashpages beschreiben (Seite 152 im 
datenblatt. Wenn das beendet wird, startet der AVR am reset-Vektor.

Dein vorhaben will aber einen Bootloader, der das holen der Page, die 
Modifikation und das Schreiben der Page an die richtige Stelle 
organisiert. Das geht über irgendeine Schnittstelle, meist UART, aber 
nicht über ISP.

Gruß aus Berlin
Michael

Autor: Marius S. (fhler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael U. schrieb:
> Hallo,
>
> Marius S. schrieb:
>> Und vorher die Entschlüsselung durchzuführen sollte nicht
>> das Problem sein.
>
> natürlich kann der AVR seinen Flash aus dem Flash selbst programmieren
> und dazwischen auch mit den Bytes Handstände machen.
>
> Dazu müssen die Daten aber erstmal in den Flash.
> Mit ISP-Programming kannst Du Flashpages beschreiben (Seite 152 im
> datenblatt. Wenn das beendet wird, startet der AVR am reset-Vektor.
>
> Dein vorhaben will aber einen Bootloader, der das holen der Page, die
> Modifikation und das Schreiben der Page an die richtige Stelle
> organisiert. Das geht über irgendeine Schnittstelle, meist UART, aber
> nicht über ISP.
>

Ich sehe jetzt nicht das Problem  wenn man das in 2 Schritten macht. 
1)Programm zur Selbstprogrammierung programmieren -> Neustart
2)die "richtigen" Programmdaten übertragen, entschlüsseln und dann in 
den Flash schreiben

ABER all dies hilft mir ja nicht bei meinem Problem das er die Daten 
derzeit nicht überprüfen will.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

morgen komme ich vermutlich nicht dazu, aber ich nehme das mal zum 
Anlaß, das mal auf einen ESP32 zu werfen und einen Tiny85 ranzuhängen.
Eigentlich wollte ich mir da ja sowieso was zurechtmachen, aber als 
reinen kabellosen ISP-Programmer für meine Tiny85 Funk Sensoren, obwohl 
ich da seit Jahren nichts mehr geändert habe, die spielen ja...

Gruß aus Berlin
Michael

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.

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