DOs and DO NOTs for developing Embedded Systems software

Zum Thema “Was sollte man tun und was nicht, wenn man Software für Embedded Systems entwirft und usitzt?”habe ich mal einen Artikel zusammegestellt. Dieser Artikel ist natürlich subjektiv, ich bin gerne bereit zu diskutieren. Die meisten Aspekte habe ich aber derweil schon aus verschiedenen Onlinequellen bestätigt bekommen.

http://www.final-memory.org/?page_id=2113

Im Prinzip habe ich dort mal zusammengefasst, was ich alles seit der Universität gelernt habe. Teile davon praktisch im Job, viele andere aber auch fortbildungsmäßig aus dem Netz. Im Vordergrund steht vorallem, fiese Fallen von faul programmierten C zu umgehen. Viele der Regeln und Vorschläge sind auch sprachunabhängig und können natürlich auch auf andere Programmiersprachen angewendet werden.

Ich selber habe viele dieser Regeln früher zum Beispiel nicht beherzigt. Wenn ich die Sourcen zu meiner Diplomarbeit ansehe, dann habe ich viele davon eklatant verletzt. Aber irgendwo will man ja auch einen Lerneffekt erkennen.

Als weitergehende Lektüre kann ich auch das “Embedded C Coding Standard” von Michael Barr empfehlen.

Irgendwann schreibe ich vielleicht auch noch einengrößeren zusammenhängenden Artikel oder auch ein kleines Buch. Die Liste kann sicherlich noch erweitert werden.

Neue Jabberadresse

Wie meine bisherigen Kontakte vermutlich schon mitbekommen haben, ich habe jetzt einen neuen Jabberaccount, der auch ein Primäraccount sein soll. Der alte Account bei jabber.ccc.de bleibt bestehen, wird von mir aber wohl nicht mehr so aktiv genutzt werden.

Atari Jabber Network
Atari Jabber Network

Wer einen sinnvollen Kontaktgrund hat, darf mich gerne in sein Jabberroster aufnehmen. Meine neue Jabber-ID lautet simonsunnyboy -at- atari-jabber.org

Übrigens, jeder der einen Zugang bei Gmail, GMX oder web.de hat, hat schon eine Jabberkennung und kann mit dieser ohne Probleme direkt loschatten.

ICQ betrachte ich in Zukunft als Legacyprotokoll und werde es wohl nur für bestehende Kontakte (weiter)  nutzen.

http://www.atari-jabber.org/

Nochmal SPAM, von der besonders unglaubwürdigen Art

Mal wieder fand ich heute lustigen SPAM in meinem Emailpostfach. Bei dem holperigen Text kann man nur lachen, zumal ich eh Kein Kunde bei der Postbank bin.

Von: Online-Banking <direkt@postbank.de>
An: undisclosed-recipients : ;
Betreff: Sehr geehrter Kunde
Datum: 31.08.2010 03:37:44

Sehr geehrter Kunde,

In einem Projekt, um zu ??berpr??fen personenbezogenen Daten w?hrend unserer Bank erbrachten Leistungen gab es eine Diskrepanz hinsichtlich der pers?nlichen Daten, die Sie bei der Unterzeichnung kontrakt.

Um dieses Problem zu l?sen und zu vermeiden schlie?en Ihren konto, bitte ??berpr??fen und aktualisieren pers?nlichen Daten hier.

? 2010 Deutsche Postbank AG

Spätestens bei dieser schlechten Übersetzung sollte selbst dem dummsten Deppen auffallen, daß diese Email nicht von der echten Postbank stammt. Banken würden solche Daten dazu prinzipiell niemals online abfragen oder generell erfragen. Wer das Kleingedruckte in den Vetrrägen liest, weisst das auch.

Wer darauf reinfällt, ist selber schuld!

Huawei E220 UMTS MINI USB Modem unter Ubuntu Lucid Lynx 10.04 LTS verwenden

