Und wieder einmal bin ich blutiger Anfäger (und wollte das nicht sein):
Zur Erweiterung meines "Horizonts" habe ich mir ein Arduino r4 Wifi
Board (China-Clone, siehe Bild im Anhang) mit Renesas MCU zugelegt.
Grundsätzlich will ich das irgendwann mit arm-none-eabi-gcc ohne Arduino
programmieren, aber zum Testen habe ich jetzt doch Arduino verwendet und
natürlich (wie bei mir bei neuen Dingen immer) geht das nicht so recht.
Das Blinkprogramm bekomme ich natürlich in Arduino übersetzt, allerdings
bin ich nicht in der Lage ein Programm hochzuladen, weder aus der
Arduino IDE heraus, noch in der Konsole.
Voraussetzungen:
Slackware Linux 14.2
Arduino IDE 1.8.13
bossac: Basic Open Source SAM-BA Application (BOSSA) Version
1.9.1-arduino2-3-g37600d1
Erste vermutete Fehlerstelle war, dass ich für dieses Board als Benutzer
keine Rechte auf die Schnittstelle habe, deshalb habe ich das ganze als
root versucht mit folgender Fehlermeldung mit Arduino:
1
Der Sketch verwendet 51576 Bytes (19%) des Programmspeicherplatzes. Das Maximum sind 262144 Bytes.
2
Globale Variablen verwenden 6744 Bytes (20%) des dynamischen Speichers, 26024 Bytes für lokale Variablen verbleiben. Das Maximum sind 32768 Bytes.
3
Erzwinge Reset durch öffnen/schließen mit 1200 bps auf dem Port /dev/ttyACM0
Bus 002 Device 003: ID 05e3:0607 Genesys Logic, Inc. Logitech G110 Hub
2
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
3
Bus 008 Device 002: ID 413c:2106 Dell Computer Corp. Dell QuietKey Keyboard
4
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
5
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
6
Bus 006 Device 009: ID 2341:1002 Arduino SA
7
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
8
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
9
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
10
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
11
Bus 003 Device 003: ID 046a:000c Cherry GmbH
12
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
und zeigt mir an, dass die r4-Platine unter ID 2341:1002 anwesend ist.
----------------------------------
Wie bekomme ich das erste mal ein Binary auf diese Platine (im Netz hab
ich ausser der Empfehlung die IDE 2 zu installieren nichts weiteres
gefunden)?
... by the way: Ich bin immer noch etwas "verwirrt", dass Arduino die
Uploadmethode mittels bossac wählt, ich dachte immer, das ist für die
Atmel SAMD Controller!
No device found on ttyACM0
Mal in dev schauen, welches Device nach Anstecken des Adapters
vorhanden ist. Da hatte ich auch schon mal andere Devices gehabt.
Ralph S. schrieb:> und zeigt mir an, dass die r4-Platine unter ID 2341:1002 anwesend ist.
… es zeigt dir allerdings nicht, ob sie tatsächlich ttyACM0 bekommen hat
– das würde ein Blick ins Journal zum Zeitpunkt des Anschließens zeigen.
Was auch denkbar wäre, wenn ttyACM0 tatsächlich existiert: deinem Clone
fehlt der Code, der die Schnittstelle bedient. Bei den „klassischen”
Arduinos war’s der Bootloader, und bei denen fehlte der bei den billigen
Nachbauten auch gerne mal. Dort war’s aber kein Problem, den via ISP
draufzutun – wie es beim R4 aussieht, weiß ich allerdings nicht im
Detail.
Wie gesagt: ich bin für r4 Platine und Renesas ein Anfänger. Wenn ich
das nach Recherche im Internet richtig lese, dann unterscheiden sich die
Ausführungen Wifi und Minima nicht nur durch den zusätzlichen
Espressif-Chip für das Wifi.
Korrigiert mich wenn ich falsch liege: Bei der Wifi-Version (die ich
habe) nimmt der Espressif-Chip das Flashen des Renesas Controllers vor.
Welches Flashprogramm ist hier von nöten.
J. S. schrieb:> Reset Button zweimal drücken, die Schnittstelle konnte laut Meldungen> doch schon geöffnet werden.
Macht man das, scheint ein Loaderprogramm im Espressif zu laufen, denn
es wird nicht das (noch vorhandene) erste Programm auf der Platine
ausgeführt, sondern es blendet die Onboard-Led auf und ab, was für mich
ein Zeichen dafür ist, dass ein Loaderprogramm auf einen Upload wartet.
Jack V. schrieb:> Was auch denkbar wäre, wenn ttyACM0 tatsächlich existiert:
Dieser Anschluss existiert schon alleine deshalb, weil mir unter dem
Punkt "Boardinformationen holen" folgendes anzeigt:
BN: Arduino UNO R4 WiFi
VID: 2341
PID: 1002
SN: F412FA765FDC
Jack V. schrieb:> Bei den „klassischen”> Arduinos war’s der Bootloader, und bei denen fehlte der bei den billigen> Nachbauten auch gerne mal. Dort war’s aber kein Problem, den via ISP> draufzutun – wie es beim R4 aussieht, weiß ich allerdings nicht im> Detail.
Na ja, ein Renesas ARM-Controller ist etwas komplett anderes als ein
8-Bit AVR und wie gesagt: Ich werkel zwar auch mit NXP und natürlich mit
STM32, aber Renesas hatte ich noch nie in der Hand.
Was ich zur Verfügung habe an Hardware ist ein Segger j-link (welche
Version weiß ich jetzt aus dem Handgelenk nicht, aber der tut seinen
Dienst), ein ST-Link (original und clone) und - natürlich für ARM nicht
erheblich - STK500 und USB-asp.
Natürlich kann ich auch etwas basteln wenn jemand eine gute Anleitung
hierfür hat.
Hallo Ralph,
hast Du wie empfohlen
journalctl -f gemacht und den Output beim anstecken des Boards
betrachtet und nach der Schnittstelle gesucht.
Eventuell muss Dein Board über einen Jumper oder ein Button
in den Flash-Mode versetzt werden. D.h. auf die Kommandos
vom PC horchen und sie ausführen. Dazu ist ja der Bootloader
entweder schon im Flash vorhanden oder bereits hart in der HW
des MC auf dem Silizium integriert, wenn ein Flashen über
die Serielle (mit oder ohne USB Anbindung) möglich sein soll.
Eventuell hockt dir auch eine anderer Treibr aus dem Linux-OS
auf Deinem Seriellen Port und Dein Flash-Prog sieht zwar die
Schnittstelle, kann sie aber nicht allocieren, weil ein anderes
Prog. darauf zugreift. (Oft ein Moden-Treiber aus alten Zeiten!).
Deaktivierung eines solchen Treibers musst Du via Googel erfragen.
Markus
Ralph S. schrieb:> Jack V. schrieb:>> Was auch denkbar wäre, wenn ttyACM0 tatsächlich existiert:>> Dieser Anschluss existiert schon alleine deshalb, weil mir unter dem> Punkt "Boardinformationen holen" folgendes anzeigt:>> BN: Arduino UNO R4 WiFi
Diese beiden Sachen haben erstmal nicht zuviel miteinander zu tun. Auf
das Journal zur Klärung wurdest du ja mittlerweile mehrfach hingewiesen.
Kenne mich mit Slackware nicht aus. Dem Hinweis von oben würde ich
nachgehen. Ich musste (Mate Mint - Ubuntu - Debian) das Paket britty
(einTreiber für Braille Zeilen) deinstallieren, damit die Verbindung zum
Arduino geklappt hat.
Wahrscheinlich ist brltty schuld.
Das ist ein Paket, das Braille-Geräte unterstützen soll. Es ist
natürlich lobenswert, dass auch für diese Nischenanwendung das System
direkt konfiguriert ist (nachträglich konfigurieren ist leider für die
Leute, die darauf angewiesen sind, nahezu unmöglich), leider sind
zumindest manche Hersteller dieser Geräte nicht in der Lage, sich eine
USB-Device-ID zu besorgen und kapern so manche USB-Seriell-Wandler. Ich
finde das wahnsinnig ärgerlich.
Hier Informationen dazu, wie man brltty abschaltet:
https://www.reddit.com/r/pop_os/comments/uf54bi/how_to_remove_or_disable_brltty/
Es kann sich lohnen, zunächst über lsusb zu schauen, ob der
USB-Seriell-Wandler überhaupt erkannt wurde.
Sollte er erkannt worden sein, finden sich dann ggf. im journal
Statusmeldungen von brltty, dann weiß man, dass das Problem an brltty
liegt. Wahrscheinlich lässt sich brltty aber auch einfach auf Verdacht
abschalten, das braucht ja nahezu niemand.
Jack V. schrieb:> Diese beiden Sachen haben erstmal nicht zuviel miteinander zu tun. Auf> das Journal zur Klärung wurdest du ja mittlerweile mehrfach hingewiesen.
Ich "liebe" solche Aussagen, weil ich nach der ersten Erwähnung von
"journalctl" überhaupt nichts gepostet habe. Hierzu ist zu sagen: Unter
Slackware gibt es kein journalctl!
So, neu eingetragen in /dev sind ein Verzeichnis "serial" mit weiteren
Unterordnern "by-path" und "by-id", in diesen sind symbolische Links auf
/dev/ttyACM0 vorhanden.
Desweiteren wird ein Device namens "hidraw2" angelegt und eben auch
ttyACM0.
Mehr ist da nicht zu sehen.
F. schrieb:> Wahrscheinlich ist brltty schuld.
Dass brltty daran schuld sein könnte wäre möglich (das hatte ich einmal
mit einem Ubuntu-System und da ging dann ein serieller Upload auf einen
STM32 nicht).
Norbert schrieb:> Ein etwaig installierter ModemManager wäre ein weiterer zu> deinstallierender Problemkandidat.
Modemtreiber habe ich alle deaktiviert !
-----------------------------------
Wie gesagt, ich bin mir noch nicht einmal sicher, ob zum einen von
Arduino das korrekte Uploadprogramm gewählt wird (wie oben geschrieben
habe ich immer angenommen, dass bossac für SAMD von Atmel ist) und ich
eher vermutet hätte, dass das richtige Uploadprogramm eben eher DFU-Util
ist. Zum anderen bin ich mir auch nicht 100% sicher ob da überhaupt ein
Bootloaderprogramm installiert ist.
Markus W. schrieb:> Eventuell muss Dein Board über einen Jumper oder ein Button> in den Flash-Mode versetzt werden.
Das Board hat keine Jumper, sondern einzig und alleine eine
Reset-Button. Der soll wohl wie
J. S. schrieb:> Reset Button zweimal drücken, die Schnittstelle konnte laut Meldungen> doch schon geöffnet werden.
schrieb, zweimla gedrückt werden (danach blendet dann die Userled
langsam auf und ab).
Ich werde die Tage dann wohl doch einmal das Board an einem
Windowsrechner ausprobieren ob es dann dort klappt!
Ralph S. schrieb:> Ich "liebe" solche Aussagen, weil ich nach der ersten Erwähnung von> "journalctl" überhaupt nichts gepostet habe. Hierzu ist zu sagen: Unter> Slackware gibt es kein journalctl!
a) natürlich kannst du auch unter Slackware systemd/journald haben.
b) natürlich könntest du auch erkannt haben, dass es um das zentrale
Systemlog geht, und daher in dem deines Systems nachgeschaut haben. Oder
einfach ›dmesg‹ hergenommen haben, denn die entsprechenden Infos sind
auch dort zu finden.
Geht aber alles natürlich nur, wenn man den Hauch einer Ahnung hat, was
man da macht. Wenn nicht, muss man halt die anranzen, die einem zu
helfen versuchen, während man es nicht auf die Reihe bekommt. Zumindest
das gelingt dir offenbar ganz gut – da wünsche ich dann auch noch viel
Spaß bei o/
Jack V. schrieb:> Systemlog geht, und daher in dem deines Systems nachgeschaut haben. Oder> einfach ›dmesg‹ hergenommen haben, denn die entsprechenden Infos sind> auch dort zu finden.
- Ich habe mir >dmesg> hergenommen
- Infos habe ich dort auch gefunden
- ich habe mir /systemd intalliert (war nicht vorhanden. Hier muß ich
zugeben, dass ich das bisher tatsächlich nicht benutzt habe)
Jack V. schrieb:> Geht aber alles natürlich nur, wenn man den Hauch einer Ahnung hat, was> man da macht.
Wie war das noch einmal mit dem "anranzen" (dieser Text fasse ich mal
als Beleidigung auf) und wer hat damit angefangen? Ich sagte, dass ich
es "liebe" wenn man schreibt: "wie dir mehrmals mitgeteilt wurde". Es
wurde einmal geschrieben und beim zweitenmal kam dann der "ranzer" von
dir. Wie auch immer, es ist mittlerweile egal und obsolet.
Jack V. schrieb:> die einem zu> helfen versuchen, während man es nicht auf die Reihe bekommt.
Wie all dem auch sei: ich habe es nun doch auch die Reihe bekommen.
Meine "Lösung" ist vllt. nicht so wirklich elegant, aber hat
funktioniert:
Nachdem ich in der Virtualbox nun ein Windows installiert habe und von
dort aus dann das Arduino gestartet habe und das da sofort funktioniert
hat. Habe ich von dort aus ein Firmware-Update gemacht. Danach
funktioniert das Board per Upload nun auch unter Linux (mit der
Upload-Software bossac).
Vielen Dank an die, die helfen wollten (auch an Jack V.)
Das bossac Tool ist Open Source und ein Ersatz für das Atmel Samba:
http://www.shumatech.com/web/products/bossa
Da hat Arduino wohl einen kompatiblen Bootloader gebaut um das zu
nutzen, interessant. Vor allem das die ständig neue Baustellen
aufmachen…
Ralph S. schrieb:> So, neu eingetragen in /dev sind ein Verzeichnis "serial" mit weiteren> Unterordnern "by-path" und "by-id", in diesen sind symbolische Links auf> /dev/ttyACM0 vorhanden.>> Desweiteren wird ein Device namens "hidraw2" angelegt und eben auch> ttyACM0.>> Mehr ist da nicht zu sehen.
Es wäre einfach, mal zu überprüfen, ob sich die Sachen verändern, wenn
du dein USB-Gerät ansteckst. Ändert sich das nicht, kann das nicht die
Schnittstelle zu deinem Arduino sein.
Das ist eigentlich so ein Standard-Vorgehen, dass man sich mal den
Unterschied zwischen Gerät ausgesteckt und Gerät eingesteckt anschaut.
> F. schrieb:>> Wahrscheinlich ist brltty schuld.>> Dass brltty daran schuld sein könnte wäre möglich (das hatte ich einmal> mit einem Ubuntu-System und da ging dann ein serieller Upload auf einen> STM32 nicht).
Überprüft hast du das natürlich nicht, sondern lieber irgendwas total
Umständliches gemacht, damit auch sichergestellt ist, dass du in Zukunft
weiterhin mit diesem Problem zu kämpfen hast:
Ralph S. schrieb:> Nachdem ich in der Virtualbox nun ein Windows installiert habe und von> dort aus dann das Arduino gestartet habe und das da sofort funktioniert> hat. Habe ich von dort aus ein Firmware-Update gemacht. Danach> funktioniert das Board per Upload nun auch unter Linux (mit der> Upload-Software bossac).
Das USB-Gerät wird ja offensichtlich erkannt, also kannst du es auch an
die Virtualbox weiterleiten. Dort wird es dann nicht mehr von brltty
daran gehindert, als normales serielles Gerät aufzutreten und du kannst
dort damit arbeiten.
Anstatt also die Ursache des Problems zu finden und zu beseitigen, hast
du irgendwas gemacht, das das Problem kurzfristig gelöst hat. Wenn das
für dich funktioniert, ist es ja gut, aber wahrscheinlich wirst du mit
dem nächsten Microcontroller-Board, das du anschließt, wieder ähnliche
Probleme haben und dann geht das alles wieder von vorne los.
F. schrieb:> Es wäre einfach, mal zu überprüfen, ob sich die Sachen verändern, wenn> du dein USB-Gerät ansteckst. Ändert sich das nicht, kann das nicht die> Schnittstelle zu deinem Arduino sein.> Das ist eigentlich so ein Standard-Vorgehen, dass man sich mal den> Unterschied zwischen Gerät ausgesteckt und Gerät eingesteckt anschaut.
Genau das habe ich gemacht und oben auch geschrieben, was sich ändert,
wenn das Board angesteckt wird.
F. schrieb:> Dort wird es dann nicht mehr von brltty> daran gehindert, als normales serielles Gerät aufzutreten und du kannst> dort damit arbeiten.
Auch das hatte ich überprüft. Auf meinem Slackware ist braille NICHT im
System vorhanden, weil nicht installiert!
F. schrieb:> Anstatt also die Ursache des Problems zu finden und zu beseitigen, hast> du irgendwas gemacht, das das Problem kurzfristig gelöst hat.
Aha! Was ist denn die Ursache, wenn brltty nicht vorhanden ist, Modem
deinstalliert ist und beim Anstecken des Boards in /dev
- ttyACM0
- symbolische Links
- hidraw2
auftauchen und nicht funktioniert, nach einem Firmware-Update aber doch?
Egal, der Thread kann doch bitte geschlossen werden ( :-) Dortmund hat
gerade gewonnen --- das ist doch eigentlich wichtiger :-) )