Ah ok.
Nur die nächste Frage ist, wie stelle ich das ab das das Raspberry Pi die komplette Bootsequenz über UART ausgibt?
Ah ok.
Nur die nächste Frage ist, wie stelle ich das ab das das Raspberry Pi die komplette Bootsequenz über UART ausgibt?
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Ja, das steht in dem von mir verlinkten Post.
Hinweis:
Ich nutze die UART auf der Stiftleiste. Für einen USB-Seriell Adapter sind folgende Schritte nicht notwendig!
Damit die UART frei ist, müssen 2 Dateien angepasst werden. Achtung: Vorher sichern. Wenn was schief geht, kann ich die SD-Karte in meinem NAS mounten und die Sicherungen zurückspielen...
/boot/cmdline.txt:
/ect/inittab: Folgende Zeile auskommentierenCode:dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
zuCode:T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Und natürlich auch alle anderen Zeilen, welche auf ttyAMA0 zugreifen wollen.Code:#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Super
Ich schau mal ob ich es morgen hin bekomme![]()
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
mmh seitdem ich das gemacht habe, wird vor eine Ausgabe im Terminal immer sowas gesetzt:
Bild hier
Ich habe das schon zurück verfolgt bis zur Konsoleneingabe. Die letzten Ausgaben stammen von dieser Eingabe:
Ich habe mal mit Hex-Term drüber geschaut. Das ist ein F8 was da zuviel gesendet wird. Aber in meinen Codes finde ich nichts in der Richtung.Code:echo >> /dev/ttyAMA0
UART.c
UART.phpCode:// Compile with: GCC /Programme/UART.c -o /Programme/UART //#include <iostream> //using namespace std; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #define BAUDRATE B115200 // Baudrate char MODEMDEVICE[]= "/dev/ttyAMA0"; // Device zum Senden struct termios newtio={}; // Variable für "termios.h" int fd; // File descriptor void Send_UART(char *c) // Gibt ein einzelnes Zeichen über UART (als fd geöffnet) aus. { int res; char LineEnd[] = "\r\n"; res = write(fd, c, strlen(c)); write(fd, LineEnd, 2); } int UART_Init() // Schnittstelle öffnen und parametrieren { // O_RDONLY, O_WRONLY or O_RDWR - // O_NDELAY (geht weiter, wenn keine Daten da sind und gibt "-1" zurueck) // man 2 open fuer mehr Infos - see "man 2 open" for more info // O_NOCTTY No ControllTeleType fd = open(MODEMDEVICE, O_WRONLY | O_NOCTTY); if (fd < 0) { printf("Fehler beim öffnen von %s\n", MODEMDEVICE); exit(-1); } memset(&newtio, 0, sizeof(newtio)); newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD; // Setzt die neuen Porteinstellungen newtio.c_iflag = IGNPAR; newtio.c_oflag = 0; newtio.c_lflag = 0; /* set input mode (non-canonical, no echo, ...) */ newtio.c_cc[VTIME] = 0; /* inter-character timer unused */ newtio.c_cc[VMIN] = 1; /* blocking read until 1 chars received */ tcflush(fd, TCIFLUSH); tcsetattr(fd, TCSANOW, &newtio); return fd; } int main(int argc, char** argv) // Programmstart { // Variablen für das Hauptprogramm char LineEnd[] = "\r\n"; int res; UART_Init(); // Schnittstelle öffnen und parametrieren if (argc >= 1) { res = write(fd, argv[1], strlen(argv[1])); write(fd, LineEnd, 2); } printf("Text empfangen\n"); // Empfangsbestätigung senden //Send_UART("Hallo"); close (fd); return 0; }
Weißt du evtl. was das sein könnte?Code:<html> <head> <title> Raspberry Pi Webserver </title> </head> <h1> <font color="red"> Raspberry Pi Webserver </font> </h1> <body> <div id="nav"><a href="index.php">Hauptseite</a> <h2> Raspberry Pi UART </h2> <?php if (isset($_POST["Eingabe"])) { $befehl="sudo /Programme/UART ".$_POST["Eingabe"]; $output = shell_exec($befehl); }; echo "<form method='post' action='UART.php'>"; echo "<input type='text' maxlength='40' size='40' id='1' name='Eingabe' value='Ich'>"; echo "<input type='submit' value='Senden'>"; echo "<br>"; echo "<br>"; echo "Antwort:"; echo "<br>"; echo "$output"; echo "</form>"; ?> </div> </body> </html>
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Lass den UART mal offen. Meiner sendet auch immer ein Zeichen beim Öffnen (oder Schließen? weiß nicht mehr so genau) des ttyAMA0. Lasse ich ihn offen, kommt nur das, was auch gesendet werden soll. Müsste ich aber auch schon irgendwo erwähnt haben. Ich lasse ihn geöffnet, indem mein Empfangen Programm ständig lauscht.
Da das gesendete Zeichen abhängig von der Baudrate ist, gehe ich von einem "ungewollten" Bitwackeln beim Öffnen der Schnittstelle aus.
Bei einem USB-Seriell Wandler habe ich diese Wirkung übrigens nicht.
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Ich verwende auch einen USB-Seriell Wandler.
Mit dem offen lassen probiere ich mal. Aber anscheinend habe ich das Problem beim empfangen nicht, da nichts dergleichen in der Datei steht.
Kann ich auch zwei C-Programme gleichzeitig laufen lassen?
Weil dann wollte ich das Prinzip übernehmen. Dann habe ich ein C-Programm zum Senden/Auswerten und eins zum Empfangen.
Geändert von Kampi (18.11.2012 um 12:28 Uhr)
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Also ich kann den Fehler nun reproduzieren.
Jedesmal wenn ich die inittab und die cmdline.txt umändere taucht der Fehler auf.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Lesezeichen