Ich war heute mal neugierig und habe mein UMTS Modem mit dem neuen PC ausprobiert. Tatsächlich lief es unter GNOME ohne große Klimmzüge mit Ubuntu Lucid Lynx 10.04 LTS.

Hauptproblem war wieder, Linux dazu zu bewegen, ein Modem statt einem USB Stick zu erkennen. Mittlerweile gibt es dafür Tools. Man muss nur das Tool “USB ModeSwitch” installieren und in einer Konfigurationsdatei etwas anpassen.

Das ist unter http://wiki.ubuntuusers.de/USB_ModeSwitch sehr gut beschrieben und auf das E220 passen die dort beschriebenen Regeln 1:1. Selbst ohne Reboot erkannte der Kernel das Modem beim erneuten Einstecken danach als solches.

Danach erkennt der GNOME Netzwerkmanager das Modem, wenn man unter “Mobiles Breitband” eine neue Verbindung erstellt. Von Hand waren keine Einstellungen nötig, ich habe “E-Plus” als Provider ausgewählt. Danach fragte der Netzwerkmanager nur noch nach der PIN (keine Basteleien mehr nötig) und erstaunlicherweise war ich nach nur 2 Versuchen (ich erinnere mich mit Grausen an den Februar oder März) online.

Tatsächlich schreibe ich diesen Artikel gerade über die UMTS Verbindung, auch wenn ich auf Anhieb den Unterschied zum Breitband via Kabelanschluß merke. Aber immerhin online sein, wenn die Breitbandverbindung ausfällt oder z.B. schon in die neue Wohnung verlegt wurde.

Seit März übrigens das erste Mal wieder, daß ich die UMTS Verbindung insgesamt in Betrieb nehme.

Schon wieder SPAM….

Mal wieder aus der SPAM Box. Ich zitiere mal wieder verbatim, damit der Sinn (?) erhalten bleibt.


Von: admin@cbrnknowledge.com
Reply-to: admin@cbrnknowledge.com
An: Matthias Arndt
Betreff: Matthias edit biography
Datum: 21.07.2010 22:02:23

C O N T I N E N T A L   B R O A D C A S T I N G  N E T W O R K  I N C.
If you do not wish to be notified Unsubscribe me from this list

Matthias,

It is my pleasure and with great distinction that I inform you that as of July 21, 2010, you are requested to appear in our upcoming release of the 2011 directory showcasing the WHO’S WHO of Worldclass business leaders.

Our forum is renowned by professionals and executives who express continuous knowledge, experience and achievement in their occupation industry or profession.

On behalf of our members and staff, we wish you continued success.

view profile:

http://www.Matthias.Arndt.cbrnknowledge.com

After you emend your profile, find out Who’s Missing.

William Whitaker
Vice President Research Division

Continental Broadcasting Network
Who’s Who World Class Alliance
23 Briaroot Drive
Smithtown, NY 11787

T h i s  i s  a n  a d v e r t i s e m e n t


Was zum Geier will der mir verkaufen? Zur not auch wieder nur die Emailadresse abgraben, aber rein inhaltlich macht der SPAM nicht mal Sinn. Nur weil ich eine Webseite betreibe, habe ich nicht automatisch ein Geschäft, geschweige denn ein internationales.

Neues aus der SPAM Box

Als ich eben meine morgendliche Email abrief, fand ich folgende Mail in meinem SPAM-Ordner.


From: “medicine convention” <mail@conferencemedic.com>
To: “Matthias Arndt”
Subject: Jerusalem convention
Date: Sat, 17 Jul 2010 08:41:00 +0300

Ankuendigung fuer Aerzte, Therapeuten und Krankenpfleger,

Wir moechten Ihnen die Internationale Konferenz ueber integrative Medizin in Jerusalem
(Oktober 2010) bekanntmachen.

