Forum: Mikrocontroller und Digitale Elektronik SPI Flash Programmer


von Mr. AVR (Gast)


Lesenswert?

Hallo,

ich habe jetzt den Fall, dass in einer Schaltung die ich ca. 100x bauen 
werde (Soundmodule für die Modellbahn für die Vereinsanlage) ein SPI 
Flash enthalten ist (AT45DB321). Der Prozessor ist ein ATtiny1614. Ich 
habe keine Möglichkeit, den SPI Flash über den ATtiny1614 mit den 2MB 
Soundfile zu beschreiben. Würde mir auch zum lange dauern bei der Menge.

Daher meine Frage: Gibt es einen Programmer für sowas, ähnlich wie die 
ISP Programmer für die Atmels, wo man den SPI Chip einfach In-System 
beschreiben kann? Ich habe die ISP-Schnittstelle über ein Tag-COnnect 
Cabel rausgeführt.

Ich habe sowas gefunden:
https://de.aliexpress.com/item/CH341A-Series-24-EEPROM-Writer-25-SPI-routing-BIOS-LCD-Flash-USB-Programmer/32666369868.html?spm=a2g0x.search0104.3.9.281acb35SQZrCR&ws_ab_test=searchweb0_0,searchweb201602_2_10320_10152_10321_10151_10065_10344_10068_10342_10547_10343_10322_10340_10548_10341_10696_10084_10083_10618_10304_10307_10820_10821_10302_10846_10843_10059_100031_10319_445_10103_524_10624_10623_10622_10621_10620,searchweb201603_30,ppcSwitch_5&algo_expid=2eb30265-a8d0-404f-9e61-93efe4c8a8c2-1&algo_pvid=2eb30265-a8d0-404f-9e61-93efe4c8a8c2&priceBeautifyAB=0


Es ist weiter nichts beschrieben. Ein Kabel vom Tag könnte man ja an 
sowas dran basteln. Hat jmd. sowas schon mal genutzt?

von c-hater (Gast)


Lesenswert?

Mr. AVR schrieb im Beitrag #5481197:

> ich habe jetzt den Fall, dass in einer Schaltung die ich ca. 100x bauen
> werde (Soundmodule für die Modellbahn für die Vereinsanlage) ein SPI
> Flash enthalten ist (AT45DB321). Der Prozessor ist ein ATtiny1614. Ich
> habe keine Möglichkeit, den SPI Flash über den ATtiny1614 mit den 2MB
> Soundfile zu beschreiben. Würde mir auch zum lange dauern bei der
> Menge.

Das ist doch Schwachsinn. Wenn er es schnell genug lesen kann, um es 
abzuspielen, kann er es auch mindestens genauso schnell beschreiben. 
Da man beim Lesen aber üblicherweise nicht an die Grenzen geht, wird es 
es sogar mindestens etwas schneller beschreiben können, wahrscheinlich 
sogar sehr viel schneller. Theoretisch...

Praktisch wird eher die begrenzte Schreibgeschwindigkeit für das 
Ziel-Flash ganz allgemein die Grenze darstellen und die kannst du auch 
mit irgendeinem anderen Programmer nicht überwinden!

Dein Problem ist wohl nur: das Schreiben war nicht in der Wichsvorlage 
enthalten, die du jetzt "dein" Programm nennst...

> Daher meine Frage: Gibt es einen Programmer für sowas, ähnlich wie die
> ISP Programmer für die Atmels, wo man den SPI Chip einfach In-System
> beschreiben kann?

Wahrscheinlich schon.

> Ich habe die ISP-Schnittstelle über ein Tag-COnnect
> Cabel rausgeführt.

Du meinst: die SPI-Schnittstelle? Wenn ja: das allein reicht nicht. Wenn 
du den SPI-Flash mit irgendwas anderem programmieren willst, mußt du 
natürlich für diese Zeit den ATtiny im Reset-Zustand halten, damit der 
externe Programmer den Bus kontrolliert und nicht dein ATtiny dazwischen 
funkt.

von Mr. AVR (Gast)


Lesenswert?

c-hater schrieb:
> Praktisch wird eher die begrenzte Schreibgeschwindigkeit für das
> Ziel-Flash ganz allgemein die Grenze darstellen und die kannst du auch
> mit irgendeinem anderen Programmer nicht überwinden!
>
> Dein Problem ist wohl nur: das Schreiben war nicht in der Wichsvorlage
> enthalten, die du jetzt "dein" Programm nennst...

