Wordpress Themes

AT91Boot_DLL-API-Aaaaargh-Anfall

Atmel ist so nett für seine auf ARM basierenden Microcontroller eine Software mitzuliefern, mit der man den Controller sozusagen in Betrieb nehmen und den angeschlossen RAM und Flash testen und bespielen kann, nennt sich SAM-BA. Enthalten ist eine Bibliothek namens AT91Boot_DLL.dll, deren API ganz brauchbar dokumentiert ist. Sucht man noch ein wenig quer, stößt man auch auf AT91-ISP, wo es zwei Beispielprojekte gibt, wie man die Bibliothek in eigenen Projekten nutzen kann. Der Vorteil an der Bibliothek ist, dass man sich um die Verbindung zur ARM-CPU via USB oder serieller Schnittstelle keine Gedanken machen muss, man ruft einfach die Funktion AT91Boot_Scan() auf und lässt die DLL suchen. Das Code-Beispiel aus der Dokumentation sieht so aus:

CHAR *strConnectedDevices[5];
for (UINT i=0; i<5; i++)
    strConnectedDevices[i] = (CHAR *)malloc(100);
AT91Boot_Scan((char *)strConnectedDevices);

Beim Betrachten der Funktionsparameter hatte ich bereits letzte Woche den Verdacht, dass das mal krachen könnte, wenn man hier der Bibliothek gar nicht sagen kann, wie lang die Liste jetzt wirklich ist, die man da reinfüttert. Im Beispielprojekt umfasst die übrigens 10 Elemente und das änderte ich Freitag nachmittag noch auf 5. Funktionierte Freitag auch, so weit so schön.

Montag, also heute, stieg die Anwendung dann reproduzierbar mit einer Access Violation in der msvcrt.dll aus beim Aufruf dieser Funktion. Klassisch: »Es geht nicht mehr, ich hab aber nichts geändert.«

Etliche Flüche, Tests, Recherchen und dergleichen später stellte sich raus, dass ich doch was geändert hatte: ich hatte heute noch ein, zwei USB-Geräte mehr an meinen Rechner angeschlossen. Die Bibliothek sucht zuerst nach über USB angeschlossenen ARM-Prozessoren und scheint alle aktiven USB-Geräte durchzugehen, 5 Elemente in der Liste haben dann nicht mehr ausgereicht, flugs im Präprozessor-Makro den Wert erhöht und schon läuft das wieder ohne Absturz.

Den Rumpelstilzchentanz, den ich hier aufgeführt habe, weil die ihre API nicht sauber designen können und einen so zur Suche nach so dämlich subtilen Fehlern zwingen, möge sich bitte jeder selbst vorstellen! *motz*

Microsoft Visual C++ 6 und CMake

Warum man eine steinalte Entwicklungsumgebung mit einem modernen Build-System zusammen benutzen will, lässt sich nicht nur mit »Weil es geht!« begründen, es gibt sogar handfeste Argumente dafür, doch der Reihe nach.

Aus Gründen hab ich hier einige MFC-Projekte vorliegen, die in Visual Studio 6 entwickelt wurden, für das hier auch eine gültige Enterprise-Lizenz existiert. Bekommen habe ich Quellcode eines älteren Projekts ohne die Projektdateien. Neu zu entwickeln ist ein vergleichbares Programm und da Entwicklungsumgebung und KnowHow verfügbar sind, wird das neue Projekt eben auch in Visual Studio 6 entwickelt, die Programme laufen ja trotzdem.

Mit CMake füge ich dem Quellcode jetzt einfach die passenden Dateien mit dem Namen “CMakeList.txt” hinzu und lasse mir von CMake ein Projekt für VS6 erzeugen. Vorteil: ich brauche keine Projektdateien im Versionsverwaltungssystem ablegen, kann mir das auschecken wohin ich will und mein Quellcodebaum enthält nur das nötigste. De facto war ich so sogar in der Lage, das alte Projekt, wo mir die Projektdateien fehlten, mit CMake zu bauen und dem auf die Finger zu gucken. Soviel zum »warum«, es folgt jetzt das »wie« …

