mikrocontroller.net

Forum: Projekte & Code Arduino - UNO Flashershield (Linux)


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 Ralph S. (jjflash)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Im Rahmen eines "kleinen" Wettbewerbs entstand das Flashershield für 
Arduino-UNO im r3 Format.

Bedingungen waren:

- diskrete Bauteile (OP's allerdings erlaubt)
- single Layer Platine oder Lochrasterkarte
- muß auf einen Arduino UNO aufsteckbar sein

--------------------------------------------------------------------

Das Flashershield kann folgende MCU flashen:

- AVR mittels STK500v2 Protokoll
- MCS-51 (89S51/52; 89S8253; 89S2051 / 4051) proprietäres Protokoll
- PIC16F mittels ardpicprog Protokoll

Wie das immer so ist: zuerest dachte ich dass das kleine Projekt kein so 
großer Aufwand aber die Softwareseite war dann eben doch aufwändiger.

Zudem bin ich ein Retro-Mensch (zu deutsch alter Sack) und dachte mir 
ich mache die Bediensoftware eben Retro (und wie ich das sehr sehr mag) 
für die Konsole. Deshalb wurde das Ganze mit dem TurboVison / FreeVison 
Framework programmiert. Ich mußte jedoch feststellen, dass das ganze mit 
Lazarus oder QT5 / C++ deutlich schneller fertig gewesen wäre (aber dann 
eben nicht für die Konsole geeignet wäre).

Installation der Software für das Flashershield
-----------------------------------------------------

ZIP-Archiv herunterladen,  in beliebiges Verzeichnis entpacken und dort:

./install

eingeben. Mit Tasten (j/n) kann im Installationsscript selektiv 
ausgewählt werden, ob Firmwares, Flasherprogramme und ein FreeVison 
Editor ins Verzeichnis /usr/local/bin kopiert werden sollen

Nach der Installation ist "flashershield" Systemweit verfügbar und wird 
mittels:

flashershield

gestartet.

AVR
----
Als Flasherprogramm für AVR dient AVRDUDE. Hinweis: bei Arduino-UNO 
Klone aus China funktioniert AVRDUDE aufgrund des CH340G Chips der Klone 
bis Version 5.8 und ab Version 6.3

Das Ausgangsprojekt der Firmware für Benutzung mit AVR MCUs stammt aus:

http://tuxgraphics.org/electronics/200510/article05101.shtml

MCS-51
------
Das Flasherprogramm für MCS-51 ist flash51ide

PIC16F
------
Das Ausgangsprojekt für PIC16F MCU stammt aus:
http://rweather.github.io/ardpicprog/index.html

---------------------------------------------------
Die Firmwares von AVR500 und PIC16F wurden modifiziert und dem 
Flashershield angepasst.

Mittels des Buttons kann der USB2UART Chip des UNOs auf die 
Anschlussleisten umgeleitet werden und somit kann eine MCU mittels UART 
mit dem PC kommunizieren. Die rote LED zeigt an, ob diese "Brücke" 
aktiviert ist oder nicht.

Die Bedienersoftware "flashershield" beinhaltet eingebettet 3 
unterschiedliche Firmwares. Soll das Flashershield bspw. als PIC16f 
Programmer dienen, muß zuerst mittels "flashershield" die Firmware in 
den Arduino geladen werden. Soll dieses geschehen, muß der Jumper auf 
JP3 entfernt werden und nach dem Installieren der Firmware wieder 
gesteckt werden. JP3 verhindert, dass der Arduino beim Starten einer 
UART-Verbindung zuerst in seinen Bootloader springt.

Außerdem beinhaltet "flashershield" die Möglichkeit, menügesteuert 
Hex-Files in den MCU zu laden ohne langee Kommandozeileneingaben zu 
tätigen. Im Falle von AVR können über "Flashershield" auch die Fuses 
gesetzt werden.

----------------------------------------------------
Das Flashershield eignet sich somit als Programmer für Aufbauten auf
einem Steckbrett, vor allen Dingen dann, wenn Controller nicht mittels 
der ARDUINO IDE programmiert werden sollen.

Als STK500v2 Programmer ist er zudem deutlich schneller als ein USBasp:

STK500V2
--------
avrdude -c stk500v2 -p atmega168 -P /dev/ttyUSB0 -b 115200 -B1 -V -U flash:w:tetris6_devboard.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s

avrdude: Device signature = 0x1e9406 (probably m168)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "tetris6_devboard.hex"
avrdude: input file tetris6_devboard.hex auto detected as Intel Hex
avrdude: writing flash (6492 bytes):

Writing | ################################################## | 100% 1.54s

avrdude: 6492 bytes of flash written

avrdude: safemode: Fuses OK (E:F9, H:D5, L:CF)

avrdude done.  Thank you.

USBasp
------
avrdude -c stk500v2 -p atmega168 -P /dev/ttyUSB0 -b 115200 -B1 -V -U flash:w:tetris6_devboard.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s

avrdude: Device signature = 0x1e9406 (probably m168)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "tetris6_devboard.hex"
avrdude: input file tetris6_devboard.hex auto detected as Intel Hex
avrdude: writing flash (6492 bytes):

Writing | ################################################## | 100% 1.54s

avrdude: 6492 bytes of flash written

avrdude: safemode: Fuses OK (E:F9, H:D5, L:CF)

avrdude done.  Thank you.


Im Falle von MCS-51 ist es sogar eine der wenigen Möglichkeiten, einen 
der (veralteten ?!?) AT89S52 zu flashen (die ich aufgrund ihrer 
Robustheit und Anzahl von I/O Ports immer noch dann schätze, wenn 
Geschwindigkeit und Stromverbrauch keine Rolle spielen).

Wird die PIC16F Firmware gestartet, kann mit Hilfe eines Terminals 
(bspw. PuttY oder picocom) in die Firmware "hineingesehen" werden. Die 
Firmware liefert KEIN ECHO, sodaß eine Einschalten der Echofunktion im 
Terminal hilfreich ist.

Wird im Terminal "devices" eingegeben, listet der Arduino alle 
unterstüzten PIC16F MCU's auf.

Statusanzeigen der LEDs:

gelbe LED: Funktionsbereitschaft des Programmers
grüne LED blinkt oder dauernd an: Ein Chip wird gerade programmiert
rote LED: das Flashershield fungiert als USB2UART Bridge

-----------------------------------------------------
Bilderbeschreibung:

flashershield_02.jpg zeigt das Shield in Verbindung mit einem PIC16F676

flashershield_03.jpg zeigt das Shield in Verbindung mit ATtiny44

flashershield_with_pic16f676.jpg zeigt einen Screenshot, der gerade 
einen PIC16F676 programmiert hat.

von Ralph S. (jjflash)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe leider die ZIP-Datei vergessen anzuhängen ...

von Ralph S. (jjflash)


Bewertung
0 lesenswert
nicht lesenswert
Gerade eben angekommen (und ausprobiert). Die Anschlüße des ISP-Shields 
von EBAY

Ebay-Artikel Nr. 272865720849

sind identisch mit meinem Flashershield.

Also IDC Pfostenleiste eingelötet und ausprobiert und siehe da:

Das Teil funktioniert mit meiner Software für AVR und MCS-51.

Für PIC16F logischerweise nicht, da zum einen der ICSP Connector und die 
12V Brennspannung fehlen

von Ralph S. (jjflash)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Update:

Es gab einen Fehler im Programm:

Wenn der User keinen Zugriff auf den Ordner /tmp hat (bei mir gibt es 
den Zugriff), hat sich das Programm verabschiedet.

Jetzt wird ein Ordner im home-Verzeichnis des Benutzers angelegt.

Benutzer: mcu

Angelegter Ordner: /home/mcu/tmp

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.
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.