VirtualBox - stty Problem

Hallo allerseits,
ich habe eine Virtualbox {Host: Windows10, Guest: UBuntu 16.4 LTS) eingerichtet. Nun habe ich ein Programm für Ubuntu, dass wohl einen USB-Port überwacht (ttyUSB0). Dessen Inhalt habe ich hier mal im Code:

monitor.sh
Code:
#!/bin/sh
DEVICE=/dev/ttyUSB0

stty -F $DEVICE raw icanon eof \^d 115200$1 
write $2 0x8000000 >/dev/null 2>&1
cat < $DEVICE


Das Gerät, welches überwacht werden soll hat folgende Informationen per lsusb:
Code:
BUS 001 Device 003: ID 0483:3748 ...

Gucke ich mir per ls /dev/tty [tab][tab] alle Elemente an, die mit "tty" beginnen, finde ich dort kein ttyUSB*. Womit kann ich nun dieses Gerät ansteuern?

(Vorhanden sind tty, tty0 bis tty63, ttyS0 bis 31 und ttyprintk)

Edit:
Ich habe mir mal das Programm "Kompare" installiert, ls /dev mit und ohne dem STM-Board connected in Dateien geschrieben und verglichen. Ist das Board connected ist "stlinkv2_2" zusätzlich vorhanden.

Ändere ich "ttyUSB0" zu diesen Ordner bekomme ich einen Error
Code:
stty: /dev/stlinkv2_2: Vorgang nicht zulässig.


Edit2::
über
Code:
dmsgr
wird angezeigt, dass das Gerät gefunden und connected wird. Daher habe ich mal die Regel in "/etc/udev/rules.d/" gesucht, und gesehen, dass das Gerät tatsächlich als "stlinkv2_2" hinterlegt wird. Daher ist mein Problem beim Ausführen der monitor.sh nicht bei USB-Port zu suchen, sondern in der monitor.sh und der Zeile zu "stty". Daher nenne ich den Thread mal um.
Angezeigt wird übrigens:
Code:
shalec@shalec-VB:~/share/FourQlib-master/FourQ_ARM$ sudo ./tests_Cortex-M4/monitor.sh

stty: /dev/stlinkv2_2: Vorgang nicht zulässig

@�H7	'�2	����@@�
 
Zuletzt bearbeitet:
Wenn es ein tty* sein soll, muss auch das passende USB-Serial-Modul geladen sein. Sonst hast du nämlich kein TTY. Ist das der Fall? Wenn ja, dann solltest du mit dem Skript aus usb - command to determine ports of a device (like /dev/ttyUSB0) - Unix & Linux Stack Exchange das passende USB-Device dafür ermitteln können. Das muss nicht zwingend ttyUSBX heissen. Handys als Modem landen z.B. dort als ttyACMX u.ä..
 
Es handelt sich um einem Microcontroller, der auch als solcher erkannt und mit stlink2v_2 gelistet ist.

Vermutlich verstehe ich was nicht vollständig korrekt. Bislang dachte ich, dass ttyUSB* nur als Synonym funktioniert, oder werden dafür spezielle Protokolle verwendet, die das Überwachen zugänglich machen?

Ich habe vom Git von Patrick Longa die Masterbranch mit FourQ für ARM geladen und alles soweit ohne Fehler und Warnungen compiliert. Nun wollte ich gerne die vorgefertigten Tests ausführen, was wohl unter Windows nicht möglich ist? Daher hab ich eine virtualbox mit Ubuntu eingerichtet, alles nachinstalliert und einen Sharedordner eingerichtet. Die monitor.sh soll die Tests, die auf dem µC ausgeführt werden, im Terminal wiedergeben können.

Da kommt mir eine Idee einfach einen Debugger zu nehmen. Ich konnte mir den monitor.sh code bereits recht weit aufschlüsseln, aber für \^d.. habe ich nichts gefunden. Welche Bedeutung hat das?