Was soll das du Pisskind? Ich habe alles selber geschrieben, in C, du 
Opfer hast nicht mal verstanden was ich will. Es geht darum, eine 
Audiodatei die ich erstellt habe, vom PC auf den Flash zu bekommen. Im 
direkten Weg. Auf dem Tiny ist kein Platz mehr für einen Bootloader und 
der hat keine Verbindung zur Außenwelt, außer DCC Informationen, das 
würde locker 15-20 min dauern das über das Gleis zu senden. Außerdem 
müsste ich mir einen Programmer bauen etc.. Abgesehen davon das der voll 
ist der Tiny.


Ich will den Chip in system flashen mit meiner Audiodatei. Ansonsten 
brauchst du H*Sohn mir nichts erzählen was wie im Reset gehalten werden 
muss, das weiß ich selber.

von pegel (Gast)


Lesenswert?

Über die freundlichen Worte sehe ich jetzt einmal hinweg.

Hast du die AT45DB321 schon?
Wenn nicht, kannst du die auch bereits programmiert ordern.


http://www.segor.de/#Q=AT45DB321E-SHF&M=1

von pegel (Gast)


Lesenswert?


von Mr. AVR (Gast)


Lesenswert?

pegel schrieb:
> Über die freundlichen Worte sehe ich jetzt einmal hinweg.
>
> Hast du die AT45DB321 schon?
> Wenn nicht, kannst du die auch bereits programmiert ordern.
>
> http://www.segor.de/#Q=AT45DB321E-SHF&M=1

Danke für die vernünftigen Antworten. Was soll sowas Internetrambo mäßig 
immer in Forum. Kopf gegen die Wand schlagen würde solchen Leuten besser 
tuen als die Schnauze auf zu machen @c-hater.


Back to topic: Ich habe diese schon, ja. Außerdem sind es 
unterschiedliche Files für Dampflok, Diesel, E-Lok. Ggf. würde ich mir 
auch noch ein paar Anlagensounds etc.. erstellen, sodass ich gerne 
flexibel wäre und die Datei updaten/ersetzen kann. Mal schauen was 
unsere Bahner für Originalsounds einfangen können, dann könnte ich auch 
spezifische Dateien machen.

Es wäre schon gut, es über Tag-Connect über den PC ähnlich einem 
Mikrocontroller machen zu können.

von Frank K. (fchk)


Lesenswert?

Die einfachste Variante wäre, das Flash extern wie den AVR auch per SPI 
zu beschreiben. Ein AVR ISP-Programmer wäre dazu von der Hardware her in 
der Lage (ISP ist auch nichts anderes als SPI), aber seine Software ist 
das Problem. Da musst Du eben ein FTDI MPSSE-Kabel 
(http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_C232HM_MPSSE_CABLE.PDF) 
oder etwas ähnliches nehmen.

Der Prozessor muss am Besten im Reset stehen, damit die IO-Pins 
hochohmig sind und Du sie extern ansteuern kannst.

fchk

von Falk B. (falk)


Lesenswert?

https://www.totalphase.com/products/aardvark-i2cspi/

Der kann das, ist aber nicht ganz billig ;-)

von pegel (Gast)


Lesenswert?

Dann ist der Programmer von oben doch schon geeignet.
Die Software dazu hatte ich schon mal gefunden und den link hier im 
Forum angegeben.
Du musst eben nur wie schon geschrieben den ATTiny im Reset halten beim 
flashen.

von S. Landolt (Gast)


Lesenswert?

Wie wäre es mit selbst machen, also im wesentlichen wohl einen ATmega 
dafür programmieren? Hinreichende Kenntnisse scheinen ja vorhanden, und 
bevor man längere Zeit sucht, sich mit unsäglichen "Ratgebern" 
herumärgert und dann endlich etwas hoffentlich Funktionierendes 
beschafft?

von Falk B. (falk)


Lesenswert?

Wenn man es selber machen will/muss. Ein AVR als Übrsetzer zwischen UART 
und SPI, darüber eines der alten, einfachen Protokolle ala X-Modem oder 
TFTP.
Ist aber nicht mal fix in 2h getan, das dauert eher ein ganzes 
Wochenende und mehr.

von Falk B. (falk)


Lesenswert?

@S. Landolt (Gast)

>Wie wäre es mit selbst machen,

Auch der Bastler ist gut beraten, wenn er das Rad nicht dauernd neu 
erfindet und erstmal ausgiebig nach bestehenden Lösungen sucht. Selber 
machen in praktisch IMMER deutlich aufändiger.

von Frank K. (fchk)


Lesenswert?

