• Online: 903

Tue Jul 08 07:45:28 CEST 2008    |    BlackTM    |    Kommentare (12)    |   Stichworte: PC

Softwaretipps für den täglichen Gebrauch, neue Ideen für angestaubte Problemstellungen.
[more]Weiterlesen.

PortableApps
[bild=1]Ein nettes Projekt, das mir schon seit ein paar Monaten gute Dienste leistet, ist PortableApps.

Ziel von PortableApps ist es eine quasi zu U3 vergleichbare Technik, jedoch mit freier Software zu realisieren. Es geht also darum Anwendungen rein vom USB-Stick aus an einem Rechner betreiben zu können (sofern Wechselmedien benutzt werden dürfen). Einstellungen etc. werden nicht wie üblich auf der Platte des Rechners abgelegt, sondern auf dem USB-Stick. Ganz ohne Spuren läuft das nicht, so führt das Betriebssystem ja eine reguläre Anwendung aus und legt ggf. auch Daten im Swap ab, ebenso wie Logs ggf. die dazu notwendigen Ereignisse festhalten.

Für den PC Junky kommt ab und zu der Zeitpunkt an dem man fremde Rechner benutzt und sich plötzlich die eine oder andere Anwendung herbeiwünscht ohne diese regulär installieren zu wollen. Hier kommt der USB-Stick mit PortableApps ins Spiel. Das Projekt selbst stellt nur das Menü und die Verwaltung zur Verfügung, der echte Nutzen entsteht durch Hinzufügen der portablen Applikationen. Das sind idR leicht modifizierte Versionen der Originalsoftware, jedoch darauf getrimmt weniger Schreib-/Leseoperationen auszuführen und Einstellungen an ihrem Ausführungsort (dem USB-Stick) abzulegen. Man kann aber auch gern reguläre Anwendungen in einen Ordner installieren und testen wie es damit klarkommt.

Für eine wachsende Anzahl gibt es bereits "portable" Versionen, meine Auswahl davon umfasst u.a.:

  • OpenOffice Paket (und zwar komplett!)
  • Notepad++ (toller Editor)
  • Dia (ein schöner, freier Visio-Ersatz)
  • WinDirStat (damit man auch weiss wo Platz verschwendet wird)
  • Freemind (sehr schön um schnell Verbindungen zwischen Ideen zu visualisieren)
  • PNotes (s.u.)
  • Irfanview (keine portable Version, geht also auch)

Wenn euch das interessiert, schauts euch an und probierts aus!

PNotes
[bild=2]Relativ neu auf meinen Systemen, aber jetzt schon als must-have empfunden, ist PNotes. Nachdem eine Installation von Microsoft OneNote aus obskuren Gründen trotz korrektem Key abbricht, machte ich mich auf die Suche nach einem adäquaten Ersatz. Die Möglichkeit in schnellstmöglicher Zeit eine einfache Textnotiz/Liste anzulegen (eine Zettelwirtschaft versuche ich zu vermeiden, wie der Teufel das Weihwasser) wird damit absolut erfüllt. Grafiken und Dokumente einzufügen wären zwar auch nett, aber sie sind nicht unbedingt erforderlich und trotz dem ähnlichen Notizfeature vom Opera-Browser muss dieser eben nicht laufen.

Wirklich mächtig wird PNotes durch Zuweisen einfacher Shortcuts (Tastenkombinationen, z.B. Win+N um eine Notiz einzugeben oder Win+Ctrl+N um alle anzuzeigen/zu schliessen) oder wer es mag auch mit Deadlines. Gegenüber anderen Tools dieser Art hat es eben mehrere Vorteile : läuft offline, ist einfach und nicht zu aufgeblasen, braucht wenig Speicher, skinfähig, ist kostenlos, wenn man es portabel verwendet auch immer dabei (man muss nicht zwangsläufig mehrere Rechner synchronisieren, wenn man Notizen hinzufügt)

Freemind
[bild=3]Trotz des etwas abstrus klingenden Namens ist Freemind eine Anwendung die ich gern verwende. Mit dem sogenannten Mindmap-Prinzip hat man schnell alles was einem zu einem Thema einfällt notiert und miteinander verbunden. Gut, werden jetzt einige sagen, das tut ein Editor auch. Der Vorteil liegt darin das man den Inhalt mit einem Klick bzw. ein paar Tastenanschlägen im Dokument bewegen, verknüpfen und verschiedene Dateien miteinander verbinden kann. Zudem ist es stark hierarchisch aufgebaut, d.h. man ist an eine Folge von Elementen gebunden. Sozusagen ein richtiges Brainstorming-Format um Gedanken festzuhalten und baumförmig zu sortieren und weiterhin auch in bereits bestehende Bäume (Mindmaps) zu integrieren. Auch für Präsentationszwecke ist es halbwegs geeignet.

MfG BlackTM


Wed Jul 02 04:40:06 CEST 2008    |    BlackTM    |    Kommentare (10)    |   Stichworte: Bus, Daten, Fahrzeug, I²C, Protokoll, Spezifikation

Der I²C (Inter-IC Bus) ist ein 1980 von Philips eingeführter Standard. Zur Datenübertragung werden 2 Leitungen und Masse benötigt. Andere Hersteller nennen ihre Version davon aus Markenrechtsgründen TWI (Two Wire Interface). Die Einsatzgebiete sind natürlich überall wo man Daten mithilfe weniger Leitungen aus einfachen Komponenten übertragen möchte. So ist die Produktpalette für I²C sehr vielseitig, von Speicherbausteinen (EEPROM) über Echtzeituhren, Display Treibern bis zum Temperatursensor gibt es so einiges am Halbleitermarkt.

Für weitere Informationen hier [more]weiterlesen.

