Erste Anwendungen mit UDOO NEO

Nachdem die Benchmarks interessante Ergebnisse geliefert hatten, wollte ich erste Anwendungsprogramme ausprobieren.

Auf der Linux-Seite habe ich mit dem CPU-Clock experimentiert und auf der Arduino-Seite sollte der DHT11 Daten liefern, die später zum MQTT-Broker gesendet werden sollten. Zu diesem Zweck habe ich Mosquitto installiert.

Linux-Anwendungen

Clock Control

Linux bietet die Möglichkeit, die Taktfrequenz des Prozessors (CPU) auszulesen und wenn notwendig, auch zu modifizieren bzw. den aktuellen Bedürfnissen an Rechenleistung und Stromverbrauch anzupassen. Dies wird normalerweise vollautomatisch erledigt.

Während die Taktfrequenzstufen und -grenzen durch die Hardware vorgegeben sind, entscheidet ein sogenannter „(Scaling-)Governor“, wie die Taktfrequenz automatisch geregelt bzw. konkret angepasst wird.

Verfügbare Governors

  • ondemand – Standard bei den meisten Systemen. Die CPU-Frequenz wird den aktuellen Bedürfnissen an die Rechenleistung angepasst. Dabei wird die CPU-Frequenz u.U. sprunghaft angehoben oder abgesenkt.
  • conservative – Die CPU-Frequenz wird den aktuellen Bedürfnissen an die Rechenleistung angepasst. Die Taktfrequenz wird aber Schritt-für-Schritt angehoben bzw. abgesenkt.
  • performance – CPU läuft permanent auf der höchsten erlaubten Taktfrequenz.
  • powersave – CPU läuft permanent auf der niedrigsten erlaubten Taktfrequenz.
  • userspace – Dies ist kein kernel-eigener Governor. Vielmehr wird ein eigenes Governor-Programm verwendet

Der folgende Shell-Script zeigt, wie der ondemand-Governor aktiviert wird.


#!/bin/bash
i=0 # there is one CPU on UDOO NEO only
echo "Set CPU frequency of UDOO NEO ondemand"
echo ondemand > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor
echo -n "CPU0 Frequency = "
cat /sys/devices/system/cpu/cpu$i/cpufreq/cpuinfo_cur_freq

ondemand

MQTT

Die Installation von Mosquitto auf dem UDOO NEO erfolgt durch den folgenden Aufruf

sudo apt-get install mosquitto mosquitto-clients

Es werden der Mosquitto Server sowie Publish und Subscribe Clients installiert.

Für einen ersten Test kann man die Systemmitteilungen des auf dem UDOO NEO installierten Mosquitto-Brokers abonnieren. Durch Aufruf des Kommandos

mosquitto_sub -h localhost -v -t "\$SYS/#"

und unmittelbares Beenden mit Ctrl-C erhält man die in der folgenden Abbildung gezeigte Ausgabe.

mosquitto test

Neben der Versionsangabe sind eine Menge statistischer Daten zu sehen, die hier aber nicht weiter vertieft werden sollen. Wenn der Subscriber diese Messages erhält, dann arbeiten der lokale Mosquitto-Broker (localhost) und der Subscriber-Client auf dem UDOO NEO einwandfrei.


 

Arduino-Anwendungen

Sieve of Eratosthenes

Als Arduino Benchmark verwende ich das „Sieve of Eratosthenes„, um die CPU-Performance verschiedener Arduinos auszuweisen.

Die Ergebnisse für die von mir untersuchten Arduinos sowie Links zu den Quelltexten sind unter http://www.ckuehnel.ch/arduino_benchmarks.html zusammengestellt.

DHT11

Zur Unterstützung der DHTxx Temperatur- und Feuchtigkeitssensoren sind verschiedene Libraries verfügbar. Ich habe mit der Library von Rob Tillaart gearbeitet, die sowohl AVR als auch ARM unterstützt.

Da der Cortex-M4 auf dem UDOO NEO mit 200 MHz getaktet wird, habe im File dht.h den Eintrag

#define F_CPU 200000000UL

ergänzt. Die folgenden Bilder zeigen Quelltextauszug und Ergebnisausgabe des Testprogramms dht11_test.ino.

dht11_test -1

dht11_test

 

 

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit deinem WordPress.com-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s