PS: Gerade vergessen: Dein AVR ist ja ein Microchip AVR, der per UPDI 
programmiert wird. Daher bitte das "wie den AVR auch" streichen.

Du bräuchstest ein 10-poliges TagConnect Kabel.

GND
VTarget
AVR Reset
SPI CS
SPI SCK
SPI MISO
SPI MOSI

sind schon 7 Signale.

fchk

von Falk B. (falk)


Lesenswert?

@ Mr. AVR (Gast)

>direkten Weg. Auf dem Tiny ist kein Platz mehr für einen Bootloader und
>der hat keine Verbindung zur Außenwelt, außer DCC Informationen, das
>würde locker 15-20 min dauern das über das Gleis zu senden.

Falscher Ansatz. Du brauchst eine separate Firmware + ggf. Soft-UART. 
Dann mußt du nur ein paar Pins kontaktieren und kannst die Daten in den 
Flash brennen.

Danach wird die normale Firmware in den AVR gebrannt.

von S. Landolt (Gast)


Lesenswert?

an Falk Brunner:

Nix Rad neu erfinden, sondern eine schnelle und einfache Lösung 
anstreben, welche jemandem, der offenbar Spaß an der ganzen Sache hat, 
auch noch Erkenntnisgewinn bringt.

von Mr. AVR (Gast)


Lesenswert?

S. Landolt schrieb:
> Wie wäre es mit selbst machen, also im wesentlichen wohl einen
> ATmega
> dafür programmieren? Hinreichende Kenntnisse scheinen ja vorhanden, und
> bevor man längere Zeit sucht, sich mit unsäglichen "Ratgebern"
> herumärgert und dann endlich etwas hoffentlich Funktionierendes
> beschafft?

Ja ich glaube bald darauf läuft es wohl hinaus. Ich dachte aber einfach 
ich habe so ein 2€ Gerät und bin fertig. Ich habe zwar bereits einen 
Programmer mit dem meine Vereinskollegen die Software, also Firmware, 
meiner Decoder updaten können, auch PC Terminal dafür. Das ist quasi ein 
ISP-Programmer wenn man so will. Damit könnte ich das erweitern.

von Mr. AVR (Gast)


Lesenswert?

Frank K. schrieb:
> PS: Gerade vergessen: Dein AVR ist ja ein Microchip AVR, der per
> UPDI
> programmiert wird. Daher bitte das "wie den AVR auch" streichen.
>
> Du bräuchstest ein 10-poliges TagConnect Kabel.
>
> GND
> VTarget
> AVR Reset
> SPI CS
> SPI SCK
> SPI MISO
> SPI MOSI
>
> sind schon 7 Signale.
>
> fchk

Ich habe nur das 6 polige. Das sollte reichen. Ich habe:

VCC, GND, MOSI, MISO, SCK, RESET. CS ist immer aktiv bei dem Teil, habe 
nur einen SPI Verbraucher in der Schaltung. Der Tiny erkennt das 
automatisch, wenn man versucht den Chip umzuprogrammieren und schaltet 
SPI dann auf Z.

von Mr. AVR (Gast)


Lesenswert?

Falk B. schrieb:
> https://www.totalphase.com/products/aardvark-i2cspi/
>
> Der kann das, ist aber nicht ganz billig ;-)

Jo den habe ich auch gefunden :D Wenn das der einzige ist mache ich es 
selber....

von Mr. AVR (Gast)


Lesenswert?

pegel schrieb:
> Dann ist der Programmer von oben doch schon geeignet.
> Die Software dazu hatte ich schon mal gefunden und den link hier im
> Forum angegeben.
> Du musst eben nur wie schon geschrieben den ATTiny im Reset halten beim
> flashen.

Ich habe die Software auch gefunden, dort kann man aber nur die Atmel 
25-Flash Serie auswählen, nicht die 45. Ich weiß nicht was das für einen 
Unterschied macht, ich denke aber mal das Protokoll oder die Bänke 
werden anderes sein. Wahrscheinlich bekomme ich dann die größe auch 
nicht entsprechend geladen. Ich kenne die 25-Serie auch nicht.

von Christian R. (supachris)


Lesenswert?

Mr. AVR schrieb im Beitrag #5481271:
> pegel schrieb:
> Dann ist der Programmer von oben doch schon geeignet.
> Die Software dazu hatte ich schon mal gefunden und den link hier im
> Forum angegeben.
> Du musst eben nur wie schon geschrieben den ATTiny im Reset halten beim
> flashen.
>
> Ich habe die Software auch gefunden, dort kann man aber nur die Atmel
> 25-Flash Serie auswählen, nicht die 45. Ich weiß nicht was das für einen
> Unterschied macht, ich denke aber mal das Protokoll oder die Bänke
> werden anderes sein. Wahrscheinlich bekomme ich dann die größe auch
> nicht entsprechend geladen. Ich kenne die 25-Serie auch nicht.

