Forum: Mikrocontroller und Digitale Elektronik Moderne Programmierverfahren µC, Flash, EEPROM usw.


von Manuel R. (manu123)


Lesenswert?

Guten Morgen alle miteinander,

Mich würde interessieren, was Ihr für die modernsten / ökonomischsten 
Programmierverfahren haltet um die oben genannten Bausteine zu 
programmieren? Dabei geht es vorallem um Schnelligkeit (Programmierzeit) 
aber auch um Flexibilität, d.h. kein zusätzlicher Lagerbestand an 
Programmieradaptern, kann man später beim Kunden direkt programmieren 
usw.

Dankeschön!

Beste Grüße Manuel

von Rolf Magnus (Gast)


Lesenswert?

So komplett ohne weitere Rahmenbedinungen würde ich sagen:
Der µC hat eine Internetverbindung und lädt sich die aktuelle Firmware 
selber runter und installiert sie.

von Michael D. (etzen_michi)


Lesenswert?

Daher das massig Möglichkeiten offen gelassen wurden würde ich eine 
Handelsübliche Speicherkarte z.B. SD wählen.

Hat fast jeder, kann nahezu jeder Beschreiben, ist günstig.

Nachteil wäre natürlich das man ggf. zusätzliche µC / größere µC in 
jeder Schaltung haben müsste.

Vorteil wäre das man es sehr leicht einheitlich aufbauen kann, auch wenn 
die Daten teilweise sehr unterschiedlich codiert sind.

Weiterer Vorteil wäre zudem das es die Datenspeicher noch ewigkeiten 
geben wird (*Persönliche Meinung).

von Manuel R. (manu123)


Lesenswert?

Ok, habe mich vielleicht etwas sehr schlecht ausgedrückt :

Es geht vor allem um die Programmierung des embedded flashs bei STM32 
Prozessoren aber auch um die Programmierung von externen Flash / EEProm 
Bausteinen. Internetverbindung ist dabei nicht vorgesehen, Als 
Peripherie würde ich die des STM32 Prozessors voraussetzen :
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_DIAGRAM/CIRCUIT_DIAGRAM/circuit_diagram_15060.pdf
Werden heutzutage eigentlich noch Programmieradapter eingesetzt? Wenn ja 
wieso? Man kann ja theoretisch solche Bausteine auch in-circuit 
programmieren, somit ist man flexibler..
Oder ist diese Art der Programmierung deutlich langsamer?
Danke!

von busche (Gast)


Lesenswert?

eeproms kann man üblicherweise mit spi oder i2c beschreiben. im den chip 
zu beschreiben benötigt man den programmer/debuger ... den kannst du 
auch in-circuit raufbringen aber das nimmt ja dann wieder platz weg ;) 
und bei großen herstellungenszahlen nutzt man nicht unbedingt auf jeder 
platine diese dann, das sollte man sich gut überlegen

von Manuel R. (manu123)


Lesenswert?

Ok, Danke für die Info..
hab mich jetzt noch etwas mit dem STM32 beschäftigt und da ist mir 
aufgefallen das dieser einen integrierten Bootloader vorzuweisen hat.
Diesen kann man über USART  CAN  USB DFU seriell programmieren.
Nun meine Frage :
Hat dieses Verfahren Vorteile gegenüber einer Programmierung über JTAG?
(Programmierzeit , Zuverlässigkeit usw..)
Danke!

von Willi (Gast)


Lesenswert?

Beitrag "Flash Programmierzeiten vergleichen"

Gestern war es noch ein anderer µC.
Kannste nicht mal sagen, was Du eigentlich willst?

von Manuel R. (manu123)


Lesenswert?

Das eine istn Beispiel das ich gefunden hatte, dass andere nen 
Microcontroller den wir verwenden..
Darf man denn nicht Informationen zu zwei Bausteinen einholen?
Keine Ahnung, soll aber vorkommen das man sich über mehr als einen 
Baustein informiert..

