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
--------
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.
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
Servus Ralph,
habe versucht, Deine Software hier einzusetzen.
Habe hier mit Mint Cinemon 19.3 und 21 probiert.
Das installieren klappte soweit, doch beim Versuch
eine Firmware zu flashen wurde einmal eine
libusb.xxx, oder eine libreadline.xxxx nicht gefunden.
Linux ist scheinbar doch nicht gleich Linux,
mit welchem BS hat es bei Dir funktioniert?
Gruß, Hans
Johann D. schrieb:> beim Versuch> eine Firmware zu flashen wurde einmal eine> libusb.xxx, oder eine libreadline.xxxx nicht gefunden.
libusb.xxx und libreadline.xxxx gibt es tatsächlich nicht – unter keinem
Linux.
Bist du sicher, dass es nicht libusb.so* und libreadline.so* waren? In
dem Fall wäre libusb.so nämlich im Paket libusb-dev, und libreadline.so
analog in libreadline-dev (vorausgesetzt, Mint hält sich zumindest
ansatzweise an das unter debianoiden Distributionen übliche Paketschema
– leider ist die Paketsuche auf deren Seite für mich kaputt, so dass ich
da nicht fix nachschauen konnte).
prinzipiell hängt das ja mal grundsätzlich von der USB2UART Bridge ab,
die auf einem Uno verbaut ist (je nachdem, ob das ein originaler oder
ein Chinaclone ist). Getestet hab ich das auf einer eigenen
Livedistribution bassieren auf Porteus Slackware, einer regulären
Slackware Distribution (reine Konsole) und auf Ubuntu mit Arduino Uno
mit CH340G Chip und mit FDTI Chip. Welcher Treiber für deinen UNO nicht
will weiß ich nicht. Du kannst deinen UNO aber schon mittels avrdude
flashen?
Welche Firmware willst du denn aufspielen?
Danke für die Antworten.
Muß gleich mal gestehen, daß ich noch gar keinen UNO habe.
Habe vor längerer Zeit mal ein paar Nanos geschenkt bekommen,
vermutlich Chinaklone und nur mit der Einstellung "old Bootloader"
zu flashen.
Da ja die Nanos auch 328er verbaut haben und die Ports beim Uno
und Nano auch fast gleich sind, wollte ich probieren, ob ich
irgendwie die Firmware auf einen Nano bekomme und er dann
zum programmieren der MCS-51 verwendet werden kann.
Also nach dem installieren und starten aus der Konsole, ging ich auf
Firmware und wählte die mittlere aus.
Es kam dann auch unten die Meldung:
creating flashershield.hex auf /home/mcu/tmp
das Verzeichnis wurde zwar angelegt, aber keine Datei darin.
Die weitere Meldung war dann
avrdude........mit den Befehlen
und dann die Fehlermeldung von den nicht gefundenen libs,
einmal libusb-0.1.so-4 (vorhanden war libusb-0.1.4)
ein andermal libreadline.so.6 (vorhanden war libreadline6)
Die Frage wäre hauptsächlich, ob es überhaupt mit einem Nano
gehen könnte und wie ich an die Datei flasherschield.hex komme.
Es wäre auch nur die Verwendung für MCS-51 vorgesehen, auch
bei einem Uno ohne flashershield (nur Jumper für Reset und
4 Programmierleitungen herausgeführt)
Noch ein paar Anmerkungen zu den zip-Dateien:
Habe erst nach ein paar Wochen gemerkt, daß es da eine alte und neue
gibt. Das entpacken war kein Problem, danach war dann immer (unter
anderen)
ein 32-Bit- und 64-Bit-Verzeichnis da.
Der Installer suchte sich automatisch das richtige Verzeichnis aus.
Bei der alten Ausgabe fehlte jedoch im 64-Bit-Verzeichnis die Datei
"flashershield", die im 32er schon vorhanden war, beim Update war es
genau umgekehrt. Durch kopieren der Datei von einem Verzeichnis
ins andere konnte so die komplette Installation ohne Fehlermeldung
erfolgen. Da vermute ich, dass die Software selbst auf 32 und 64-Bit-
Rechnern gleich sein kann.
Gruß, Hans
Habe mir den Nano hier noch mal genauer angeschaut und gesehen,
daß so ein CH340G hier auch verbaut ist.
Außer einem AMS1117 (Spannungsregler) finde ich hier keine
zusätzlichen ICs.
Nach genauerem vergleichen der Datenblätter von Uno und Nano,
sehe ich jetzt auch, daß der Uno auch noch einen Atmega16 hat.
Was dieser auf dem Board für Aufgaben hat, wenn keine Ein-/Aus-
gänge davon rausgeführt sind?
Ebenso der oben genannte FDTI Chip, wenn dieser für das Projekt
gebraucht wird, kann es natürlich mit dem Nano nicht funktionieren.
Da wäre dann noch die Sache mit den libs.
Bei Mint Cinemon 19.3 finde ich die libreadline5 und libreadline7,
beim 21er glaub ich war es libreadline6, aber keine mit dem
"so"-Zusatz.
Vielleicht ziehe ich doch wieder mal auf einem PC ein Ubuntu auf,
ob es damit weiter kommt. Würde jetzt an eine 3 bis 4 Jahre
alte Version denken, oder ist das Flashershield auch mit den
aktuellen Versionen am laufen?
Gruß, Hans
Johann D. schrieb:> Nach genauerem vergleichen der Datenblätter von Uno und Nano,> sehe ich jetzt auch,
... dass Du nicht genau geschaut hast.
Uno und Nano haben beide einen ATMega328, Software für den Uno läuft
klaglos auch auf dem Nano.
Das wesentliche Merkmal der Arduinos ist, diese per USB programmieren zu
können, dafür brauchen sie einen Baustein, der Rx / Tx auf USB umsetzt.
Beim originalen Nano ist das ein FTDI-Baustein, die ChiNanos setzen
stattdessen einen CH340 drauf.
Beim Uno macht ein AtMega8 oder -16 die USB-Anbindung, die ChinUnos
haben stattdessen ebenfalls den CH340.
Das ist vollkommen egal, man muß lediglich am PC den jeweils passenden
USB-Treiber einrichten. FTDI oder ATMega-USB bringt die Arduino-IDE mit,
für den CH340 muß man halt manuell Hand anlegen.
Falls es Dir entgangen ist: Der Thread ist von September 2018! Um einen
AT328 per ISP zu programmieren oder dessen Bootloader auszutauschen,
gibt es vom Chinesen jede Menge fertiger Platinchen für ein paar Euro zu
kaufen. Es gibt auch diverse Beispiele, einen Uno ohne externe Hardware
dafür zu verwenden.
Manfred schrieb:> Um einen> AT328 per ISP zu programmieren oder dessen Bootloader auszutauschen,> gibt es vom Chinesen jede Menge fertiger Platinchen für ein paar Euro zu> kaufen.
Wenn ich das richtig verstanden habe (und richtig gelesen habe), dann
möchte Johann keinen AVR flashen, sondern einen MCS51
Johann D. schrieb:> Die Frage wäre hauptsächlich, ob es überhaupt mit einem Nano> gehen könnte und wie ich an die Datei flasherschield.hex komme.> Es wäre auch nur die Verwendung für MCS-51 vorgesehen, auch> bei einem Uno ohne flashershield (nur Jumper für Reset und> 4 Programmierleitungen herausgeführt)
Hier muß man dann sagen, dass das grundsätzlich mit einem Arduino Nano
geht. Allerdings sollte man eben ein paar wichtige Dinge wissen. Hier in
Bezug einmal auf den Arduino, zum anderen in Bezug auf das
Betriebssystem des PC's.
Wie oben gesagt, gibt es beim UNO unterschiedliche Chips (beim
Originalen), die die Funktion der USB2UART Brücke vornehmen, damit sich
der Arduino am Computer als serielles Gerät ausgibt (bei Chinamodellen
ist der Chip sehr häufig ein CH340G).
Je nachdem welcher Chip verbaut ist, wird sich ein Arduino dann im
Ordner
/dev
als:
/dev/ttyUSB0
oder
/dev/ttyACM0
anmelden (wenn es denn das erste USB2UART Device am PC ist).
mit:
ls /dev/ttyU*
oder
ls /dev/ttyA*
kann man dann sehen, ob der Arduino vom Linuxsystem bereits erkannt ist.
Manfred schrieb:> Uno und Nano haben beide einen ATMega328, Software für den Uno läuft> klaglos auch auf dem Nano.
Absolut richtig, aber:
Manfred schrieb:> Beim Uno macht ein AtMega8 oder -16 die USB-Anbindung, die ChinUnos> haben stattdessen ebenfalls den CH340.
Beim Uno machen das ATMega8U2 oder -16U2 Controller. Hier steht das U
dafür, dass diese Controller eben nativ USB 2.0 unterstützen.
Größere Abweichung (aus meiner Sicht der Dinge immer unverständlich
gewesen) ist, dass der Nano einen anderen Bootloader als der UNO hat.
Hier sticht vor allem heraus, beim Nano eine Baudrate von 57600 Bd
verwendet wird, beim UNO 115200 Bd. Hier bin ich persönlich hergegangen
und habe meine Nanos mit dem Optiboot Bootloader und mit 115200 Bd
geflasht.
Bei den Nanos aus China ist noch zu sagen, dass es hier auch einige
gegeben hat (und gibt), die anstelle eines ATMega328 nur einen ATMega168
haben.
Auf jeden Fall sollte meine Software genügen, über einen Arduino Nano
einen MCS51 zu flashen.
Grundsätzlich sollte Johann aber erst einmal in der Lage sein, seinen
Arduino Nano mittels AVRDUDE flashen zu können. Kann er das nicht, ist
alles vergebene Liebesmühe.
---------------------------------------------
Leider bin ich derzeit im Krankenstand und habe auf meine
Entwicklungskiste keinen Zugriff. Wenn ich den wieder habe, kann ich
hier speziell ein Binary des Hostprogramms hochladen, das den Arduino
Nano bedienen soll. Dieses würde ich dann als Konsolenprogramm hier
einstellen (ohne die TurboVision Oberfläche des Konsolenprogramms).
Als erstes sollte aber wie gesagt, Johann seinen Nano im Griff haben, um
ihm mittels AVRDUDE ein Programm aufspielen zu können. Wenn das
funktioniert, kann ich ihm hier wie gesagt die Firmware einstellen
(einmal für einen ATMega328 und einmal für einen ATMega168), die dann
mittels AVRDUDE aufgespielt wird. Wenn diese Software aufgespielt ist,
wäre es (bspw. auf einem Steckbrett) sinnvoll, die Resetleitung des Nano
auf +Ub zu setzen, damit beim Zugriff lauf den Nano über die serielle
Schnittstelle dieser nicht mehr zurückgesetzt wird (und somit in seinem
Bootloader landet).
Danach sollte es dann kein Problem mehr sein, einen MCS51 zu flashen.
Wie gesagt kann ich das aber erst dann machen, wenn ich wieder zugriff
auf meinen Entwicklungsrechner habe.
Ein schönes 2. Adventswochenende,
JJFlash
Danke für die ausführlichen Antworten,
und keine Eile notwendig.
Was mir noch auffiel - Ich hatte eine Arduinoide 1.8 auf einem
Windows- und eine auf einem Linux-PC.
Jetzt auf dem Linux eine IDE 2.
Beim vergleichen fand ich auf der neuen keine Einstellmöglichkeit
für "old Bootloader", dafür einen Pfad "Bootloader installieren"
Andere Frage, könnte man den AVR auf dem Arduino auch über die
6polige Stiftleiste programmieren? (z. B. mit PonyProg o. ä.)
Gruß, Hans
Johann D. schrieb:> Andere Frage, könnte man den AVR auf dem Arduino auch über die> 6polige Stiftleiste programmieren? (z. B. mit PonyProg o. ä.)
Die ist genau dafür da.
Gruß Klaus (der soundsovielte)
Johann D. schrieb:> Andere Frage, könnte man den AVR auf dem Arduino auch über die> 6polige Stiftleiste programmieren? (z. B. mit PonyProg o. ä.)
Ach .. Herr .. jeh !
PonyProg ist schon sehr antik und wurde damals über eine "echte" RS232
realisiert (die dann Pegel mit ca. +-15V führte). Diese wurde mittels
Bitbanging realisiert und wenn ich es noch richtig weiß, gab es keine
Version hiervon für Linux, sondern nur für Windows.
Ein PonyProg heute ans Laufen zu bringen erfordert schon etwas Wissen
und in aller Regel eine ältere (bis sehr alte) Hardware, die noch einen
echten RS232-Port verfügt (eine USB2UART Bridge reicht hier nicht, was
natürlich die ganzen Adapter, egal mit welchem Chip realisiert
einschließt).
Wenn ein Arduino, egal ob ein UNO oder ein NANO mittels der 6 pol.
Stiftleiste (ISP-Anschluß) programmiert wird, ist hier zu wissen, dass
der Bootloader überschrieben wird und der Arduino hierüber dann
natürlich nicht mehr erreicht wird (es sei denn, man spielt ihm über
genau diese Stiftleiste einen neuen Bootloader auf).
Selbst ein USBASP-Programmer (der die USB-Schnittstelle außerhalb jeder
Spezifikation mittels VUSB realisiert) wird hier bei einem Windows 11
(zumindest war das bei mir so) relativ schwierig. Unter Linux hatte ich
mit einem USBasp auch bei einer neuen Version bisher keine Probleme.
Wenn ich das richtig sehe, möchtest du einen alten MCS51 Controller
(vllt. den AT89S52 ?) von Microchip/Atmel flashen/programmieren. Hier
solltest du zuerst dein Betriebssystem (Linux) im Griff haben und mal
schauen, ob du mit dem Nano kommunizieren kannst!
Hier dann die Frage: Hast du Systemweit ein AVRDUDE zur Verfügung oder
ist dieses nur über deine ArduinoIDE erreichbar.
Wenn du kein Avrdude erreichbar hast ==> installieren.
Hier solltest du dann (unter Linux) etwa so etwas eingeben:
obiges gilt für einen Arduino Nano mit seinem Bootloader mit 57600 Baud
Solltesst du auf dem Nano einen anderen Chip als bspw. den CH340G haben,
ist der Parameter "-P /dev/ttyUSB0" durch "-P /dev/ttyACM0" zu ersetzen.
Wenn Dein Nano (warum auch immer) einen Bootloader installiert hat, der
als Kommunikationsgeschwindigkeit 115200 Baud erwartet (wie bspw. ein
UNO), dann ist der Parameter "-b 57600" durch "-b 115200" zu ersetzen.
Wenn du das dann soweit hast, kannst Du schon mal mit dem Arduino (Nano
oder Uno) kommunizieren.
Im Zip-File
https://www.mikrocontroller.net/attachment/376289/flashershield.zip sind
in den Ordnern binaries_32bit und binaries_64bit die Dienstprogramme für
den PC, die dann, wenn der Arduino mit der Firmeware versehen ist
kommunizieren kann, um einen AT89S52 zu flashen.
Die Konsolenprogramme heißen hier in beiden Fällen flash51n2. Zusätzlich
ist in beiden Ordnern noch ein kleines Dienstprogramm vorhanden, das
sich ch340reset nennt. Dieses hatte ich geschrieben, weil bei mir mit
einem Board und Ryzen5 CPU der Flashvorgang genau einmal funktioniert
hatte (in Verbindung mit einem CH340 Chip) und danach die Elektronik aus
dem USB-Port ausgestöpselt und wieder eingestöpselt werden mußte. Hast
du also eine Elektronik mit diesem Chip kann es gut sein, vor dem
eigentlichen Flashvorgang erst das Programm ch340reset auf der Konsole
zu starten.
Auch wenn ich hier jetzt gleich Schimpfe bekomme: Vllt. solltest du
deine Experimente auch unter root-Rechten ausführen, damit
sichergestellt ist, dass du keine Probleme mit den Zugriffsrechten auf
die Schnittstelle hast.
Die Firmware, für das Flashen eines MCS51 ist in meinem Konsolenprogramm
direkt hinterlegt. Ich habe die jetzt hier einmal extrahiert und mit
angefügt. Naaaaatürlich unterscheidet sich die Firmware jetzt nicht, ob
das Hostprogramm unter einem 32-Bit oder 64-Bit Linux läuft.
Wenn du dir das Script "upload" anschaust, dann steht dort drin:
Dieses Script kannst du dir anpassen, je nachdem ob dein Arduino mit
einem ATMega328 oder einem 168er oder gar (in extrem alt) mit einem
ATmega8 bestückt ist.
Also:
- Teste, ob dein Arduino unter Linux mittels AVRDUDE erreichbar ist.
- Spiele die Firmware uni51 auf den Arduino auf (Anleitung hast du hier
ja jetzt, für welche Chips das geht und die einzelnen Hexdateien auch)
- Verbinde die MISO, MOSI, SCK-Leitung des Arduino mit dem AT89S52.
Leitung D10 des Arduino geht an den Reset des AT89S52. Sorge dafür, dass
der AT89S einen angeschlossenen Quarz und Ziehkondensatoren hat (12 MHz
Quarz wäre gut). Schließe den AT89S an +5V an und vergiß die
Abblockkondensatoren nicht.
- lade ein Programm in den AT89S hoch:
1
flash51n wr /dev/ttyUSB0 helloworld.ihx
hierbei ist helloworld.ihx natürlich dein von dir erstelltes Programm,
das du im AT89S laufen lassen möchtest
Danke für die genauen Angaben,
hier noch ein paar Hinweise zur Situation hier
- kam über diesen Link
Beitrag "Re: Einstieg in 8051 - Atmels AT89S52 oder?"
zu der Seite
- habe hier Linux- und Windows-PCs, auch noch alte mit XP
- bisher immer mit dem (auch schon antiken) ISP-Programmer geflasht
- weil hier nur 89S52 und 89S8253 vorhanden, (PonyProg bedient nur
89S53 und 89S8252)
- bin, bzw. war, dabei einen neuen (alten, aus mehreren alten) Tower
herzurichten, Quadcore 3,4 GHz 4 GB, und mit Win10 und Linux
auszurüsten. Der hätte sogar noch eine echte RS232 und auf dem
MB einen LPT
- jetzt gerade dabei ein Ubuntu 18.04 aufzuziehen
wenn das geschehen ist, melde ich mich wieder.
Gruß, Hans
So, das Ubuntu 18.04 ist jetzt unter dem Benutzer mcu installiert.
Das flashershield.zip entpackt und komplett installiert, somit ist
auch avrdude vorhanden, keine Fehlermeldung, lässt sich auch mit
flashershield problemlos starten.
Zusätzlich habe ich auch noch die neuste Arduinoide installiert.
Nano angeschlossen, /dev/ttyUSB0 ist vorhanden, dann die ersten
Versuche:
mcu@ubu18:~$ avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 57600 -B 5
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
mcu@ubu18:~$ sudo avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 57600
-B 5
[sudo] Passwort für mcu:
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
mcu@ubu18:~$ sudo avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 115200
-B 5
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
mcu@ubu18:~$
Wenn ich die Arduinoide starte, erscheint nach select Board
Unknown
/dev/ttyUSB0
der Nano wird also nicht automatisch erkannt.
Habe dann Arduino Nano ausgewählt und versucht ein Blinkprogramm zu
flashen
So, das Ubuntu 18.04 ist jetzt unter dem Benutzer mcu installiert.
Das flashershield.zip entpackt und komplett installiert, somit ist
auch avrdude vorhanden, keine Fehlermeldung, lässt sich auch mit
flashershield problemlos starten.
Zusätzlich habe ich auch noch die neuste Arduinoide installiert.
Nano angeschlossen, /dev/ttyUSB0 ist vorhanden, dann die ersten
Versuche:
mcu@ubu18:~$ avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 57600 -B 5
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
mcu@ubu18:~$ sudo avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 57600
-B 5
[sudo] Passwort für mcu:
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
mcu@ubu18:~$ sudo avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 115200
-B 5
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
mcu@ubu18:~$
Wenn ich die Arduinoide starte, erscheint nach select Board
Unknown
/dev/ttyUSB0
der Nano wird also nicht automatisch erkannt.
Habe dann Arduino Nano ausgewählt und versucht ein Blinkprogramm zu
flashen
Vorher Prozessor Atmega328P - old Bootloader
und Port ttyUSB0 ausgewählt
Der Sketch verwendet 924 Bytes (3%) des Programmspeicherplatzes. Das
Maximum sind 30720 Bytes.
Globale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 2039
Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
avrdude: ser_open(): can't open device "/dev/ttyUSB0": Permission denied
Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1
Bei meinem anderen Nano hatte ich es schon mal geschafft ihn zu
flashen, ist aber schon lange her und weiß jetzt nicht mehr genau wie
ich
das damals gemacht hatte.
Bevor ich weiter rummurkse warte ich lieber auf eure Ratschläge.
Gruß, Hans
P.S.:Schreibe gerade als Gast, weil ich auf dem neuen PC
das Passwort noch nicht gespeichert ist und so konnte ich das
was doppelt war nicht mehr löschen.
khs schrieb:> error while loading shared libraries: libreadline.so.6: cannot> open shared object file
Du könntest nun das Paket mit der betreffenden Lib installieren …
Hier das Ergebnis nach der Anleitung im obigen Link:
mcu@ubu18:~$ cd /lib/x86_64-linux-gnu/
mcu@ubu18:/lib/x86_64-linux-gnu$ sudo ln -s libreadline.so.7.0
libreadline.so.6
[sudo] Passwort für mcu:
mcu@ubu18:/lib/x86_64-linux-gnu$ sudo ln -s libreadline7
libreadline.so.6
[sudo] Passwort für mcu:
mcu@ubu18:/lib/x86_64-linux-gnu$ sudo avrdude -c arduino -p m328p -P
/dev/ttyUSB0 -b 57600 -B 5
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
mcu@ubu18:/lib/x86_64-linux-gnu$
Wieder mit der Arduino IDE probiert, diesmal zuerst auf Win7:
Mit den Einstellungen - Arduino Nano, Prozessor Atmega 328P old
Bootloader,
Programmer ArduinoISP, Port Com8
konnte ich das Blinkprogramm problemlos flashen.
Das gleiche unter Ubuntu 18.04 mit Port ttyUSB0:
Der Sketch verwendet 924 Bytes (3%) des Programmspeicherplatzes. Das
Maximum sind 30720 Bytes.
Globale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 2039
Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
avrdude: ser_open(): can't open device "/dev/ttyUSB0": Permission denied
Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1
Die Frage wäre jetzt, wie könnte ich die Firmware mit der
Windows-Arduinoide
aufspielen (das uni51_atmega328.hex), geht das auch?
Oder nach dem Fehler googeln und (z.B. gemäß Anleitung hier:
https://docs.arduino.cc/software/ide-v1/tutorials/Linux ) deinen User
zur Gruppe dialout zufügen.
sudo usermod -a -G dialout <username>
(You may need to logout and back in for the new group to take effect.)
Johann D. schrieb:> mcu@ubu18:/lib/x86_64-linux-gnu$ sudo ln -s libreadline.so.7.0> libreadline.so.6> [sudo] Passwort für mcu:> mcu@ubu18:/lib/x86_64-linux-gnu$ sudo ln -s libreadline7> libreadline.so.6> [sudo] Passwort für mcu:
Beim zweiten Aufruf von ln ist der erste Parameter ein anderer, das
zeigt folglich in den Wald.
Jetzt noch mal eine neue Variante,
bin jetzt auf einem anderen Rechner mit Linux Mint Cinamon 19.3 64bit
und ArduinoIDE 2:1.0.5+dfsg2-4.1
(Gestern auf dem Ubuntu war die allerneueste IDE)
Diesmal mit den Einstellungen
Board - Arduino Nano w/ ATmega328 (Einstellmöglichkeit "old Bootloader"
war nicht vorhanden)
Port - ttyUSB0
Programmer - Arduino as ISP
Damit konnte ich Beispielsprogramme problemlos flashen, doch mit
avrdude:
hans@Dell:~/Downloads$ cd mcs51/
hans@Dell:~/Downloads/mcs51$ ls
firmware host
hans@Dell:~/Downloads/mcs51$ cd firmware/
hans@Dell:~/Downloads/mcs51/firmware$ ls
Makefile uni51_atmega168.hex uni51_atmega328.hex uni51_atmega8.hex
uni51_atmega.c uni51_atmega.hex upload
hans@Dell:~/Downloads/mcs51/firmware$ avrdude -c arduino -p m328p -P
/dev/ttyUSB0 -b 115200 -U flash:w:uni51_atmega328.hex
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
hans@Dell:~/Downloads/mcs51/firmware$ avrdude -c arduino -p m328p -P
/dev/ttyUSB0 -b 57600 -U flash:w:uni51_atmega328.hex
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
hans@Dell:~/Downloads/mcs51/firmware$ sudo avrdude -c arduino -p m328p
-P /dev/ttyUSB0 -b 115200 -U flash:w:uni51_atmega328.hex
[sudo] Passwort für hans:
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
hans@Dell:~/Downloads/mcs51/firmware$ sudo avrdude -c arduino -p m328p
-P /dev/ttyUSB0 -b 57600 -B 5
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
nach dem
hans@Dell:~/Downloads/mcs51/firmware$ sudo usermod -a -G dialout hans
hans@Dell:~/Downloads/mcs51/firmware$ sudo avrdude -c arduino -p m328p
-P /dev/ttyUSB0 -b 57600 -B 5
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
Warum das mit der IDE ging und mit avrdude nich??????????
Jetzt probier ich auch noch ein Laptop mit 32bit-19.3er
> mcu@ubu18:/lib/x86_64-linux-gnu$ sudo ln -s libreadline7> libreadline.so.6> [sudo] Passwort für mcu:>Beim zweiten Aufruf von ln ist der erste Parameter ein anderer, das>zeigt folglich in den Wald.
Den ersten Anlauf hatte ich aus dem Ubuntu-Link kopiert, da aber
hier nur das Paket libreadline7 vorhanden war habe ich umgeändert.
Es ist aber auch danach nur wieder das libreadline7 vorhanden gewesen.
Sind auch hier nirgends solche Pakete mit "so"-Zusatz zu finden,
auch nicht durch googeln.
Johann D. schrieb:> Die Frage wäre jetzt, wie könnte ich die Firmware mit der> Windows-Arduinoide
Das würde dir gar nix nutzen, da du dann zwar ein funktionierendes
Flashershield hast, aber die Host-Software dafür nur unter Linux läuft.
Unter Linux hast du jedoch bisher keine Kommunikation zu deinem CH340G
Chip auf dem Arduino (Systemweit gesehen) herstellen können.
Demnach wird dann auch meine Host-Software unter deinem Linux nicht
laufen.
>Demnach wird dann auch meine Host-Software unter deinem Linux nicht
laufen.
Daran hatte ich auch schon gedacht, ob das flash51ide dann auch die
libreadline.so.6 verlangt.
Kommt mir schon irgendwie komisch vor, daß hier weit und breit kein
libreadline.so.6 vorhanden ist, andererseits dürften doch viele,
viele Linuxuser unterwegs sein, die mit ArduinoIDE und avrdude
klar kommen. Ein Bekannter vom Linuxstammtisch verwendet schon mehr
ESP32, ....vielleicht sind nicht nur die 51er uralt-antik, sondern
auch die AVRs einschließlich Arduinos am aussterben.
Will es aber auch nicht überstrapazieren.
Danke nochmal für die Unterstützung, Gruß, Hans
Johann D. schrieb:> Kommt mir schon irgendwie komisch vor, daß hier weit und breit kein> libreadline.so.6 vorhanden ist
Das ist nicht "komisch", es benötigt "nur" einen korrekten symbolischen
Link von libreadline.so.7 nach libreadline.so.6
Vielleicht solltest du dich wirklich etwas grundsätzlicher mit Linux
beschäftigen bevor du das benutzen magst. Kenntnisse auf der Konsole
sind hier schon von großem Nutzen.
Hmmmm, mal sehen: Wenn ich wieder zu Hause bin, mache ich dir vllt.
(aber nur vllt.) eine Live-Konsolen-Linux-Version, mit dem du das
verwenden kannst.
Grundsätzlich aber mußt du eben die Kommunikation vom Rechner zum Device
hinbekommen (an sich kein Hexenwerk).
Allerdings muß man wissen, was man macht !
Hier ist und war kein libreadline.so.7 vorhanden, sondern nur ein
libreadline7 ohne "so" (beim 21er Mint glaub' ich, war es ein
libreadline6.
War der Befehl
sudo ln -s libreadline7 libreadline.so.6
denn kein Befehl zum umbenennen?
Es kam dabei keine Fehlermeldung, aber umbenannt wurde auch nichts.
>symbolischer Link
Oder müsste ich zuvor erst libreadline.so.6 irgendwie erzeugen?
Muß schon zugeben, daß auch mein Englisch nicht so übermäßig ist.
>Live-Konsolen-Linux-Version
Habe auch auf meinem "neuen" PC noch eine andere Baustelle,
kann schon noch etwas Platz freihalten.
Johann D. schrieb:> Hier ist und war kein libreadline.so.7 vorhanden
Und das hier hast Du wenigstens gemacht?
> sudo apt-get install libreadline-dev
Poste mal die Ausgabe hiervon:
ls -al /lib/x86_64-linux-gnu/
(die Zeilen, in denen "libreadline" auftaucht, und zwar alle, sollten
genügen)
Muß gestehen, daß ich das übersehen, nicht gemacht hatte.
sudo apt-get install libreadline-dev
Ist unter Synaptic auch als nicht installiert geführt.
Mache zum Unterschied dann vorher und nachher
ls -al /lib/x86_64-linux-gnu/libread*
hans@Dell:~$ ls -al /lib/x86_64-linux-gnu/libread*
lrwxrwxrwx 1 root root 18 Mai 20 2020
/lib/x86_64-linux-gnu/libreadline.so.5 -> libreadline.so.5.2
-rw-r--r-- 1 root root 249144 Feb 7 2016
/lib/x86_64-linux-gnu/libreadline.so.5.2
lrwxrwxrwx 1 root root 18 Mai 20 2020
/lib/x86_64-linux-gnu/libreadline.so.7 -> libreadline.so.7.0
-rw-r--r-- 1 root root 294632 Mai 15 2017
/lib/x86_64-linux-gnu/libreadline.so.7.0
hans@Dell:~$ sudo apt-get install libreadline-dev
[sudo] Passwort für hans:
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
libtinfo-dev
Vorgeschlagene Pakete:
readline-doc
Die folgenden NEUEN Pakete werden installiert:
libreadline-dev libtinfo-dev
0 aktualisiert, 2 neu installiert, 0 zu entfernen und 626 nicht
aktualisiert.
Es müssen 214 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 1.134 kB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren? [J/n] J
Holen:1 http://ubuntu.unitedcolo.de/ubuntu bionic-updates/main amd64
libtinfo-dev amd64 6.1-1ubuntu1.18.04 [81,3 kB]
Holen:2 http://ubuntu.unitedcolo.de/ubuntu bionic/main amd64
libreadline-dev amd64 7.0-3 [133 kB]
Es wurden 214 kB in 0 s geholt (460 kB/s).
Vormals nicht ausgewähltes Paket libtinfo-dev:amd64 wird gewählt.
(Lese Datenbank ... 272013 Dateien und Verzeichnisse sind derzeit
installiert.)
Vorbereitung zum Entpacken von
.../libtinfo-dev_6.1-1ubuntu1.18.04_amd64.deb ...
Entpacken von libtinfo-dev:amd64 (6.1-1ubuntu1.18.04) ...
Vormals nicht ausgewähltes Paket libreadline-dev:amd64 wird gewählt.
Vorbereitung zum Entpacken von .../libreadline-dev_7.0-3_amd64.deb ...
Entpacken von libreadline-dev:amd64 (7.0-3) ...
libtinfo-dev:amd64 (6.1-1ubuntu1.18.04) wird eingerichtet ...
libreadline-dev:amd64 (7.0-3) wird eingerichtet ...
Trigger für install-info (6.5.0.dfsg.1-2) werden verarbeitet ...
hans@Dell:~$ ls -al /lib/x86_64-linux-gnu/libread*
lrwxrwxrwx 1 root root 18 Mai 20 2020
/lib/x86_64-linux-gnu/libreadline.so.5 -> libreadline.so.5.2
-rw-r--r-- 1 root root 249144 Feb 7 2016
/lib/x86_64-linux-gnu/libreadline.so.5.2
lrwxrwxrwx 1 root root 18 Mai 20 2020
/lib/x86_64-linux-gnu/libreadline.so.7 -> libreadline.so.7.0
-rw-r--r-- 1 root root 294632 Mai 15 2017
/lib/x86_64-linux-gnu/libreadline.so.7.0
hans@Dell:~$
Habe immer unter Synaptic gesucht und nicht in /lib/x86_64-linux-gnu
In Synaptic heißt es auch nach wie vor libreadline7 danach in der
Spalte
installierte Version 7.0-3.
War immer von dem fehlenden "so" irritiert.
Dann versuche ich jetzt nochmal
hans@Dell:~$ sudo ln -s libreadline.so.7.0 libreadline.so.6
[sudo] Passwort für hans:
hans@Dell:~$ sudo avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 57600
-B 5
avrdude: error while loading shared libraries: libreadline.so.6: cannot
open shared object file: No such file or directory
hans@Dell:~$
Hier nochmal
hans@Dell:~$ ls -al /lib/x86_64-linux-gnu/libread*
lrwxrwxrwx 1 root root 18 Mai 20 2020
/lib/x86_64-linux-gnu/libreadline.so.5 -> libreadline.so.5.2
-rw-r--r-- 1 root root 249144 Feb 7 2016
/lib/x86_64-linux-gnu/libreadline.so.5.2
lrwxrwxrwx 1 root root 18 Mai 20 2020
/lib/x86_64-linux-gnu/libreadline.so.7 -> libreadline.so.7.0
-rw-r--r-- 1 root root 294632 Mai 15 2017
/lib/x86_64-linux-gnu/libreadline.so.7.0
hans@Dell:~$
Jetzt nochmal mit libreadline.so.7 ohne .0
hans@Dell:~$ sudo ln -s libreadline.so.7 libreadline.so.6
ln: Die symbolische Verknüpfung 'libreadline.so.6' konnte nicht angelegt
werden: Die Datei existiert bereits
Hat jemand noch eine Idee, wie ich auf ein libreadline.so.6
kommen könnte, oder warum avrdude nichts findet?
Das alles hier wieder auf dem Mint Cinamon 19.3
vllt. solltest du dich einmal als root einloggen, dann den symbolischen
Link nach libreadline.so.6 kontrollieren, ggf. neu anlegen und avrdude
einmal (Betonung liegt auf einmal) als root ausführen!
Du bist der einzige den ich "kenne", der avrdude unter Linux nicht ans
Laufen bekommt.
Außerdem hattest du in den vergangenen Posts etwas von einem
"Linux-Stammtisch" geschrieben gehabt. Die sollten dir doch weiterhelfen
können, oder?
Aus welchem PLZ-Gebiet bist du? Wenn du nicht zu weit weg bist, kann ich
mir das ganze auch mal anchauen!
War jetzt zufällig wieder mal im /home/hans, was sehe ich da....
libreadline.so.6
Da ls -al /lib/x86_64-linux-gnu/libread* nur in /lib/x86_64-linux-gnu
sucht hat es es nicht gefunden.
Also, so wie ich das jetzt sehe, muß ich zuerst mit cd nach
/lib/x86_64-linux-gnu
wechseln und dann
sudo ln -s libreadline.so.7.0 libreadline.so.6
ausführen. Bevor ich das mache frage ich jezt lieber noch mal, ob
sudo ln -s libreadline.so.7.0 libreadline.so.6
oder
sudo ln -s libreadline.so.7 libreadline.so.6
richtig sein müsste und ob ich zuvor das im home-Verzeichnis löschen
soll (wie am besten)
Der Linuxstammtisch ist in Rosenheim, bin aber nicht allzuoft dort,
weil ich ca. 30 km entfernt wohne.
Warum bei mir mit einem ganz normalen Mint oder Ubuntu anders sein
soll, das frage ich mich auch schon länger
Johann D. schrieb:> Bevor ich das mache frage ich jezt lieber noch mal, ob>> sudo ln -s libreadline.so.7.0 libreadline.so.6>> oder>> sudo ln -s libreadline.so.7 libreadline.so.6>> richtig sein müsste
Der richtige Befehl ist „man ln“, und eins von beiden ist sowieso schon
ein Link. Man kann Links auf Links erstellen.
Man kann das Programm auch mit Pfaden aufrufen. Tut man das nicht,
arbeitet man natürlich im derzeitigen Arbeitsverzeichnis – das Programm
ist leider nicht gegen libglaskugel.so.42 gelinkt, so dass es ohne die
Angabe der Pfade nicht erraten kann, wo du einen Link erstellen
möchtest.
Danke für die Antwort, doch mit "man ln" komme ich immer nur auf
die Manualseite, was ich auch erwartet hatte.
hans@Dell:~$ sudo rm libreadline.so.6
[sudo] Passwort für hans:
hans@Dell:~$ cd /lib/x86_64-linux-gnu
hans@Dell:/lib/x86_64-linux-gnu$ sudo ln -s libreadline.so.7.0
libreadline.so.6
hans@Dell:/lib/x86_64-linux-gnu$ sudo avrdude -c arduino -p m328p -P
/dev/ttyUSB0 -b 57600 -B 5
avrdude: error while loading shared libraries: libtermcap.so.2: cannot
open shared object file: No such file or directory
hans@Dell:/lib/x86_64-linux-gnu$ sudo avrdude -c arduino -p m328p -P
/dev/ttyUSB0 -b 115200 -B 5
avrdude: error while loading shared libraries: libtermcap.so.2: cannot
open shared object file: No such file or directory
Ein libtermcap* habe ich in /lib/x86_64-linux-gnu nicht gefunden
und auch unter /lib nicht.
libtermcap.so ist in Debian und -derivaten in libncurses-dev.
Dein System benutzt apt für das Paketmanagement – man kann damit nach
Dateien in Paketen suchen. Nachdem du das Geheimnis von ›man‹ nun
kennst, wäre das für die nächste fehlende Lib ja mal eine nette Übung?
... langsam stellt sich mir die Frage, wie stark abgespeckt das Mint
Cinamon von Johann ist ?!? (und was das ganze noch mit dem Flashershield
bzw. der Software hierfür zu tun hat).
Hier geht es mittlerweile nur noch darum, Avrdude auf einem Linuxsystem
zum Laufen zu bekommen und hätte wohl eher einen eigenen Thread
"verdient"
Zuerst muß ich wieder mal gestehen, daß beim letzten Versuch mit
sudo avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 57600 -B 5
der Nano gar nicht angeschlossen war, jetzt aber bei der Wiederholung
mit Arduino das gleiche rauskam.
libtermcap.so fand ich jetzt bei der Suche mit dem normalen
Dateibrowser mit "libtermcap*" in
/usr/lib/x86_64-linux-gnu
als libtermcap.so aber nirgends ein libtermcap.so.2
Nach
sudo apt-get install libncurses-dev
die gleiche Suche nochmal, aber auch nur das vorherige Ergebnis.
sudo apt search libtermcap*
kam ohne irgendeine Meldung zurück.
>... langsam stellt sich mir die Frage, wie stark abgespeckt das Mint
Wie schon genannt momentan das 19.3 und weiter oben berichtet waren
schon das Mint Cinnamon 21 und Ubuntu 18.04 alle mit dem gleichen
Erscheinen.
Das waren immer ganz normale isos gesaugt über die einschlägigen
Quellen und ganz standardmäßig installiert (ohne irgendwelche
Experteneinstellungen)
Habe auch schon angedacht, über einen anderen Thread zu fragen,
ob da noch welche sind, die damit keine Probleme mit AVR und
Arduino haben.
Johann D. schrieb:> die damit keine Probleme mit AVR und> Arduino haben.
Das hat mit Arduino (oder gar dem Flashershield) gar nichts zu tun,
sondern damit, das Avrdude für seine Arbeit eben bestimmte
Abhängigkeiten hat, die "normalerweise" bei einer Linuxinstallation
schlicht mitinstalliert werden.
Evtl. kann ich noch verstehen, dass in Zeiten von Desktopsystemen evtl.
NCurses nicht mehr mitinstalliert wird, allerdings erschließt sich mir
das nicht ganz, weil auf jedem System (ich kann hier nur für Slackware,
Debian und als Debianderivat Ubuntu sprechen) das ich benutze, zumindest
immer auch der Midnight Commander mitinstalliert ist, damit ich
Dateiverwaltung auf der Konsole relativ komfortabel erledigen kann. Der
Midnight Commander ist hier wohl eines der "berühmten" Beispiele für die
Verwendung von NCurses.
Nun ist es grundsätzlich auch möglich, Avrdude in ein separates
Verzeichnis zu installieren (wie das Arduino macht) und sämtliche
Abhängigkeiten darin mit zu speichern (was einen unkomplizierten Umgang
auf jedem System ermöglicht), aber besser ist es, solche Tools
systemweit zur Verfügung zu haben, wenn man solche Dinge wie
Mikrocontrollerschaltungen entwickelt.
Die Arduino-IDE führt hier dann dazu, dass bspw. der avr-gcc dann
doppelt installiert ist, wenn man nicht ausschließlich mit dem Arduino
programmiert. Gleiches gilt dann für die ARM-Controller, die dann den
C-Compiler dann im Arduinoverzeichnis haben ... und eben noch einmal
Systemweit.
Ich bin ein (ur)alter Mensch und liebe es schlanke bis sehr schlanke
Installationen zu haben die dann den Vorteil haben, noch auf uralten
Systemen zu laufen.
Was jetzt mit deiner Distribution los ist, dass diesem so viele
Libraries fehlen erschließt sich mir nicht !
---------------------------------------------
also:
erster Check nach libncurses*
ls -al /lib/x86_64-linux-gnu/libncurses*
wirst du hier fündig, mußt du einen Link auf libtermcap.so.2 erstellen.
Gesetzt den Fall es wurde Version 5.7 von ncurses gefunden, folgendes
als Root ausführen:
cd /lib/x86_64-linux-gnu
ln -s /lib/libncurses.so.5.7 /lib/libtermcap.so.2
wurde grundsätzlich kein Ncurses gefunden => nachinstallieren.
Libtermcap ist nicht mehr "eigentständig" sondern ein Bestandteil von
Ncurses.
hans@Dell:~$ ls -al /lib/x86_64-linux-gnu/libncurses*
lrwxrwxrwx 1 root root 17 Mai 20 2020
/lib/x86_64-linux-gnu/libncurses.so.5 -> libncurses.so.5.9
-rw-r--r-- 1 root root 141248 Mai 23 2018
/lib/x86_64-linux-gnu/libncurses.so.5.9
lrwxrwxrwx 1 root root 18 Mai 20 2020
/lib/x86_64-linux-gnu/libncursesw.so.5 -> libncursesw.so.5.9
-rw-r--r-- 1 root root 190400 Mai 23 2018
/lib/x86_64-linux-gnu/libncursesw.so.5.9
hans@Dell:~$ cd /lib/x86_64-linux-gnu
hans@Dell:/lib/x86_64-linux-gnu$ sudo ln -s /lib/libncurses.so.5.9
/lib/libtermcap.so.2
hans@Dell:/lib/x86_64-linux-gnu$ sudo avrdude -c arduino -p m328p -P
/dev/ttyUSB0 -b 57600 -B 5
avrdude: error while loading shared libraries: libtermcap.so.2: cannot
open shared object file: No such file or directory
Mit der Browsersuche wurde libtermcap.so.2 dann unter lib als
Verknüpfung(fehlerhaft) angezeigt
hans@Dell:/lib/x86_64-linux-gnu$ ls -al
/lib/x86_64-linux-gnu/libtermcap*
ls: Zugriff auf '/lib/x86_64-linux-gnu/libtermcap*' nicht möglich: Datei
oder Verzeichnis nicht gefunden
hans@Dell:/lib/x86_64-linux-gnu$ cd /lib
hans@Dell:/lib$ ls -al /lib/x86_64-linux-gnu/libtermcap*
ls: Zugriff auf '/lib/x86_64-linux-gnu/libtermcap*' nicht möglich: Datei
oder Verzeichnis nicht gefunden
>Avrdude in ein separates Verzeichnis zu installieren (wie das Arduino
macht) und sämtliche Abhängigkeiten darin mit zu speichern
Kann nur daran erinnern, daß auch mit der ArduinoIDE 2. unter Mint 21
das flashen vom Nano nicht funktionierte.
Falls hier jemand mitliest und bei dem auf einem neueren Mint oder
Ubuntu das alles funktioniert, bitte melden.
Johann D. schrieb:> hans@Dell:/lib/x86_64-linux-gnu$ sudo ln -s /lib/libncurses.so.5.9> /lib/libtermcap.so.2
Wieso hast du den Link im Verzeichnis /lib angelegt und nicht in
/lib/x86_64-linux-gnu ?
------------------------------
melde dich als root an (mit su), dann:
cd /lib/x86_64-linux-gnu
ln libncurses.so.5.9 libtermcap.so.2
------------------------------
Maaaaaaaaaaann
Maaaaannnnn,
hast Du nicht gesehen, was ich ein paar Zeilen weiter oben geposted
hatte?
hans@Dell:~$ cd /lib/x86_64-linux-gnu
hans@Dell:/lib/x86_64-linux-gnu$ sudo ln -s /lib/libncurses.so.5.9
/lib/libtermcap.so.2
Warum der Link in /lib/x86_64-linux-gnu$ nicht entstanden ist und
nur mit der Browsersuche als fehlerhaft in /lib kann ich mir auch nicht
erklären.
> Warum der Link in /lib/x86_64-linux-gnu$ nicht entstanden ist ...
Du übergibst für beide Parameter von "ln" absolute Pfade. Und damit
ist es scheißegal, in welches Verzeichnis Du vorher mit "cd" gewechselt
bist.
> und nur mit der Browsersuche als fehlerhaft in /lib
Du hast einen Link in /lib erzeugt, der auf etwas in /lib nicht
existierendes verweist. Denn in /lib gibt es kein libcncurses.so.5.9,
das liegt in /lib/x86_64-linux-gnu.
Mach das entweder so (ohne Pfadangabe):
Du solltest, wenn Du mit Linux arbeitest, das Konzept von Verzeichnissen
bzw. Pfaden noch etwas ausführlicher verstehen. Das ist übrigens unter
DOS oder Windows auch nicht anders (nur, daß man dort \ als Trenner
verwendet).
Danke, jetzt habe ich es auch bemerkt, bzw. kapiert, warum ein Fehler
erzeugt wurde.
Auf ein neues:
hans@Dell:~$ cd /lib/x86_64-linux-gnu
hans@Dell:/lib/x86_64-linux-gnu$ sudo ln -s libncurses.so.5.9
libtermcap.so.2
[sudo] Passwort für hans:
hans@Dell:/lib/x86_64-linux-gnu$ ls -al
/lib/x86_64-linux-gnu/libtermcap*
lrwxrwxrwx 1 root root 17 Dez 18 12:16
/lib/x86_64-linux-gnu/libtermcap.so.2 -> libncurses.so.5.9
hans@Dell:/lib/x86_64-linux-gnu$ sudo avrdude -c arduino -p m328p -P
/dev/ttyUSB0 -b 57600 -B 5
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100%
0.00s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
avrdude done. Thank you.
Habe eher geglaubt, daß es wieder ein fehlendes lib sucht,
jetzt könnte vielleicht der old Bootloader noch ein Problem werden.
Schau mir als nächstes mal
man avrdude
an.
Nun ist auch die Firmware drauf:
hans@Dell:~$ cd /home/hans//Downloads/mcs51/firmware
hans@Dell:~/Downloads/mcs51/firmware$ sudo avrdude -c arduino -p m328p
-P /dev/ttyUSB0 -b 57600 -U flash:w:uni51_atmega328.hex
[sudo] Passwort für hans:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100%
0.00s
avrdude: Device signature = 0x1e950f (probably m328p)
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 "uni51_atmega328.hex"
avrdude: input file uni51_atmega328.hex auto detected as Intel Hex
avrdude: writing flash (4116 bytes):
Writing | ################################################## | 100%
1.24s
avrdude: 4116 bytes of flash written
avrdude: verifying flash memory against uni51_atmega328.hex:
avrdude: load data flash data from input file uni51_atmega328.hex:
avrdude: input file uni51_atmega328.hex auto detected as Intel Hex
avrdude: input file uni51_atmega328.hex contains 4116 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100%
0.94s
avrdude: verifying ...
avrdude: 4116 bytes of flash verified
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
avrdude done. Thank you.
Vielen Dank nochmal allen Unterstützern, nun kann es auch mit dem
Thema dieses Threads weitergehen.
Muß aber vorher noch Hardware, Jumper und Verbindungskabel herrichten.
Jetzt hatte ich eigentlich gedacht gehabt, dass sich Johann noch einmal
meldet, ob er nun erfolgreich einen AT89S52 hat flashen können oder
nicht!
(aber vllt. konnte er das nicht und "traut" sich jetzt nicht mehr hier
zu fragen?)
Eine Rückmeldung nach geleisteter großer Hilfe von einigen hier wäre
schon nett gewesen !
Bitte um Entschuldigung, dafür dass ich mich so lange nicht mehr
gemeldet
habe. War so lange mit dem einrichten meines "neuen" PCs beschäftigt,
dabei zum erstenmal mit EFI und GPT konfrontiert.
Bis ich dann Win10 und Mint 21 nebeneinander auf die Platte bekam
hat schon gedauert. Nun habe ich gerade auf dem neuen die symbolischen
Links (auf die inzwischen wieder neueren Versionen) gelegt.
Die Leitungen und Stecker zwischen Arduino und MC herstellen kommen
als nächstes, bin aber schon zuversichtlich, dass ich in einigen
Tagen positives berichten kann.
Gruss, Hans
Habe jetzt Hardware für die Verbindung des Nano zum 51er zusammen-
gelötet und wollte mit dem Mint 21 den MC flashen.
Habe deshalb gewartet, weil ich da den Benutzer gleich als
mcu eingerichtet habe. Doch damit funktionierte weder das
Firmware aufspielen, noch das Flashen.
Es ist nicht mal ein /dev/ttyUSB zu finden
Zuerst ohne Fehlermeldung die Software installiert:
All selected programs will be copied to: /usr/local/bin
Installing files for 64 Bit Linux
Install FlasherShield main software CIDE [y/n] ? y
Install AVRDUDE ver. 6.3 (hostprogram for AVR microcontrollers [y/n] ? y
Install Flash51ide / flash51n2 (hostprogram for MCS51 microcontrollers
[y/n] ? y
Install ArdPicProg (hostprogram for PIC16F microcontrollers [y/n] ? y
Install FreeVison styled texteditor CIDE [y/n] ? y
copying file: flashershield
copying file: ch340reset
copying file: avrdude
copying file: avrdude.conf
copying file: flash51ide
copying file: flash51n2
copying file: ardpicprog
copying file: cide
mcu@aqua:/lib/x86_64-linux-gnu$ sudo avrdude -c arduino -p m328p -P
/dev/ttyUSB0 -b 57600 -B 5
avrdude: symbol lookup error: avrdude: undefined symbol: usb_busses
mcu@aqua:/lib/x86_64-linux-gnu$ man avrdude
Kein Handbucheintrag für avrdude vorhanden
mcu@aqua:/lib/x86_64-linux-gnu$ ls -al /dev/ttyUSB*
ls: Zugriff auf '/dev/ttyUSB*' nicht möglich: Datei oder Verzeichnis
nicht gefunden. Auch mit dem Browser finde ich in /dev kein ttyUSB
Externe Festplatte und USB-Stick funktionieren.
Beim Versuch, mit flashershield zu flashen fand ich nur den
write-Befehl, aber keine Einstellmöglichkeit welcher MC-Typ.
Erkennt das die Software normalerweise automatisch?
Da kam dann
waiting for sync. adapter...
Target device did not answer...
Werde dann doch mit dem 19.3er Mint nochmal testen.
So, falls noch jemand mitliest, jetzt konnte ich einen AT89S52
über den Nano flashen. Nachdem keine Fehlermeldung kam,
gehe ich jetzt mal davon aus, dass das File auch korrekt aufgespielt
ist. Zum testen des MC bin ich noch nicht gekommen, auch den
AT89S8253 habe ich jetzt noch nicht probiert.
hans@Dell:~$ asem tneu.asm
hans@Dell:~$ flash51ide wr /dev/ttyUSB0 /home/hans/tneu.hex
waiting for sync. adapter...
writing flash (3320 bytes)
Flashing time: 20.69s
flash51 done, thank you
Aber damit es hier nicht langweilig wird, hier noch ein paar
Angaben, wie es soweit kam:
Wie im letzten Post schon geschrieben gab es in meinem neuesten
PC mit Mint 21 (und EFI-Partition) in /dev kein ttyUSB.
Habe dann mit dem Anwendungsmanager auch eine ArduinoIDE
installiert, darin war dann auch weder eine Porteinstellung,
noch eine Boardeinstellung möglich.
Warum dann ein USB-Stick, eine USB-Festplatte und natürlich
auch eine USB-Maus funktionieren??????
Dafür aber kann man mit
flashershield
problemlos das Fenster öffnen.
Wenn auch das flashen nicht funktionierte, wurde doch unten der
erforderliche Befehl
flash51ide wr /dev/ttyUSB0 /home/hans/.....hex
angezeigt. Das war für mich wieder wichtig, weil hier bei dem
19.3er Mint (64-Bit) das Fenster nicht aufging.
hans@Dell:~/Videos/flashershield$ flashershield
An unhandled exception occurred at $00000000004010D3 :
EInOutError : Read past end of file
$00000000004010D3
$0000000000406659
auch als sudo nicht.
Auch bei einem 19.3er auf 32-Bit-Laptop nicht.
hans@IBM-T42:/usr/local/bin$ sudo flashershield
/usr/local/bin/flashershield: 1: /usr/local/bin/flashershield: ELF: not
found
/usr/local/bin/flashershield: 2: /usr/local/bin/flashershield: �: not
found
/usr/local/bin/flashershield: 3: /usr/local/bin/flashershield: �: not
found
/usr/local/bin/flashershield: 4: /usr/local/bin/flashershield: �j�j��:
not found
/usr/local/bin/flashershield: 5: /usr/local/bin/flashershield: ��: not
found
/usr/local/bin/flashershield: 6: /usr/local/bin/flashershield: Syntax
error: ")" unexpected
Wenn ich mich recht erinnere, war es bei beiden 19.3ern gleich nach
dem installieren einmal möglich das Fenster mit flashershield zu
öffnen. Trotzdem bin ich Ralph für die Programmsammlung dankbar,
weil es so oder so doch hilfreich ist.
Zur Hardware hier noch:
Damit ich meinen bisherigen Parallelport-Programmer, bzw. die Leitungen
für die In-System-Programmierung an einem Projekt
nicht ändern musste, habe ich einfach
die 4 Steuerleitungen vom Arduino auf eine 25pol.-Sub-D-Buchse gelegt
und den Strobe-Pin auf Gnd, und natürlich Gnd und Gnd verbunden.
die Hardware programmerseitig ist hier beschrieben
http://www.lancos.com/e2p/betterSTK200.gif
die Buchsenbelegung allerdings wie für den ISP-Programmer
https://www.windows7download.com/win7-isp-programmer/tzwqylih.html
Das soll nur verdeutlichen, dass es auch mit dem Treiber und Abblock-
kondensatoren geht. Bei einem neuen Projekt will ich dann auch die
direkte Verbindung von Arduino und MC versuchen.
Als nächstes werde ich wohl das Mint 21 durch ein anderes Linux
ersetzen und als Dankeschön gibt's auch noch ein Foto.
Gruß, Hans
Habe gerade auf dem Rechner mit Mint21 und GPT - EFI Festplatte
das ältere 19.3er Mint installiert und auch jetzt ist in /dev
wieder kein ttyUSB0.
Will aber hier diesen Thread nicht noch mehr mit anderen
Themen vermüllen.