Es handelt sich um ein Treffen medizinischer Fachleute aus aller Welt, das sich mit Mitteln und Wegen beschaeftigt, die wissenschaftlichen  Prinzipien moderner Medizin mit den holisitischen Prinzipien alternativer  Medizin zu vereinen.

Weitere Details und Anmeldeformulare finden Sie auf der Internetseite der Konferenz: conferencemedic.com/de

Fuer weitere Fragen stehen wir Ihnen gerne zur Verfuegung,

Avraham Fried

Director

The Jerusalem International Conference on Integrative Medicine

Sollten Sie nicht zu den medizinischen Berufen gehoeren, so entschuldigen Sie uns bitte, und klicken hier um Ihre Adresse zu entfernen.


Das Thema ist so hanebüchen, daß der Zweck sofort klar ist. Die Email soll Benutzer dazu bringen, auf den “Unsubscribe” Link zu klicken und somit die eigene Emailadresse zu bestätigen, damit noch mehr SPAM verschickt werden kann.

Das schlimme ist, SPAM ist nicht mal mehr nervtötend, sondern gehört schon so zum Alltag. Traurig eiegentlich :(

Joystickkalibrierung unter Linux automatisieren

Seit Jahren habe ich Joysticks und Joypads wenn nötig unter Linux immer von Hand kalibriert, aber nie die Einstellung dauerhaft fixiert.

Tatsächlich bringt das Kommandozeilentool jscal alles nötige mit. Ich las unter http://www.averyjparker.com/2005/12/29/joystick-calibration-under-linux/ einen schönen Artikel darüber und möchte ihn hiermit verkürzt eindeutschen.

Das Vorgehen ist wie folgt:

  1. Joystick oder Joypad mit jscal kalibrieren: jscal -c /dev/input/js0
    Das Devicefile sollte natürlich jeweils angepasst werden.
  2. Die Kalibrierung prüfen, z.B. mit MAME oder MESS
  3. Die Kalibrierungsdaten abspeichern: jscal -p /dev/input/js0 >calibrate-joystick.sh
    Dieses Kommando erzeugt einen Aufruf von jscal, der die Daten wiederherstellt.
  4. Im Prinzip reicht es, dieses Shellskript ausführbar zu machen, also #!/bin/sh Header davor und chmod +x
  5. Zum Schluss das Skript in die eigene Autostarsequenz einhängen, entweder system global oder so wie ich ganz banal in den GNOME Autostart rein.

Danach sollte bei jedem Start das Pad oder der Joystick ordentlich kalibriert sein.

Frohes Daddeln :)

Mein erstes Routerabenteuer: a-quip A/WLAN-4

Erstmalig brauche ich im Leben einen klassischen Router. In Clausthal im Studentenwohnheim war es nicht erlaubt, einen Router zur Teilung der IP zu betreiben, das UMTS, was ich bis vor 2,5 Monaten im Betrieb hatte, machte es nicht sinnvoll und davor hatte ich daheim nie Breitband.

Kabel BW macht es möglich und nun habe ich seit Mitte März qualitativ hochwertiges Breitbandinternet im Haus. Natürlich wollte ich auch meine Ataris entgültig mit der Welt vernetzen, und nicht nur lokal mit dem regulären PC. Ergo muss endlich doch eine Routerlösung daher.

Vorigen Samstag ging ich daher shoppen und kaufte einen Router, der zunächst alles zu halten schien, was er versprach. Ich hatte mir im MediaMarkt einen günstigen a-quip A/WLAN-4 Router gekauft.

Anstöpseln und grundlegend konfigurieren ging auch ganz leicht. Per Default war ein sinniges Subnetz eingestellt und er erkannte auch automatisch meine über DHCP angebundene Internetverbindung. Das Problem kam dann im 30 Minuten Takt. Bei ICQ und Skype war plötzlich die Verbindung weg und wieder da. Im IRC konnte  ich dies durch ominöse Reconnects beobachten. Was war los?