Zunächst mal sei gesagt, wenn schon Visual Studio 6, dann auch das letzte Service Pack installieren. Ist ein FAQ1 und das Service Pack gibt’s bei Microsoft.

Da ich hier eine MFC-Anwendung entwickeln will, also ein Tool mit GUI, reicht mir der reine Code nicht aus, sondern ist sind noch ressource files nötig. Bevor ich also später die Projektdateien mit CMake generieren lasse, erzeuge ich mit dem Assistenten von Visual Studio ein neues MFC-Projekt, in meinem Fall »Dialogfeldbasierend«:

MFC-Anwendungs-Assistent Dialogfeldbasierend

Den Rest des Assistenten klickt man nach eigenen Vorstellungen durch und dann kann man Visual Studio erstmal wieder schließen. Man hat jetzt einen Ordner vorliegen, in dem folgende Dateien liegen:

von VS6 erzeugte Dateien für ein neues MFC-Projekt

Davon kopieren wir jetzt den Ordner res und folgende Dateien an einen neuen Ort:

  • foo.aps
  • foo.clw
  • foo.cpp
  • foo.h
  • foo.rc
  • fooDlg.cpp
  • fooDlg.h
  • Resource.h
  • StdAfx.cpp
  • StdAfx.h

Das ist jetzt unser neuer Source-Ordner und dort wird nun eine Datei namens CMakeLists.txt angelegt. Fortgeschrittene CMake-Nutzer können das auch auf getrennte Unterordner für Programmcode, Header und externe Ressourcen aufteilen, spar ich mir hier mal und zeige nur wie das mit einer einzigen CMakeLists.txt aussehen kann:

project(foo)
cmake_minimum_required(VERSION 2.8)
 
find_package(MFC)
 
set(FOO-H
    foo.h
    fooDlg.h
    Resource.h
    StdAfx.h
)
 
set(FOO-RC
    foo.rc
)
 
set(FOO-SRC
    foo.cpp
    fooDlg.cpp
    StdAfx.cpp
)
 
add_definitions(-D_AFXDLL)
set(CMAKE_MFC_FLAG 2)
add_executable(${PROJECT_NAME} WIN32 
    ${FOO-H}
    ${FOO-RC}
    ${FOO-SRC}
)
 
install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX})

Zu set(CMAKE_MFC_FLAG 2) bitte nochmal selbständig die Doku lesen und nicht verwirren lassen, die dort gezeigten Code-Abschnitte sind aus älteren Versionen vom Installer von CMake selbst kopiert. Wie eingangs angedeutet, machen wir jetzt einen Build außerhalb des Source-Verzeichnisses und rufen dazu das CMake-GUI auf:

CMake GUI für unser Mini-Projekt

Nach einem Klick auf Configure wird man nach dem Generator gefragt. Dort wählt man Visual Studio 6 aus der Liste und bestätigt. Ein weiterer Klick auf Generate erzeugt dann die Projektdateien im zuvor eingestellten Build-Ordner, alles oben im Screenshot zu sehen. Mit einem Doppelklick auf die Datei foo.dsw öffnet sich dann Visual Studio und man kann sein Projekt bauen. Schick auch, dass es gleich ein Unterprojekt gibt, was einem die Anwendung installiert. Theoretisch gibt’s auch noch CPack, womit man sich dann noch gleich einen Installer backen kann, aber das würde jetzt hier zu weit führen. ;-)

das von CMake erzeugte VC6-Projekt

Wenn das alles soweit schön kompiliert, kann man den Source-Ordner so nehmen wie er ist und in das Versionsverwaltungssystem seiner Wahl packen. Projektdateien für Visual Studio generiert sich dann jeder Entwickler selbst mit CMake. Bisschen umständlich ist das später beim Hinzufügen von neuen Dateien ins Projekt, weil man die CMakeLists.txt parallel pflegen muss, aber das ist es meiner Meinung nach wert.

  1. Visual Studio 6 Compiler : Freezing CMake Configuration []

Deactivate Nautilus automount in KDE

