kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




16.11.2011 - Intermezzo: Verwendung der seriellen Schnittstelle unter Linux (Debian/Knoppix)

(EN google-translate)

(PL google-translate)

Ersatz für das Hyperterminal von Windows

Ein einfaches Programm, das als Ersatz für das Hyperterminal dienen kann, ist gtkterm. Es kann als Debian-Paket vom Debian Repository heruntergelanden werden und unter Knoppix installiert werden.

Download von gtkterm_0.99.5-1+b2_i386.deb: http://packages.debian.org/squeeze/i386/gtkterm/download

Die Installation des Zusatzpaketes erfolgt mit Hilfe des Befehls dpkg.

Übung 1

Ziel: Mikrocontroller-Programmentwurf und Flashen, sowie Test der seriellen Schnittstelle unter Linux.

  • Sollte WINAVR und AVR-Studio noch nicht unter Wine / Knoppix installiert sein, siehe /mnt-system/fhb_knoppix/knoppix_zusatzpakete/windows_programme/avr
  • Die Installation (erst WINAVR, dann AVR-Studio) erfolgt unter Systemwerkzeuge -> Wine Uninstaller !
  • Laden Sie das Debian-Paket von gtkterm herunter und installieren es.
  • Gehen Sie dazu in das Downloadverzeichnis über ein root-Terminal und starten Sie die Installation mit:
  • sudo dpkg --root / -i gtkterm_0.99.5-1+b2_i386.deb;
  • Listen Sie die möglichen Optionen mit gtkterm -h auf.
  • Verbinden Sie ein Mikrocontrollerboard über die serielle Schnittstelle und verwenden Sie auf diesem ein Minimal-Programm, das seriell Daten sendet:
#include<avr/io.h>

//Definition von Taktfrequenz und Bausrate als Konstanten
#define TAKTFREQUENZ 9216000
#define BAUDRATE 115200


int main()
{
    long pause;
    //Aktivieren der RS232-Schnittstelle des Mikrocontrollers:
    
    //Merken des in UBRR zu speichernden Wertes.
    unsigned int baudregister = TAKTFREQUENZ/8/BAUDRATE-1;

	//setzen der Baudrate
	UBRRH = (unsigned char) (baudregister>>8); //Setzen des HIGH-Bytes des Baudraten-Registers
	UBRRL = (unsigned char)  baudregister;     //Setzen des LOW -Bytes des Baudraten-Registers
	
	//Einschalten des Senders und des Empfängers
	UCSRB = (1<<TXEN) | (1<<RXEN);
		        
	//Setzen des Nachrichtenformats: 8 Datenbits, 1 Stopbits
	UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);
    UCSRA = (1<<U2X);

    //Es soll wiederholt von 0 bis 255 durchgezählt werden und
    //der aktuelle Wert im Hyperterminal zu sehen sein.

    while(1)
    {

        while( !(UCSRA & (1<<UDRE)) ); //Warten bis der Uebertragungspuffer leer ist
        UDR = 'A';                    //Daten in den Puffer schreiben und übertragen

        for(pause=0;pause<500000;pause++)
		    DDRC=0b00000000;
    }
}

Code 0-1: Minimalprogramm, das an den PC seriell Daten sendet.

Zu beachten bei Verwendung der AVR-Studio-Version über Linux (Wine)

  • Als Simulator AVRDragon verwenden. Verwendung des Standard-Simulators führt zum Absturz der Software.
  • Nachträgliche Überprüfung der Projekt-Optionen vornehmen: Verzicht auf das Erstellen eines Map-Files und eines List-Files.
  • Pfad, in dem das HEX-File zu finden ist: /home/knoppix/.wine/drive_c/...
  • Alternative:
  • Verwendung und Modifikation eines bestehenden Projektes.
  • Beispielsweise das folgende:
rs232_senden_kurz.zip Beispielprojekt zur Verwendung in AVR-Studio unter Wine.

