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.
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
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.