Der I²C Bus ist ein Master-Slave Bus mit der Möglichkeit mehrere Master an einem Bus zu haben. In der Regel wird der Bus (sofern frei) durch einen Master "gestartet", danach fragt der Master eine Adresse an und der betroffene Slave liest/schreibt die geforderten Daten auf den Bus bzw. in seinen internen Speicher, die übertragenen Daten werden vom Empfänger bestätigt und der Bus wird "gestoppt" oder alternativ wird fortgesetzt. Sollten mehrere Master gleichzeitig eine Anfrage starten wollen, so fährt der Master fort, der die Arbitrierung gewinnt.

Das Protokoll kann recht einfach in Mikrocontrollern implementiert werden. Typische Anwendungen umfassen z.B. im PC (dort der Ableger SMBus) die Temperaturerfassung und -steuerung, Echtzeituhren (RealTimeClock) und die Steuerung von Segmentdisplays. Im automobilen Bereich wird/wurde I²C ebenfalls zur allgemeinen Kommunikation im Infotainmentbereich eingesetzt, wobei diese Bereiche langsam durch CAN oder LIN ersetzt werden (vermutlich aufgrund besserer EMV-Eigenschaften und Kosten).

Die Übertragungsraten sind von anfänglich 100kBit/s über 400kBit/s auf mittlerweile 3,4MBit/s angestiegen. Das stellt jedoch nur das Maximum an einem Bus dar, denn dieser muss sich dem langsamsten Teilnehmer anpassen. Die einzelnen Knoten sind also in der Lage beim Schreiben auf den Bus ihre Geschwindigkeit variabel zu gestalten und müssen keine zeitkritische Datenübertragung gewährleisten, da sie die Übertragung des nächsten Zustands "hinauszögern" können. Damit ist I²C nicht echtzeitfähig, dafür aber recht ressourcenschonend und der internen Verarbeitung von Daten werden keine zeitlichen Limits gesetzt (ausser den für einen Bus vorgesehenen, selbst festgelegten). Man kann natürlich auf die maximale Übertragungsrate kommen, wenn jede beteiligte Komponente die Geschwindigkeit halten kann. Leichte Abweichungen zwischen den Baudraten erzeugen also keine Probleme.

Es gibt 2 Protokollversionen, die erste mit 7 Bit und die zweite mit 10 Bit Adressen. Diese Adressen für Slaves werden vom I²C Gremium vergeben, die letzten 3 Bits sind aber durchaus auch durch den OEM konfigurierbar (ggf. auch programmierbar) um mehrere Busteilnehmer des gleichen Typs an einem Bus betreiben zu können. Bei einem selbstgestalteten Protokoll zwischen Mikrocontrollern (Master + "intelligentere" Slaves) spielt das aber kaum eine Rolle.

Die Länge der in einem "Frame" übertragenen Daten ist quasi unbegrenzt, lediglich Designwünsche wie Reaktionszeit auf z.B. einen Tastendruck oder die Zeit bis Erkennung von Kommunikationsausfällen begrenzt den Zeitbedarf für eine Datenübertragung. Jedes übertragene Datenbyte wird einzeln bestätigt, auf Rückfalltechniken geht die Spezifikation nicht ein, das ist also dem OEM überlassen wie ein Fehler in den Daten zu behandeln ist. Üblicherweise ist wohl eine erneute Übertragung des gesamten Pakets fällig. Höhere Protokollebenen müssen demzufolge auch die Ermittlung von Gültigkeit und Ablehnung von Daten behandeln. Es wäre z.B. möglich nach jedem Schreibbefehl gleich einen Lesebefehl anzuhängen, in dem der Empfänger den Status, eine Checksumme und/oder die geschriebenen Daten zurückgibt, so das diese verglichen werden können.

Wie schon angedeutet besteht I²C aus 2 Leitungen und Masse.
Die zwei Leitungen nennen sich SDA (Data) und SCL (Clock). Der SCL Leitung kommt eine besondere Funktion für die Arbitrierung zu. Die SDA-Leitung darf ihren Status (bis auf die START- und STOP-Kondition) nicht ändern während SCL High ist. Bei beiden Leitungen dominiert der Low-Zustand über den High-Zustand. Je nachdem welcher Knoten Datenbits auf der SDA-Leitung einstellt, hat immer der Empfänger per SCL Vorrang bei der Entscheidung, ob neue Daten gesendet werden dürfen (indem die Leitung noch auf Low gehalten wird, während der Sender sie "released", also auf High gesetzt, hat). Der andere Teilnehmer bemerkt dann bei Zustandswechsel der SCL-Leitung, dass er weitersenden kann.

Es können immer nur zwei Busteilnehmer Daten austauschen und somit auch nur Sender oder Empfänger Daten als ungültig markieren (fehlendes ACK-Bit oder Fehlerbehandlung auf höherer Protokollebene). Eine Gültigkeitsüberwachung durch das gesamte Netzwerk wie bei CAN gibt es somit nicht. Auch wäre I²C anfällig gegen Einstreuungen und zu hohe Kapazität auf den Leitungen, da das Netzwerk durch fest eingebaute Widerstände stabilisiert wird. Eine Obergrenze für Kapazität sind 300pF für ein Subnetzwerk, wodurch die Leitungslänge ohne weitere Massnahmen stark begrenzt ist. Es ist nicht so, das man im Automobilbereich die volle Leitungslänge nutzen wollte oder müsste, diese Angabe lässt allerdings einen Rückschluss auf die Störungssicherheit zu. Übertragungssysteme mit LVDS (Low-Voltage-Differential-Signal) Technologie sind da robuster.

Links
I²C Spezifikation alternativ hier.
Produktübersicht für Logik-ICs

MfG BlackTM