Ich habe es mal noch ein wenig ausgetestet und alles auf die folgende Eingabe reduzieren können:
Code:
$ stty -F /dev/stlinkv2_2

stty: /dev/stlinkv2_2: Vorgang nicht zulässig
 
Zuletzt bearbeitet:
Vermutlich verstehe ich was nicht vollständig korrekt. Bislang dachte ich, dass ttyUSB* nur als Synonym funktioniert, oder werden dafür spezielle Protokolle verwendet, die das Überwachen zugänglich machen?

In den meisten Fällen ist es kein Synonym sondern schlicht ein anderes (serielles) Interface. Einzelne Devices können durchaus mit verschiedenen Device-Handlern im System eingehängt sein, je nachdem welche Treiber dafür geladen sind. So kann z.B. ein Handy einerseits als /dev/sdX im System existieren und darüber als Disk angesprochen werden, andererseits aber auch als /dev/ttyACM0 und darüber dann die Modem-Funktionalitäten bereitstellen, die ja üblicherweise über serielle Ports bereitgestellt werden. Die "Protokolle", mit denen man die beiden Devices anspricht, sind natürlich grundlegend verschieden. Daher solltest du mal prüfen, ob der Serial-Driver für dein Board geladen wurde.
 
Ok, verstehe.

Ich habe mal das verlinkte Skript ausgeführt, das zeigt mir nur an, dass das Gerät am Bus 1 das dritte USB ist.

Offenbar muss ich den "STM32 Virtual COM Port Driver" (STSW-STM32102) nachinstallieren. Diesen gibt es aber nur für Windows (von ST.de) soweit ich das sehe.

Hm.. ich habe mir die Anleitung für die monitor.sh nochmal durchgelesen.. dort wird angegeben, wie ich das Board mit einem USB-TTL Converter verbinden soll. ich muss sagen, dass ich nicht wusste, was ein USB-TTL Converter ist und dass ich dachte, dass mein Board sowas onboard hätte.. (wegen STLink..)
 
Hey,
ich habe jetzt so einen TTL Adapter
(Prolific PL-2303HXA),​
welcher egtl. unter Windows 8 und höher nicht unterstützt wird. Mit einem älteren Treiber habe ich dieses Problem aber beheben können. Nun wird er im Gerätemanager nicht mehr als Fehlerhaft angezeigt und unter Ubuntu als ttyUSB0 hinterlegt.

Nun kann ich die monitor.sh ausführen. Es tauchen keine Fehler auf. Aber auch absolut keine Ausgaben. Disconnecte ich den Prolific, wird die monitor.sh beendet. Nun könnte es sein, dass ich die Dinger falsch zusammengesteckt habe. Laut Readme soll

VDD > VDD
GND > GND
RX > PA2
TX > PA3

da der Prolific über keinen VDD verfügt, habe ich es an VCC angeschlossen - leider ohne Wissen, wofür DD und CC stehen.

Spielt es irgend eine Rolle, welchen GND-Pin ich verwende? Das Board
STM32F429ZI-DISCO (anstelle STM32F407VGT6-DISCO)​
verfügt über ca. 4-5 davon. Bei STM ist eine Aufwärtscompatibilität gewährleistet.

Ich weiß leider nicht, wie spezifisch meine Fragen sind, und ob sich diese überhaupt so ohne weiteres beantworten lassen, aber ich hoffe das beste :)

Nach [1] macht es keinen großen Unterschied zwischen VCC und VDD?

Edit: Es liegt vermutlich an der Verkabelung. Der STM32F407VGT (ist auf einem anderen Board verbaut) schafft die Tests mit dem Teil tadellos. Jetzt muss ich nur noch die richtigen Verbindungen rausfinden.. dazu fand ich zwar [2], aber die Jumper-Methode scheint mir fragwürdig.

[1] IC power-supply pin - Wikipedia

[2] Program STM32F4 with UART - STM32F4 Discovery
 
Zuletzt bearbeitet:
Zurück
Oben