Übertragung einer HEX-Datei unter Linux mit dem AVRISPmkII unter Verwendung von avrdude (Beispiele):

  • Konfiguration auslesen: avrdude -c avrispmkII -p m32 -P usb -v
  • Flashen: avrdude -c avrispmkII -p m32 -P usb -U flash:w:/mnt-system/Z_Referenzen/RS232/rs232_senden_kurz/default/rs232_senden.hex:a

Start von gtkterm mit den notwendigen Optionen:

  • gtkterm --bits 8 --speed 115200 --port /dev/ttyS0 --echo
Übung 2

Ziel: Verwendung von Java für die serielle Datenübertragung unter Linux.

  • Passen Sie die von javacomm herausgegebenen Programme SimpleRead und SimpleWrite an (Übertragungsrate etc.).
  • Setzen Sie eine beliebige Testanordnung um, die den Datenaustausch zwischen PC und Mikrocontroller (beide Richtungen) überprüft.
Simple.zip - Von javacomm herausgegebene einfache Testbeispiele.
Übung 3

Ziel: Verwendung eines USB-Seriell-Umsetzers statt der vorhandenen COM-Schnittstelle.

Immer weniger PCs und Notebooks besitzen eine COM-Schnittstelle. Jedoch könnten alternativ auch USB nach Seriell-Umsetzer verwendet werden.

  • Die Standard-COM-Schnittstelle ist unter Linux durch /dev/ttyS0 repräsentiert.
  • Schliessen Sie einen USB nach Seriell-Umsetzer an und verwenden Sie diesen für die Anordnung aus Übung2.
Übung 4

Ziel: Verwendung eines einfachen ISP-Programmierers über die serielle Schnittstelle.

  • Auf der Homepage von Ponyprog wird ein serieller Programmierer dargestellt.
  • Bilden Sie diesen auf einem Steckbrett nach und testen ihn mit avrdude (s. Optionen) und alternativ mit Ponyprog für Linux.
http://s-huehn.de/elektronik/avr-prog/avr-prog-alt.htm - Vereinfachter serieller Programmierer von Scott-Falk Hühn.
http://www.lancos.com/prog.html - Ponyprog Homepage
http://www.ladyada.net/learn/avr/avrdude.html - Tutorial zu AVRdude
Zusatz-Übung 5

Ziel: Kompilieren von AVR-Mikrocontrollern unter Linux (ohne Wine) über WINAVR für Linux / Crosscompiler?

http://www.home.unix-ag.org/tjabo/avr/artikel07.html - Hinweise zum AVR-Kompilieren unter LINUX
http://de.wikipedia.org/wiki/Atmel_AVR - Kompilerübersicht
http://www.debian.org/distrib/packages - Suchfenster für Debian Packages, Passende Distribution für KNOPPIX 6.7: squeeze
http://www.rn-wissen.de/index.php/Avr-gcc - Anleitung zur Benutzung des gcc-avr
  • Benötigte Pakete (in Installationsreihenfolge samt Installationsbefehl):
  • sudo dpkg --root / -i binutils-avr_2.20.1-1_i386.deb;
  • sudo dpkg --root / -i gcc-avr_4.3.5-1_i386.deb;
  • sudo dpkg --root / -i avr-libc_1.6.8-2_all.deb;
  • Kompilieren zu .elf-Datei:
  • avr-gcc -O2 -mmcu=atmega32 rs232_senden.c -o rs232_senden.elf
  • Umwandlung zu .hex-Datei:
  • avr-objcopy -O ihex -j .text -j .data rs232_senden.elf rs232_senden.hex
Zusatz-Übung 6

Ziel: Steuerung des Kompilierungs- und Flashvorgangs mit Java über Native-Methoden.

Zusatz-Übung 7

Ziel: Entwurf eines Kombi-Seriell-Tools, das es erlaubt sowohl serielle Daten zwischen Mikrocontroller und PC auszutauschen, als auch den Mikrocontroller über die serielle Schnittstelle zu flashen.