Auf meinem Laptop (Samsung NC10) läuft zu meiner vollen Zufriedenheit ein Debian Squeeze mit KDE. Seit einiger Zeit wurde beim Anstecken externer Datenträger (USB-Stick, SD-Karte, …) derselbe automatisch gemountet und es wurde Nautilus geöffnet, der Dateimanager von Gnome. Dieses Verhalten hat mich ziemlich genervt, weil ich a) selbst entscheiden möchte, ob ich was mounten will oder nicht, so wie das bei KDE auch default ist und weil b) ein Dateimanager geöffnet wird, den ich eigentlich gar nicht benutze (bzw. benutzen will).

Bei der Recherche im Netz stieß ich auch folgenden Foreneintrag: newly installed KDE: don’t want Nautilus window when USB memory inserted. Die dort beschriebene Lösung funktioniert im Prinzip, nur halt wie dort bereits erwähnt, nicht genau so.

Ich habe dann das Paket gconf-editor installiert und den entsprechenden Editor gestartet. Die Keys hatten sich tatsächlich geändert, aber waren auffindbar:

Ich habe die Haken bei den Keys media_automount und media_automount_open entfernt und damit das von mir gewünschte Verhalten wieder hergestellt. :-)

Color confusion?

While doing an ordinary web search today I wondered if Google had changed their colors. Asking your colleagues if that’s really the case is not very helpful, but having some old browser tabs open is. See before:

And now Google has a lighter blue as color for the font of the search results:

I take this as proof I’m not going crazy …

Wuff what?

Beruflich habe ich mittlerweile auch mit Linux zu tun und hier in der Firma setzen wir unter anderem ptxdist ein. Wenn man dort screen installiert und die /etc/screenrc von ptxdist installiert, erwartet einen eine lustige Überraschung, wenn die Visual Bell ausgelöst wird. Auszug aus der zuvor genannten Datei:

# turn visual bell on
vbell on
vbell_msg "   Wuff  ----  Wuff!!  "

Also manchmal …

Farbige, seitenweise Diffs mit Mercurial

Bei der Mitarbeit an verschiedenen Projekten ist man heutzutage beinahe schon gezwungen sich mit verschiedenen Versionsverwaltungssystemen auseinanderzusetzen. Ich selbst benutze am liebsten Mercurial, aber es gibt auch Projekte, wo Git oder Subversion benutzt werden. Alle haben ihre Vor- und Nachteile aber so gewisse Dinge, die das eine per default macht, hätte man gern auch im anderen und bei einigen Dingen bekommt man das sogar hin.

Ein wirklich praktisches Feature von Git ist beispielsweise, dass es bei einem `git diff` den Output farbig und im Pager darstellt. Um dieses Verhalten in Subversion nutzen zu können, kann man ein externes Skript nutzen, das ich letztens im Netz gefunden habe: Color highlighted diffs with git, svn and cvs. Für Mercurial hab ich mich gerade nochmal selbst auf die Suche gemacht und folgende Lösung gefunden:

Im Grunde muss man nur die beiden Erweiterungen color und pager aktivieren und konfigurieren. Das sieht bei mir in der ~/.hgrc jetzt wie folgt aus:

[extensions]
color =
pager =
 
[pager]
pager = LESS='FSRX' less

Die Aktivierung der Extensions ist selbsterklärend, die Optionen habe ich so von der Wikiseite zur pager-Extension übernommen bzw. über `man less` nochmal nachgelesen. Wichtig hier ist auf jeden Fall das ‘R’, damit die Farbcodes von less auch interpretriert werden.

Debian Squeeze Release Kuchen

Debian Squeeze ist veröffentlicht worden und zur Feier des Tages hab ich mal einen Kuchen mit Debian-Logo gebacken:

img_2503

Okay, war schon letztes Wochenende und ich war bisschen enttäuscht, dass niemand auf der Geburtstagsparty einer guten Freundin das Debian-Logo erkannt hat, aber der Kuchen war lecker und Debian rockt einfach und ist es wert mit Kuchen gefeiert zu werden!

Farben im Midnight Commander von Ubuntu 10.04 Lucid