Was ich genau will :
Ich möchte verschiedene Programmierverfahren ( UART / JTAG ) usw. 
hinsichtlich ihrer Programmierzeit, Flexibilität usw miteinander 
vergleichen. Dabei geht es um den Prozessor STM32F103C4. Um dies zu tun 
muss ich erstmal wissen wie man die ganzen Zeiten berechnet. Über JTAG 
(Boundary scan) weiß ich mitlerweile wie ichs berechne, bei UART tu ich 
mir noch schwer.
Außerdem möchte ich wissen obs vielleicht noch ökonomischere Verfahren 
als diese beiden gibt, wenn ja welche.
Das ist ein Teil meiner Aufgabe
Der andere handelt um Testverfahren und auch dort besonders um Boundary 
Scan..

von Willi (Gast)


Lesenswert?

Manuel Reisser schrieb:
> Außerdem möchte ich wissen obs vielleicht noch ökonomischere Verfahren
> als diese beiden gibt, wenn ja welche.

Beim Hersteller programmieren zu lassen, kostet keine Zeit.

Ich weiß immer noch nicht, wo das Problem ist. Geht es um 1 pro Tag, der 
zu programmieren ist, oder um 10000?
Wenn Ihr den µC schon verwendet, probiere es doch einfach aus.

von ttl (Gast)


Lesenswert?

Ja, deine Fragen klingen sehr theoretisch obwohl du scheinbar kein 
Hintergrundwissen hast und sowas scheinbar noch nie selbst ausprobiert 
hast.
Praktikum?

So als Hausnummer, hier auf dem Schreibtisch STM32 256kB mit 
ULINKpro(50MHz) von Keil braucht das Flashen ca. 10 Sekunden. In der 
Produktion nehmen wir ein STlink, der braucht ungefähr 40 Sekunden. 
Hängt also auch von den Tools und der verwendeten Software ab. 
Bootloader dauert wesentlich länger weil der UART halt wesentlich 
langsamer ist.

von Manuel R. (manu123)


Lesenswert?

Hallo ttl, Hallo Willi

Bachelorarbeit und du hast recht, ich habe noch keine nennenswerte 
praktische Erfahrungen was das Thema angeht..
Im Studium (Elektrotechnik) lernt man halt viel Theorie aber am Ende hat 
man trotzdem keinen Plan ;-)
Dort wird halt mit UART programmiert, ist ja auch nur für die Studenten 
im Labor und Programmierzeit interessiert dort keinen Menschen..
Ist mehr ne Theoriearbeit bei der ich Optimierungsmöglichkeiten in der 
Produktion aufdecken soll.
Benutzt ihr den STM32 in der Produktion denn schon?
Aus was für einem Grund verwendet ihr denn den langsamen Debugger zum 
Flashen in der Produktion? Gerade dort sollte es doch auf Schnelligkeit 
ankommen oder irre ich mich?

@Willi : Naja, der wird die Programmierarbeiten schätze ich mal auch 
nicht umsonst machen, oder?
Ausprobieren ist schlecht, der STM32 ist gerade erst im 
Einführungsprozess, er wird noch nicht in der Produktion verwendet!
Und es soll um ein relativ hohes Volumen gehen, würde sagen 100++/Tag je 
nach Auftragsbestand

Danke euch beiden!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Manuel Reisser schrieb:
> Und es soll um ein relativ hohes Volumen gehen, würde sagen 100++/Tag je
> nach Auftragsbestand

Dann solltest du auch bedenken, was die Hardware für dein gewünschtes 
Programmierverfahren pro Board kostet. Wenns nur auf die Programmierzeit 
ankommt, JTAG, da braucht du aber auf jeden Fall den Header auf dem 
Board und die Zeit, die das Anstecken und Abstecken des Programmierers 
kostet. Hat das Teil sowieso schon Schnittstellen, nimmst du eine von 
denen - programmiert etwas langsamer, aber du hast null Hardwarekosten 
extra.
Ist Hacken ein Problem? Wenn du befürchtest, das Kunden an der Firmware 
rumfummeln wollen, sind da ein paar extra Vorkehrungen zu treffen.

von Manuel R. (manu123)


Lesenswert?

Hallo Matthias,
was meinst du mit Hardware pro Board? Bei Programmierung über JTAG 
brauch ich doch nur die Steckerleiste auf dem Board und z.B. ein paar 
STlink, die sind ja relativ günstig..
Mit dem Anstecken und Abstecken hast du natürlich recht!
Sicherheit ist ein Punkt der auch zu betrachten ist, aber was kann ich 
da für Vorkehrungen treffen?
Welche der vorhandenen Schnittstelle würdest du denn bevorzugen?

