Homepage Wiki Forum Buy

Für Anfänger

Aus GNUBLIN

Inhaltsverzeichnis

Im Tutorial Für Anfänger schalten Sie die rote LED auf GNUBLN mal ein und aus, greifen auf einen Digitalen Eingang zu. Desweiteren werden ein paar Befehle vorgestellt, mit dem Sie ihr Linux System erkunden können.


An GNUBLIN Konsole als root anmelden

Um sich mit GNUBLIN verbinden zu können gibt es im wesentlichen zwei Möglichkeiten. Entweder nimmt man den integrierten USB-RS232 Wandler als Konsole für Linux her, oder man baut sich über die USB-Schnittstelle von GNUBLIN eine virtuelle Netzwerkkarte, über die man sich widerum per SSH verbinden kann. Einfacher und praktischer ist aber die Konsoleverbindung über USB.

Nach dem Anmelden als Benutzer root, kann man die meisten Versuche und Beschreibungen hier auf den Seiten durchführen.


... INIT: Entering runlevel: 5 Starting Dropbear SSH server: dropbear. Starting syslogd/klogd: -C64 -m 20 done EDLK (Built by Poky 5.0) 5.0 armv5te ttyS0 armv5te login: root login[558]: root login on `ttyS0'

Digitale Ein-/Ausgänge ansteuern

Unter Linux kann die Peripherie des Prozessors ganz einfach über das Dateisystem angesteuert werden. Im folgenden wird der Zugriff auf die rote LED auf dem Board beschrieben.

Belegung der GPIOs:

GPIO3...........LED1
GPIO11..........X4-2  J5-12
GPIO13..........
GPIO14..........X4-3  J5-11
GPIO15..........X4-4


GPIO3 ist die rote LED. Über sysfs kann man nun die LED ansteuern. Wechseln in das Verzeichnis

cd /sys/class/gpio

GPIO an dem die rote LED auf dem Board hängt aktivieren

root@gnublin:/sys/class/gpio# echo 3 > export


Wechseln in das neue Verzeichnis für die gpio3

root@gnublin:/sys/class/gpio# cd gpio3/

Anzeigen der aktuellen Einstellung des IO-Pins der Datenrichtung

root@gnublin:/sys/class/gpio/gpio3# cat direction

Pin als Ausgang nutzen

root@gnublin:/sys/class/gpio/gpio3# echo out > direction

LED einschalten

root@gnublin:/sys/class/gpio/gpio3# echo 1 > value

LED ausschalten

root@gnublin:/sys/class/gpio/gpio3# echo 0 > value

Trauen Sie sich schon ein kleines Blinkprogramm zu schreiben? Hier gibts Beispiele zu diesem Thema Beispielprogram-GPIO.


Möchte man einen GPIO als Eingang abfragen geht das wie folgt (GPIO 11 an Anschlussklemme):

Am einfachsten klemmt man einen externen Schalter wie folgt an:

Taster-gpio11.jpg

Die Schaltung sieht dabei so aus:

Taster an GPIO11

      VCC 3.3V
         |
        10K
 __T__   |
 o   o---+------> GPIO11 (weiss/blau)
 |
===
GND (blau)
 


root@armv5te:/sys/class/gpio# echo 11 > export

Um den Pin als Eingang nutzen zu können muss man entsprechend die Richtung setzen:

root@gnublin:/sys/class/gpio# cd gpio11/
root@gnublin:/sys/class/gpio/gpio11# echo in > direction

Ausgabe des Wertes (1 = ca. 3.3V, 0 = ca. 0 V bzw. GND) geht einfach in dem man den Inhalt der Datei value mit dem Befehl cat ausgibt.

cat /sys/class/gpio/gpio11/value

So einfach geht das unter Linux.

Analoge Spannungen messen

Adc-poti.png

Am einfachsten kann man mit Shell Kommandos die Analogwerte einlesen. Zunächst muss man den gewünschten Analogeingang GPA1 auswählen, das geht mit

root@armv5te:~# echo "1" > /dev/lpc313x_adc

Danach kann man schon die Analogwerte einlesen mit

root@armv5te:~# cat /dev/lpc313x_adc

Die Ausgabe ist einfach eine Hexzahl, z.B.

0x3b2

Die voreingestellte Auflösung des Wandlers ist 10 Bit. Damit liegen die eingelesenen Werte zwischen 0 und 0x3ff (dezimal 1023). Der Wandler kann auch mit 8- oder 4-Bit Auflösung arbeiten, genaueres kann man dem Treiber entnehmen.

Das GNUBLIN Linux erkunden

Prozesse ansehen mit dem Kommando

root@armv5te:~# ps -efl

Die Ausgabe ist hier (variiert nach Versionsstand und Installation)

F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S root 1 0 0 80 0 - 398 poll_s 03:11 ? 00:00:00 init [5] 1 S root 2 0 0 80 0 - 0 kthrea 03:11 ? 00:00:00 [kthreadd] 1 S root 3 2 0 80 0 - 0 run_ks 03:11 ? 00:00:00 [ksoftirqd/0] 5 S root 4 2 0 -40 - - 0 watchd 03:11 ? 00:00:00 [watchdog/0] 1 S root 5 2 0 80 0 - 0 worker 03:11 ? 00:00:00 [events/0] 1 S root 6 2 0 80 0 - 0 worker 03:11 ? 00:00:00 [khelper] 1 S root 9 2 0 80 0 - 0 async_ 03:11 ? 00:00:00 [async/mgr] 1 S root 99 2 0 80 0 - 0 bdi_sy 03:11 ? 00:00:00 [sync_supers] 1 S root 101 2 0 80 0 - 0 bdi_fo 03:11 ? 00:00:00 [bdi-default] 1 S root 103 2 0 80 0 - 0 worker 03:11 ? 00:00:00 [kblockd/0] 1 S root 108 2 0 80 0 - 0 worker 03:11 ? 00:00:00 [ksuspend_usbd] 1 S root 112 2 0 80 0 - 0 hub_th 03:11 ? 00:00:00 [khubd] 1 S root 120 2 0 80 0 - 0 worker 03:11 ? 00:00:00 [kmmcd] 1 S root 145 2 0 80 0 - 0 watchd 03:11 ? 00:00:00 [khungtaskd] 1 S root 146 2 0 80 0 - 0 kswapd 03:11 ? 00:00:00 [kswapd0] 1 S root 147 2 0 80 0 - 0 worker 03:11 ? 00:00:00 [aio/0] 1 S root 277 2 0 80 0 - 0 mtd_bl 03:11 ? 00:00:00 [mtdblockd] 1 S root 280 2 0 80 0 - 0 worker 03:11 ? 00:00:00 [spi_lpc313x.0] 1 S root 305 2 0 80 0 - 0 mmc_qu 03:11 ? 00:00:00 [mmcqd] 1 S root 323 2 0 80 0 - 0 bdi_wr 03:11 ? 00:00:00 [flush-179:0] 5 S daemon 517 1 0 80 0 - 410 poll_s 03:12 ? 00:00:00 /sbin/portmap 1 S root 546 1 0 80 0 - 548 poll_s 03:12 ? 00:00:00 /usr/sbin/dropbear -r /etc/dropbear/dropbear_rsa_host_key -p 22 4 S root 555 1 0 80 0 - 526 syslog 03:12 ? 00:00:00 /sbin/klogd -n 4 S root 556 1 0 80 0 - 607 wait 03:12 ttyS0 00:00:00 -sh 0 S root 557 1 0 80 0 - 462 n_tty_ 03:12 tty1 00:00:00 /sbin/getty 38400 tty1 4 R root 1427 556 0 80 0 - 615 - 03:20 ttyS0 00:00:00 ps -efl

Gibt man den Befehl

top

ein öffnet sich ein Programm, mit dem man "Live" sehen kann, was auf GNUBLIN alles so passiert. Mit einem kleinem q beendet sich das Programm wieder.


Speicherbelegung prüfen:

 df -h

erzeugt folgende Ausgabe:

/dev/root 934.8M 683.2M 204.1M 77% /
tmpfs 2.7M 20.0K 2.7M 1% /var/volatile
tmpfs 2.7M 0 2.7M 0% /media/ram


Man sieht den freien Platz auf der SD-Karte (/dev/root). Die Paritionen tmpfs dienen verschiedenen Programmen als dynamischer Speicher.

Mit uptime sieht man wie lange ein Linux-System bereits läuft:

root@armv5te:~# uptime
23:34pm up 0:10, 1 user, load average: 0.00, 0.00, 0.00

Und mit cat /proc/cpuinfo erhält man Informationen über den Prozessor:

root@armv5te:~# cat /proc/cpuinfo Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 89.70 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Hardware : NXP EA313X Revision : 0000 Serial : 0000000000000000


Free ist noch ein spannender Befehl, hier sieht man die Auslastung des Arbeitsspeicher, bzw. wieviel dynamischer Speicher auf der SD-Karte im Swap bereich ausgelagert sind:

root@armv5te:~# free total used free shared buffers cached Mem: 5572 5048 524 0 240 2668 -/+ buffers/cache: 2140 3432 Swap: 65528 36 65492

Ein Editor auf GNUBLIN um Programme schreiben zu können

Um ein Programm direkt auf GNUBLIN für GNUBLIN zu schreiben benötigen Sie nur einen Texteditor. Diesen liefert GNUBLIN natürlich gleich mit. Es kann gewählt werden zwischen vi und nano. Dazu im Folgenden mehr.

vi - Einer der klassische Editor aus der UNIX Welt

Vi ist entstanden, als es noch keine Maus und Desktopsysteme gab. Um mit vi arbeiten zu könnnen muss man kurz das Konzept verstanden haben. Vi hat zwei Betriebsarten. Den Insert Modus, das ist der wenn man im Textdokument oder Quelltextdatei arbeiten möchte. Möchte man aber Kommandos wie Datei abspeichern, oder Editor beenden eingeben muss man mit ESC in den Kommandos Modus wechseln.

Der Kommandomodus entspricht sozusagen einer offenen Menüleister einer klassichen grafischen Anwendung. Um die virtuelle Menüleiste wieder zu schliessen um am Dokument weiterarbeiten zu können muss man einfach ein kleines i eingeben. Dies bedeuet, dass der vi wieder in den Eingabemodus (Insert Mode) wechselt.


Datei neu angelegen:

vi test.txt


Um jetzt Inhalte eingeben zu können, muss man einmal ein i drücken. Jetzt kann beliebig Text eingegeben werden. Möchten Sie die Datei jetzt abspeichern, dann drücken Sie: ESC, dann :, dann w, dann ENTER. Jetzt ist die Datei gespeichert.

Um weitere Eingaben tätigen zu können muss man wieder i drücken. Um den Editor zu beenden wechselt man wieder in den Kommandomodus mit ESC. Dort gibt man dann ein : und q (für quit) und ENTER. Der Editor ist wieder beendet.

Kommandos:

  •  :w (Dokument schreiben)
  •  :q (Dokument schliessen)
  •  :x (Dokument schreiben und schliessen)


nano - Der benutzerfreundlicher Editor

Eine Datei kann mit nano wie folgt geöffnet werden:

nano test.txt

Jederzeit eine "Menüleiste" eingeblendet. So kann man beispielsweise mit STRG-O und einem anschließendem Enter eine Datei speichern. nano beenden kann man mit STRG-X. Alle anderen Kommandos sind schnell selbst erkundigt.

Hello World, der Beginn eines jeden Entwicklers

Ziel mit einem Embedded System ist es meist Prozesse in der "echten" Welt zu automatisieren bzw. Steuerungsaufgaben zu erledigen. Linux bietet sich dafür sehr gut an. Es gibt eine viel Zahl an Programmen, Kommunikationsmöglichkeiten und Literatur und Hardware. Desweiteren hat man eine riesige Auswahl, wenn es um die der Wahl der Programmiersprache für die eigene Anwendung geht. Im folgenden wird daher jeweils ein kleines "Hello World" Programm vorgestellt wie es in der jeweiligen Sprache aufgerufen wird. Als Editor um das Hello World Programm jeweils anzulegen wird vi oder nano verwendet.

Für den Anfänger empfiehlt es sich nano zu verwenden, wobei in die Sprache von vi kommt man doch relativ schnell rein (nach ca. 2-3 Tage geht es dann automatisch :-) ).


Bash Scripte

hello.sh

#!/bin/bash          
STR="Hello World!"
echo $STR

Der Aufruf geht wie folgt:

 sh hello.sh

C Programme

Auf GNUBLIN befindet sich ein fertiger C-Compiler. Leider ist dieser natürlich nicht der schnellste aber für einfache Programme reicht er völlig aus.

hello.c

 #include <stdio.h> 
 int main(void)
 {
   printf("Hello World!\r\n");
   return 0;
 }

Übersetzen kann man das Programm so:

 gcc -o hello hello.c

Und Aufrufen wie folgt:

 ./hello

Python Skripte

hello.py

#!/usr/bin/python
# Hello world python program

print "Hello World!";


Ausführen:

python hello.py

Squirrel Skripte

hello.sq:

print("Hello World!\n")

Aufruf:

 sq hello.sq


Lua Skripte

hello.lua:

print ("Hello World!\n")

Aufruf:

 lua hello.lua

Perl Skripte

hello.pl

#!/usr/bin/perl
# Hello world perl program

print "Hello World!\n";


Ausführen:

perl hello.pl

Ein paar Testprogramme auf GNUBLIN

Nach dem Anmelden auf GNUBLIN finden Sie ein paar Testprogramme. Spielen Sie hier einfach mal herum.

z.B.

 sh blink.sh

Mit STRG-C beenden Sie dieses wieder.

Oder

 lua blink.lua
In anderen Sprachen