Der Router kam offenbar nicht mit den DHCP-Einstellungen des Providers zurecht. Er machte brav einen Refresh und damit praktisch einen Neustart, obwohl sich zugeteilte IP und andere Verbindungsdaten nicht geändert hatten. Gehe ich da von zuviel Intelligenz im Gerät aus?

Jedenfalls konnte ich das Problem dann sogar auch über Nacht im Routerlog beobachten, zu einem Zeitpunkt, wo keinerlei Rechner im LAN aktiv waren. Damit konnte es nur am Router liegen.

Lars riet mir zu einem Firmwareupgrade. Das hat mir aber nicht geholfen. Das Problem blieb bestehen. Da meine Supportanfragen ins Leere liefen, bin ich ehrlich enttäuscht. Das Gerät kommt wenn irgendmöglich zurück und wird gegen ein Exemplar getauscht, welches offiziell mit Kabel BW zusammenarbeiten kann.

Testverdikt für a-quip A/WLAN-4: mangelhaft

Der kurze Weg zur RS232

Da mein neuer ACER AS X1301-3 von Haus erstmal keine RS232 Schnittstelle mitbrachte, hatte ich schon beim Kauf darüber nachgedacht. Schließlich brauche ich einen solchen Port für meine Mikrocontrollerprojekte und -basteleien.

Da der Rechner laut Datenblatt über einen PCI Express x1 Slot verfügte, kaufte ich gleich eine passende Steckkarte mit. Heute morgen habe ich mich dann daran gemacht , die Karte einzubauen. Das Garantiesiegel am Rechner habe ich geflissentlich ignoriert und die Seitenverdeckung abgeschraubt.

ACER AS X1301-3 von innen (PCIe Slots oben rechts)
ACER AS X1301-3 von innen (PCIe Slots oben rechts)

Wie man schön sieht, ist die Grafikkarte doch nicht Onboard, sondern belegt einen PCI Express x16 Slot ganz oben. Immerhin, das erlaubt später mal einen Austausch. In den x1 Slot darunter setzte ich also die RS232 Karte von Delock. Genau eine Delock 89236 mit 16C950 Uart.

Delock 89236 RS232 für PCI Express x1
Delock 89236 RS232 für PCI Express x1

Windows  7 erkannte die Karte erstmal nicht, mochte sie aber nach dem ich von der Treiber-CD einen passenden Treiber eingespielt hatte. Mit Teraterm konnte ich dann auf mein Phytec Mikrocontrollerboard über die frische RS232 zugreifen. Warum Windows die Schnittstelle allerdings als COM3 einbindet, wenn es sonst keine RS232 im System gibt, erscheint mir aber fragwürdig.

Unter Linux war es zunächst etwas wackelig. Beim ersten Booten zeigte der Kernel die Schnittstelle zwar korrekt über dmesg an, aber beim Zugriffsversuch bekam ich einen I/O Error.

[    0.650679] Serial: 8250/16550 driver,
 4 ports, IRQ sharing enabled
[    0.650942] serial 0000:03:00.0:
 PCI INT A -> Link[AE2A] -> GSI 16 (level, low) -> IRQ 16
[    0.650950] 1 ports detected on
 Oxford PCI Express device
[    0.651010] ttyS0: detected caps 00000700
 should be 00000100
[    0.651014] 0000:03:00.0: ttyS0 at MMIO 0xfd9fd000
(irq = 16) is a 16C950/954

Nach einem Reboot funktionierte es allerdings und ich konnte das Board wie unter Windows mit gtkterm ansprechen:

GTKTerm
GTKTerm

Ob die Schnittstellenkarte auch mit meinem AVR-Board harmoniert, muss ich noch herausfinden. Da allerdings Linuxseitig der reguläre Treiber für RS232 Schnittstellen verwendet wird, bin ich eigentlich recht zuversichtlich.

Insgesamt müsste die Delock 89236 Karte damit Linux tauglich sein!