Naja der AT45 ist ein Dataflash. Hat ein paar Vorteile bei der 
Programmierung, aber irgendwie überwiegend Nachteile. Das bekloppteste 
finde ich die 264 Byte Page Größe und Adressieren dann in 512 Byte 
Schritten...da kriegt man doch ne Meise. Kann man zwar umstellen, aber 
muss man bei jedem machen und danach Power Cycle.

von S. Landolt (Gast)


Lesenswert?

> eines der alten, einfachen Protokolle ala X-Modem

Ich würde es ohne Protokoll machen, einfach die 
Übertragungsgeschwindigkeit dem Flashspeicher entsprechend anpassen.

> nicht mal fix in 2h getan

Zwei Stunden wohl nicht, aber ein halber Tag sollte doch reichen, oder?

von Mr. AVR (Gast)


Lesenswert?

Christian R. schrieb:
> Mr. AVR schrieb im Beitrag #5481271:
>> pegel schrieb:
>> Dann ist der Programmer von oben doch schon geeignet.
>> Die Software dazu hatte ich schon mal gefunden und den link hier im
>> Forum angegeben.
>> Du musst eben nur wie schon geschrieben den ATTiny im Reset halten beim
>> flashen.
>>
>> Ich habe die Software auch gefunden, dort kann man aber nur die Atmel
>> 25-Flash Serie auswählen, nicht die 45. Ich weiß nicht was das für einen
>> Unterschied macht, ich denke aber mal das Protokoll oder die Bänke
>> werden anderes sein. Wahrscheinlich bekomme ich dann die größe auch
>> nicht entsprechend geladen. Ich kenne die 25-Serie auch nicht.
>
> Naja der AT45 ist ein Dataflash. Hat ein paar Vorteile bei der
> Programmierung, aber irgendwie überwiegend Nachteile. Das bekloppteste
> finde ich die 264 Byte Page Größe und Adressieren dann in 512 Byte
> Schritten...da kriegt man doch ne Meise. Kann man zwar umstellen, aber
> muss man bei jedem machen und danach Power Cycle.

Jop, ich weiß. Das fand ich auch schwachsinnig. Ich habe die schon mal 
eingesetzt damals in einem Teil mit ESP. Da konnte ich den Inhalt vom PC 
über WLAN updaten. Das hat aber auch ewig gedauert (4MB ca. 20 min). Als 
Prozessor hatte ich damals einen Xmega genommen der den ESP und das 
Flash steuerte. Aber weil ich da noch ordentlich viele von habe, dachte 
ich daran die zu nutzen.

Bei dem AT25DF321A (wäre wohl Speichertechnisch wie AT45DB321) der ist 
aber leider nicht 5V tolerant an den Eingängen.

von pegel (Gast)


Lesenswert?

Ich will jetzt nichts falsches mangels Russisch Kenntnissen behaupten,
aber ist es nicht genau das was du suchst?

http://scaletrainsclub.com/board/viewtopic.php?style=1&t=2720&start=330#p184299

von Falk B. (falk)


Lesenswert?

@ S. Landolt (Gast)

>> nicht mal fix in 2h getan

>Zwei Stunden wohl nicht, aber ein halber Tag sollte doch reichen, oder?

Na dann mach mal, du wirst stauen, wie lange auch solche scheinbar 
einfachen Sachen manchmal dauern.

von c-hater (Gast)


Lesenswert?

Mr. AVR schrieb im Beitrag #5481222:

> Ich habe alles selber geschrieben, in C

Ja, und im Himmel is' Jahrmarkt...

von Michael U. (amiga)


Lesenswert?

Hallo,

ich habe das vor Jahren mal mit einem Mega88 und AT45DB041 per X-Modem 
gemacht, war auch eine Art Soundplayer.

Vorher spezielle Firmware draufschreiben und den Flash mit dem Tiny zu 
programmieren wäre auch für mich durchaus ein Ansatz.