Danke, hilfst mir auf jedenfall weiter!
Gruß Manuel

von Manuel R. (manu123)


Lesenswert?

Hab grad zum Thema Sicherheit ein wenig nachgelesen was den STM32F103 
angeht. Also der hat ne Read und ne Write protection die man durch 
setzen eines Bits "einschalten" kann. Sowas meinst du als Hackingschutz, 
oder?

von Uwe (Gast)


Lesenswert?

JTAG IEEE 1149.1

von Manuel R. (manu123)


Lesenswert?

Uwe schrieb:
> JTAG IEEE 1149.1

Versteh den Post nicht, die Norm hab ich schon durchgelesen..

von Bronco (Gast)


Lesenswert?

Für mich stellt sich eine andere Frage:
Geht es ausschließlich um die Erstprogrammierung oder auch um spätere 
Firmware-Updates?

Ich würde sagen:
- Nur Erstprogrammierung und (sehr) hohe Stückzahl: mal den 
IC-Hersteller oder den Bestücker fragen, ob es es macht.
- Nur Erstprogrammierung und keiner macht's für Euch: JTAG oder 
Bootloader über externe Schnittstelle (USB, UART, CAN, Ethernet usw.)
- Firmware-Update: Bootloader über externe Schnittstelle (USB, UART, 
CAN, Ethernet usw.)

von Manuel R. (manu123)


Lesenswert?

Hallo Bronco,

was hat denn eine Programmierung über den Bootloader für Vorteile 
gegenüber einer Programmierung über JTAG / SWD?

Danke!

von Bronco (Gast)


Lesenswert?

Manuel Reisser schrieb:
> was hat denn eine Programmierung über den Bootloader für Vorteile
> gegenüber einer Programmierung über JTAG / SWD?

1. Weil i.d.R. eine JTAG-Schnittstelle nicht aus dem Gehäuse 
herausgeführt ist. Wenn man nun den Bootloader über eine externe 
Schnittstelle (über die normalerweise andere Aufgaben laufen als das 
Firmware-Update) ansprechen kann, muß man das Gehäuse nicht öffnen.
2. Weil man für JTAG-Programmieren ein spezielles Hardware-Tool 
benötigt, während man den Bootloader über die externe Schnittstelle über 
die Gegenstelle (z.B. PC) ansprechen kann.
3. Weil man an die JTAG-Schnittstelle ggf. einen Debugger anschließen 
und damit die Firmware auslesen und hacken kann (z.B. bei 
Auto-Motorsteuergeräten ein Problem, weil "Chip-Tuning" den Motor 
überlasten kann). Bootloader sind Software und können mit beliebigen 
Sicherheitsvorkehrungen versehen werden.

Was ist "SWD"?

von Uwe (Gast)


Lesenswert?


von Manuel R. (manu123)


Lesenswert?

Guten Morgen Bronco,

Mit Punkt 1 und Punkt 2 hast du mit Sicherheit Recht, Punkt 3 kann man 
glaub ich weniger stark werten da der STM32F1 über eine Write/Read 
Protection verfügt die man aktivieren kann, somit sollte die Software 
auch bei Verwendung von JTAG/SWD vor Hacking geschützt sein.
SWD sollte aber auch (laut dem Sheet von Uwe) schneller sein als die 
Programmierung über bootloader (anscheinend bis zu 4MB/s wohingegen 
Booloader über UART1 ca 115KB/S und Booloader über CAN ca 1MB/s hätte)
Sind die von dir genannten Vorteile trotzdem stärker als die kürzere 
Progzeit von SWD?

Danke!

von Manuel R. (manu123)


Lesenswert?

noch Jemand Infos? :)

von Bronco (Gast)


Lesenswert?

Manuel Reisser schrieb:
> Sind die von dir genannten Vorteile trotzdem stärker als die kürzere
> Progzeit von SWD?

Also das kannst wirklich nur Du wissen. Ich kenn Dein Projekt und die 
Anforderungen nicht.

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.