Wir setzen im Büro Ubuntu 10.04 Lucid auf mehreren virtuellen Maschinen ein. Als Konsolenjunkie ist da selbstverständlich auch der Midnight Commander installiert. Leider krankt das entsprechende Ubuntu-Paket in der Version daran, dass Dateien und Verzeichnisse nicht unterschiedlich farbig dargestellt werden. Im Launchpad gibt es auch einen Bugreport dazu, wo eine mögliche Lösung des Problems angedeutet ist. Einfach die Datei filehighlight.ini ins Verzeichnis /etc/mc kopieren. Nur wo bekommt man die Datei her so auf die schnelle und woher nur die eine und nicht gleich die ganzen Quellen? Ich hab mich dazu im Source Browser auf midnight-commander.org bedient: root/misc/filehighlight.ini – dort ganz unten gibt’s nen Link »Original Format«, wo man die aktuelle Datei aus dem Versionsverwaltungssystem bekommt. Beispiel, um die zu installieren:

cd /etc/mc
sudo wget http://www.midnight-commander.org/export/995bff34ac5705b20000c08960893a3c45ee5132/misc/filehighlight.ini

Midnight Commander neu starten, freuen.

Tarifoptionen für treue Kunden

Erinnert sich noch jemand an Fazit und Nachtrag aus dem letzten Beitrag?1 Ich habe eben 10 Minuten mit der Vodafone-Kundenhotline gesprochen und hatte einen sehr freundlichen und hilfreichen Mitarbeiter am Apparat, womit sich die Anzahl der freundlichen Mitarbeiter dort auf mindestens drei erhöht. :-)

Doch der Reihe nach: in den Kommentaren zum letzten Beitrag kam die Frage auf, warum ich nicht den Anbieter wechseln würde. Im persönlichen Gespräch diese Woche wurde ich darauf hingewiesen, dass ich mich da erstmal über Vertragslaufzeiten und Kündigungsfristen informieren müsste. Genau das wollte ich jetzt mit diesem Anruf bezwecken.

Letzter Stand bei meinem Vertrag war nun, dass ich im Dezember 2008 die letzte 24-monatige Vertragsverlängerung unterzeichnet hatte. Bei Vodafone verlängert sich der Vertrag nach Ablauf dieser Zeit automatisch um ein Jahr. Die Kündigungsfrist beträgt 3 Monate. D.h. ich hätte bis Anfang September 2011 kündigen müssen. De facto hätte ich jetzt gar nicht zeitnah wechseln können, sondern hinge noch mindestens dieses Jahr in dem Vertrag fest.

Als ich diese Fakten dem Hotline-Menschen entlockt hatte, schilderte ich ihm noch mein eigentliches Problem, nämlich die sauteuren SMS. Früher™ hatte ich da mal eine Tarifoption mit 40 SMS in alle Netze, die ich irgendwann wegen mangelnder Nutzung gekündigt hatte. Zuletzt im Laden wurde mir erzählt, dass es diese Option nicht mehr gäbe und man findet sie auch nicht mehr auf der Webseite. Der freundliche Hotline-Mitarbeiter meinte jedoch, bevor ich kündigte und weil ich ja ein langjähriger treuer Kunde wäre, könnte er mir diese Option wieder dazubuchen. Das sind dann bei 5 € im Monat für die Tarifoption jetzt also 0,125 € pro SMS für die ersten 40 SMS für mich, für die ich sonst 40 * 0,19 € = 7,60 € bezahlt hätte. Ab 27 SMS im Monat lohnt sich das für mich also und die Ersparnis beträgt maximal wahnsinnige 2,60 €. Nicht viel, aber immerhin und auf jeden Fall sehr nett von meinem Provider. Telefon und SMS bleibt damit alles beim alten, für den Datentarif schau ich mich dann nochmal um, die 10 bis 15 € bei der Konkurrenz klingen ja gar nicht schlecht …

  1. 23 Minuten Beratung []

23 Minuten Beratung

Seit ein paar Wochen trage ich mich mit dem Gedanken, zu meinem Handy-Tarif, mit dem ich bis auf eine Kleinigkeit recht zufrieden bin (dazu später mehr), einen Datentarif dazuzubuchen, einen reinen Datentarif für UMTS, damit ich endlich mal auch die bereits in mein Netbook eingebaute UMTS-Hardware nutzen kann, eine bisher noch nicht abgeschlossene Geschichte in mehreren Akten.