Wenn ich das jetzt und hier machen müßte und etliche/öfter zu 
Programmieren hätte, würde ich vorhandenes nutzen und ein 
"Programmiergerät basteln:
Wemos Di mini mit ESP8266 drauf. Warum? Teile vorhanden, 
Entwicklungsumgebung vorhanden, SPI-Clock je nach geneuem Typ seines 
Flashs bis 40MHz nutzbar, Seriell sollte ohne Probleme mit 1MBaud laufen 
(921kBaud nutze ich hier ständig). CPU und Ram gut ausreichend um die 
Software "einfach so" zusammenzuschreiben.
Problem im Moment: es scheint keine SPI-Flash-Library zu geben, die die 
AT45DBxxx unterstützt, da müßte ich wohl in meinen alten AVR-ASM-Sourcen 
Anleihe tätigen XModem scheint es als Lib zu geben.

Weiter gesponnen: ESP mit SD-Card dran und von dort die Flashs 
beschrieben.
Kleines Display und Tasten dran, um das File auszuwählen und zu flashen.

Im Moment würde ich wohl sogar einen ESP32 nehmen, spiele ich ohnehin 
grade mit rum und es gibt ausreichend I/O.
Könnte ich temporär glatt auf mein "Webradio" flashen, Touch-Display ist 
da, SD-Card ist da, nur die Sachen für den AT45Db321 müßte ich 
zusammmenschreiben.

Für mich wäre der Hauptvorteil: kein externer Rechner zum Flashen nötig, 
nur die Files einmal auf eine SD-Karte. Wäre jetzt einmalig etwas mehr 
Aufwand, dann aber eben wirklich nur Kabel zwischen "Programmer" und dem 
Tiny-Modul anstecken und flashen.

Gruß aus Berlin
Michael

von Mr. AVR (Gast)


Lesenswert?

c-hater schrieb:
> Mr. AVR schrieb im Beitrag #5481222:
>
>> Ich habe alles selber geschrieben, in C
>
> Ja, und im Himmel is' Jahrmarkt...

Was ist dein Problem? Weil du nichts kannst und nur mit Arduino 
rumklickst?
Mal ehrlich jetzt? Soll ich dir den Code zusenden?

von Labertaschen-Dekoder (Gast)


Lesenswert?

Das Programm "Ponyprog" kann mit einem einfachen Adapter SPI-EEproms 
beschreiben:http://www.lancos.com/prog.html

@TO
Reg Dich nicht über ein Stück Dreck auf, laß es in der Gosse liegen.

von Falk B. (falk)


Lesenswert?

@ Labertaschen-Dekoder (Gast)

>Das Programm "Ponyprog" kann mit einem einfachen Adapter SPI-EEproms
>beschreiben:http://www.lancos.com/prog.html

Ja, aber nur kleine bis 64kB, keine großen Flashs. Von AT45??? ist dort 
nix zu lesen.

von No Y. (noy)


Lesenswert?

Hatte vor kurzem ein ähnliches Problem..
Gelöst mit :
Dangerous Prototypes BusPirate und dem Programm flashrom..

Testpunkte mit Pogopins anfahren oder einen Stecker vorsehen..
Den Attiny am besten mit nem Jumper oder auch über den BusPirate im 
Reset halten...

von Christian R. (supachris)


Lesenswert?

Wenn du Zugriff auf ein Xilinx USB Programmer Cable hast, kannst du auch 
Impact dafür nehmen: 
https://www.xilinx.com/support/documentation/sw_manuals/xilinx11/pim_p_configuring_spi.htm
Wird aber in den neueren Versionen nicht mehr unterstützt.

Mich wundert es dass es da nix schon mal für die FTDI MPSSE gibt. Ich 
könnt das auch ab und an gut gebrauchen.
Werd ich wohl mal selber schreiben müssen.

von No Y. (noy)


Lesenswert?


von Christian R. (supachris)


Lesenswert?

Da gibt's anscheinend doch was:

https://www.flashrom.org/FT2232SPI_Programmer

Und eventuell hier, aber der Link geht gerade nicht:

http://wesche.bplaced.net/wordpress/?page_id=308

von pegel (Gast)


Lesenswert?

Wie es aussieht unterstützt flashrom sogar den eingangs genannten CH341A 
Programmer und auch den Flash AT45DB321.

von Daniel (Gast)


Lesenswert?

Hallo, wir sind gerade in der Firma dran, so etwas in unseren 
Programmieradaptern einzubauen, da der Bootloader über RS232 für die 
hohen Stückzahlen einfach viel zu langsam ist.

Kommt für dich wahrscheinlich zu spät aber ich bin über ewige googeleien 
auch hier gelandet...

Wir sind am Ende bei diesem schicken Teil hier gelandet:
https://www.embeddedcomputers.net/products/FlashcatUSB/

Vielleicht hilft es jemandem :)

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
Noch kein Account? Hier anmelden.