Strict Standards: Declaration of Doku_Renderer_metadata::table_open() should be compatible with Doku_Renderer::table_open($maxcols = NULL, $numrows = NULL, $pos = NULL) in D:\www\www865\dokuwiki\inc\parser\metadata.php on line 24 Strict Standards: Declaration of Doku_Renderer_metadata::table_close() should be compatible with Doku_Renderer::table_close($pos = NULL) in D:\www\www865\dokuwiki\inc\parser\metadata.php on line 24 foxboardg20_lua

Lua auf dem FOX Board G20

Lua ist eine imperative und erweiterbare Skriptsprache zum Einbinden in Programme, um diese leichter weiterentwickeln und warten zu können. Eine der besonderen Eigenschaften von Lua ist die geringe Größe des kompilierten Skript-Interpreters (Wikipedia).

Lua V.5.1.4 kann von lua.org heruntergeladen werden.

Im Dezember 2011 wurde die Lua Version 5.2 freigegeben. Die Version 5.2 unterscheidet sich von der 5.1.4 vor allem hinsichtlich Erweiterungen bei der Garbadge Collection und bei Bitoperationen. Ausserdem ist ein goto Statement hinzu gekommen. Wir betrachten hier (vorerst) Lua weiterhin in der Version 5.1.4, da die heute verfügbare Literatur zu Lua und entsprechende Programmbeispiele sich fast ausnahmslos auf die V.5.1 beziehen.

Installation von Lua auf dem FOX Board G20

Download die aktuelle Lua V.5.1.4 durch Eingabe von

wget http://www.lua.org/ftp/lua-5.1.4.tar.gz

Nach erfolgreichem Download ist das TAR File durch Eingabe von tar xvfz lua-5.1.4.tar.gz auszupacken. Nach dem Wechsel in das neue Verzeichnis durch cd lua-5.1.4 kann das Paket installiert werden. Allerdings bedarf es zusätzlich noch der GNU Readline Library, die vorher installiert werden muss. Für die Installation auf dem FOX Board G20 ist make linux gefolgt von make install zu verwenden. Eine erfolgreiche Installation kann mit make test getestet werden. Das File INSTALL enthält Hinweise zur Installation von Lua.

tar xvfz  lua-5.1.4.tar.gz
cd lua-5.1.4
apt-get install libreadline-dev
make linux
make install
make test

Programmbeispiel

Blinken einer LED über das Sysfs Interface (Managing the GPIO lines using the sysfs interface)

io.write("Blinking...\n")

function sleep(n)	-- sleep n seconds
  os.execute("sleep " .. tonumber(n))
end

function GPIO_init() -- initialize PA26 as output
	os.execute ("echo 58 > /sys/class/gpio/export")
	os.execute ("echo out > /sys/class/gpio/gpio58/direction")
end

function GPIO_kill() -- free PA24
	os.execute ("echo 58 > /sys/class/gpio/unexport")
end

function GPIO_Hi()  -- switch PA24 to Hi
	os.execute ("echo 1 > /sys/class/gpio/gpio58/value")
end

function GPIO_Lo()  -- switch PA24 to Lo
	os.execute ("echo 0 > /sys/class/gpio/gpio58/value")
end

GPIO_init()

for i = 1,10 do
	GPIO_Hi()
	sleep(1)
	GPIO_Lo()
	sleep(1)
	io.write(".") -- print "." to console
	io.flush()
end
	
GPIO_kill()

io.write("\nEnd.\n")
os.exit(1)

$

Weitere Programmbeispiele sind auf SourceForge zu finden.