Die Protagonisten

  • der langjährige zufriedene Kunde
  • diverse Mitarbeiter verschiedener Mobilfunkprovider

Prolog

Ich habe ein steinaltes Handy, ohne Kamera, ohne WLAN, ohne UMTS, ohne Radio, ohne Speicherkarte, ohne mp3-Player, ohne Touchscreen – kurz und gut, ein Telefon zum Telefonieren, Wecken und SMS verschicken. Mehr kann es nicht und soll es auch nicht. Wenn es vom Zug überfahren wird, kaufe ich mir für 30 € ein neues, das genauso viel kann und nicht mehr.

Desweiteren habe ich ein Netbook vom Typ Samsung NC10 mit eingebautem UMTS-Modem. Akku raus, SIM-Karte rein, Akku wieder rein und schon soll man surfen können. Ein Smartphone will ich nicht, erstens weil es zu teuer ist und zweitens weil ich da schlecht Vim und Mercurial installieren kann und keine Tastatur habe, ich will einen mobilen Rechner, kein Multimedia-Spielzeug.

Akt 1 – Die anderen

Bevor ich zu meinem Netzbetreiber gestiefelt bin, hab ich diverse andere Leute befragt, wie sie das so machen. War alles nicht so das richtige dabei, zumal meist ein Smartphone involviert war oder teure tageweise Tarife oder oder oder. Ich will das, was ich im Prolog andeutete und zwar auch jetzt noch, nachdem ich da ein paar Wochen drüber gegrübelt hab.1

Also zog ich los zu den vier großen Netzbetreibern und horchte mich nach aktuellen Angeboten um. Randbedingung: reiner Datentarif für Notebook ohne Beschränkung des Datenvolumens. Alle vier bieten das an, von Resellern lass ich lieber die Finger, da kochen dann noch mehr Beteiligte dran rum, das muss ich mir nicht geben.

Bei T-Mobile2 lag der Preis um die 30 € im Monat, zu viel. Auch die 25 € von O₂ waren jenseits meiner Schmerzgrenze. Die 20 €, die e-plus aufrief, gefielen mir schon eher. Die Recherche war in Magdeburg im Allee-Center ohne Anstehen innerhalb von einer viertel Stunde erledigt.

Akt 2 – Der Vodafone-Laden

Weil ich mir so Vertragskram gern persönlich von Menschen anhöre, wo man auch mal nachfragen und eine rechtsgültige Unterschrift auf Papier setzen kann, versuchte ich mein Glück auch noch im Laden von Vodafone, meinem aktuellen Netzbetreiber. Immerhin bin ich zufriedener Kunde seit dem Jahre 2000. Meine SIM-Karte mit der Aufschrift »D2 privat« zeugt davon. Ich ging immer mal wieder in deren Laden im Allee-Center in Magdeburg vorbei. Zu einer persönlichen Beratung kam es erst nach etlichen Wochen, weil ich nie mehr Geduld als 10 Minuten hatte, um mal an einen freien Kundenberater zu gelangen. Ein Andrang dort, verblüffend. Schlussendlich konnte ich jedoch noch die Auskunft ergattern, dass mich der gewünschte Tarif auch hier 25 € kosten würde.

Akt 3 – Die Vodafone-Website

Dass die Tarife moderner Mobilfunkbetreiber einfach zu verstehen wären und über Jahre konstant, erwartet wohl heutzutage niemand mehr. Umso schwerer muss es den Webentwicklern fallen, das in eine nutzerfreundliche Website zu gießen. Nach einigem Hin- und Herklicken durch Tariffindeprogramme, Tarifübersichten, Online- und Stammkundenvorteile, glaubte ich, den passenden Tarif gefunden zu haben: »Mobile Internet Flat 3,6« mit Online-Vorteil 24 x 100 Frei-SMS. Mit den 24 Monaten Vertragslaufzeit hatte ich mich auch schon abgefunden, nun denn. Kurz vor dem finalen Bestätigen der Bestellung, fiel mir jedoch auf, dass nicht dabei stand, ob diese Frei-SMS denn nur für das Vodafone-Netz oder auch für alle anderen Netze gelten würden. Letzteres wäre genau der springende Punkt gewesen. 100 SMS im Monat für 5 €, ein deutlich angenehmerer Preis als die 19 Cent, die ich derzeit pro SMS bezahlen muss!3 Also rief ich die Bestell-Hotline an …

Akt 4 – Die Hotline

Eigentlich wollte ich ja die zuvor erwähnte Auskunft. Die Frage ließ sich unmittelbar klären, hat aber bedauerlicherweise keine Relevanz mehr, wie sich noch herausstellen wird. Die Dame überzeugte mich dann, dass ich am Telefon auch den Online-Vorteil bekommen würde und zusätzlich noch eine Vorgangsnummer, die es im Internet nicht gäbe. Nun ja, weil sie so freundlich war, ließ ich mich darauf ein, den Tarif am Telefon zu buchen. Nach dem Austausch einiger Informationen stellte sich dann heraus, dass ich eine neue SIM-Karte bekommen würde – logisch – und dazu eine neue Nummer, quasi einen zweiten Vertrag. Moment! Eine neue Nummer? Heißt das, ich würde die Frei-SMS nicht mit meiner alten Nummer und dem alten Telefon nutzen können? So ist es wohl. Aber, so meinte sie, es gäbe eventuell eine Möglichkeit, wenn ich eine Twin-Card hätte, also eine zweite SIM-Karte mit der selben Nummer. Das könne sie aber nicht machen, da müsste sie mich zur normalen Hotline durchstellen.

Nach einer recht langen Warteschleife, erzählte ich dem nächsten Mitarbeiter, was ich gern hätte und dass mir zuvor gesagt worden war, das ginge möglicherweise mit dieser Twin-Card. Ich hatte zuvor schon im Freundeskreis gehört, dass man bei anderen Netzbetreibern wohl auch einfach eine zweite Karte bekäme und wunderte mich daher nicht weiter. Im Laufe des Gesprächs stellte sich jedoch raus, dass ich immer nur eine der beiden Karten zugleich nutzen könnte. Das heißt, ich hätte das Telefon ausmachen müssen, wenn ich surfen wollte und umgekehrt. Was mit SMS passieren würde, die während des Surfens eintrudelten, wagte ich gar nicht erst zu fragen. Es drängte sich nun die Frage auf, wieso denn überhaupt der Online-Vorteil mit den Frei-SMS buchbar sei? Da, so erklärte mir der freundliche Vodafone-Mitarbeiter, könnte eventuell ein Fehler vorliegen und er müsse mal mit einem Kollegen Rücksprache halten, ansonsten könnte er nichts für mich tun.

Ich beschrieb ihm dann nochmals, was ich gern hätte und dass mir im Grunde ja nur die SMS viel zu teuer seien, nicht ohne ihn zu beschwichtigen und verständnisvoll zu erwähnen, dass ich natürlich wüsste, dass er persönlich da nichts dafür könne. Ich versicherte mich dann noch, dass mit meinem Vetrag alles beim alten bliebe und er versprach, sich nochmals intern zu informieren und mich zurückzurufen. Okay. Ein Blick auf’s Handy: dieses Gespräch hatte geschlagene 23 Minuten gedauert!

Akt 5 – Der Rückruf

Keine 10 Minuten später, hatte ich den freundlichen Vodafone-Mitarbeiter wieder an der Strippe. Er entschuldigte sich vielmals und sagte, es läge hier tatsächlich ein Fehler auf der Website vor und ganz Vodafone würde sich bei mir bedanken, dass ich den gefunden hätte. Sie wollen mir eine rote Weihnachstgrußkarte schicken und bedauern den Vorfall außerordentlich. Nun warte ich also auf dieses Dankeschön und habe immernoch keinen Datentarif für’s Notebook …

Vorläufiges Fazit

Wenigstens waren alle freundlich.

Nachtrag

Ich habe über Weihnachten eine rote Tasse mit Vodafone-Schriftzug geschickt bekommen.

  1. Nicht durchgehend, so wichtig ist der ganze Kram dann doch nicht. []
  2. Heißen die gerade noch so oder schon wieder anders? []
  3. Man mache sich mal den Spaß, da den Preis pro Megabyte auszurechnen!! []