1 Punkte von GN⁺ 2023-09-04 | 1 Kommentare | Auf WhatsApp teilen
  • Die Timex m851 sieht wie eine digitale Uhr für Läufer aus, ist aber eine Ultra-Low-Power-Plattform, die mit nur einer 8-bit Seiko S1C88 CPU und 2 KB RAM Benutzer-Apps ausführt
  • Die seitlichen Pins sind USB, sodass sich Daten wie Termine synchronisieren lassen; mit dem Timex SDK kann man cc helloworld.c bauen und direkt auf die Uhr hochladen
  • Wegen des knappen RAM ist eine WatchApp so aufgebaut, dass Code auf state-Ebene ausgetauscht wird; dazu kommen APIs für gemeinsamen Code, Variablen und persistente Daten
  • Der Kernel übernimmt Low-Level-Aufgaben wie Event-Weitergabe, Timer, Pieptöne, Display-Scrolling, Datenbankzugriff sowie die Steuerung von Krone und Hintergrundbeleuchtung
  • Das Gerät ist zwar eingestellt und schwer zu bekommen, aber dank des Virtual Datalink-Simulators sowie öffentlich verfügbarer Dokumentation und Beispielcodes kann man entwickeln, ohne die echte Uhr ständig zurückzusetzen

Eine Entwicklungsplattform in einer kleinen Uhr

  • Die Timex m851 ist eine digitale Uhr mit 8-bit Seiko S1C88 CPU, 48 KB ROM, 2 KB RAM und einem 42x11-Dot-Matrix-Hauptdisplay
  • Die CPU wurde für Ultra-Low-Power-Betrieb entwickelt und kann mit einer einzigen Batterie drei Jahre lang laufen
  • Die seitlichen Pins sind USB und werden genutzt, um Daten wie Termine mit der Uhr zu synchronisieren
    • Für Linux gibt es die Bibliothek libdlusb
  • Mit dem von Timex bereitgestellten SDK lassen sich Anwendungen mit cc helloworld.c bauen und auf die Uhr hochladen
  • Die Standardwerkzeuge sehen aus wie Assistenten aus der Windows-XP-Ära, intern läuft jedoch eine UNIX-artige Toolchain

WatchApp-Beispiele und bestehendes Ökosystem

  • Das Hello-World-Beispiel und das Makefile finden sich im Repository taviso/timex
  • Für diese Plattform wurden verschiedene WatchApps wie Spiele, Utilities und Tools erstellt

WatchApp-Struktur: state und mode

  • Anwendungen sind in states unterteilt; wenn sich ein state ändert, wird der aktuell aktive Code verworfen und neuer Code geladen
  • Eine App kann bis zu etwa 30 KB Code oder Daten nutzen, hat aber nur rund 2 KB RAM
    • Es gibt kein Paging, und der gesamte Code passt nicht in den RAM, daher ist die state-Struktur nötig
  • Es gibt einen gemeinsamen Codebereich, den alle states zusammen verwenden, sowie einen Variablenbereich und eine Datenbank-API für persistente Daten
  • Einige der vorderen states sind für gemeinsame Event-Verarbeitung reserviert, die übrigen kann die App frei nutzen
  • mode entspricht der Vordergrundanwendung
    • Eine App stellt normalerweise einen mode bereit, kann aber auch Hintergrund- oder periodische Aufgaben hinzufügen
    • Mit coreRequestModeChangeNext(); wird ein mode-Wechsel angefordert, sodass die nächste App die Kontrolle erhält

Event-Verarbeitung und Kernel-Dienste

  • Jeder state benötigt einen Event-Handler
  • Zu den Events gehören das Betreten eines state, das Herausziehen oder Wiedereinsetzen der Krone, das Drehen der Krone, Tastendrücke und Eingaben über die mode-Taste
    • Nicht benötigte Events können ignoriert werden
  • Der Kernel übernimmt die Hardware-Verarbeitung und Event-Dispatching und stellt mehrere Dienste bereit
    • Timer
    • Ton- und Pieperzeugung
    • Display-Scrolling
    • Zugriff auf Datenbankeinträge
    • Kroneneinstellungen
    • Steuerung der Hintergrundbeleuchtung
  • Der Beispielcode nutzt Kernel-Dienste wie lcdClearDisplay() und lcdDispBannerMsg(), um die Banner-Nachricht "hello!" anzuzeigen

Debugging-Umgebung, die Resets reduziert

  • Es gibt keinen Speicherschutz, daher kann eine App Kernel-Speicher überschreiben
  • Der Kernel muss dem Watchdog alle 2 Sekunden mitteilen, dass er noch lebt; bleibt dieses Signal aus, setzt der Watchdog die Uhr zurück
    • Bei aufwendigen Berechnungen muss der Watchdog mit hwResetWatchdog(); aktualisiert werden
  • Virtual Datalink ist ein Open-Source-Simulator eines Drittanbieters
    • Quellcode
    • Nur für Windows und in Delphi geschrieben
    • Bietet bedingte Breakpoints, einen Disassembler, Speicherstände, Ressourcenanalyse und Energieanalyse

Beschaffung des eingestellten Geräts und Referenzdokumente

  • Die Timex m851 wurde schon vor langer Zeit eingestellt und ist immer schwerer zu bekommen
  • Auf eBay ließ sich ein Gerät finden, das nach einem Batteriewechsel wieder wie neu funktionierte
  • Falls kein Kabel vorhanden ist, kann man sich den Standard-USB-Type-A-Pinout und den ungewöhnlichen Stecker zunutze machen und ein altes USB-Kabel mit Krokodilklemmen verwenden
  • Die Timex T5G751 nutzt denselben Stecker und ist relativ leicht zu finden, sodass sie zur Kabelbeschaffung dienen kann
  • Eine m851-Variante namens „dress edition“ hat die gleichen Spezifikationen, aber ein anderes Gehäuse, und wird teils unter anderen Modellnummern angeboten
  • Referenzdokumente
    • Design Guide: Das wichtigste Dokument und gut geschrieben
    • CPU manual: CPU-Handbuch
    • Toolchain-Handbuch
    • API reference: Enthält eine Liste der vom Kernel bereitgestellten Dienste

1 Kommentare

 
GN⁺ 2023-09-04
Meinungen auf Hacker News
  • Einer der fast magischen Aspekte ist, dass der Epson-SoC (PN S1C88349) absurd stromsparend ist: Im 32-kHz-Low-Power-Modus verbraucht er gerade einmal 9 Mikroampere
    Das lässt einen darüber nachdenken, wie viel man mit einem Budget von 32.000 Zyklen pro Sekunde schaffen kann
    Außerdem stecken darin 48K ROM, 2K RAM, drei Timer, UART und sogar ein A/D-Wandler
    [1] https://global.epson.com/products_and_drivers/semicon/pdf/id...

    • Es mag überraschen, dass es solche ultra-stromsparenden 8-Bit-Bauteile schon seit etwa 30 Jahren gibt
      Seiko-Epson-Chips wurden zusammen mit EM-Swatch- und OKI-Casio-Chips in Uhren, Taschenrechnern, Fieberthermometern und günstigen stromsparenden Segment-LCD-Geräten eingesetzt, die mit einer einzigen Knopfzelle jahrelang laufen mussten
      Auch mehr als 15 Jahre alte Taschenrechner und digitale Fieberthermometer nutzen solche Seiko-Epson-Chips und laufen immer noch mit der ursprünglich eingelegten 1,5-V-Knopfzelle. Wenn man die natürliche Selbstentladung von Lithiumbatterien über die Zeit bedenkt, ist das ziemlich erstaunlich
    • Moderne Systeme, ob SoCs, Betriebssysteme oder Apps, haben ein enormes Maß an Bloat und Komplexität erreicht
      Die Binärdateien vieler heutiger Mobile-Apps sind größer als frühere Betriebssysteme und ganze Anwendungen, die äußerst nützliche Arbeit leisteten
      Es ist beängstigend, wohin diese Entwicklung führen wird, und es scheint unwahrscheinlich, dass irgendjemand oder irgendetwas sie bremsen wird
    • Aktuelle TMS430 haben Ultra-Low-Power-Modi, und man kann auch externe Ultra-Low-Power-RTCs verwenden
      Soweit ich mich erinnere, lag das nominell unter 100 nA, sogar inklusive Dingen wie Leckstrom des Einschalters, und das ist wirklich beeindruckend
    • Der E0C6S46 treibt bis heute die Tamagotchi der ersten und zweiten Generation an
      Ein 4-Bit(!)-32-kHz-Mikrocontroller mit 6.144 Wörtern 12-Bit(‼)-ROM, internem 4-Bit-RAM mit 640 Wörtern und einem 4-Bit-Framebuffer mit 160 Wörtern für den integrierten LCD-Treiber. Sogar Double Buffering ist möglich
      Ein wirklich schöner Chip. Vor etwa einem Jahr habe ich einen TypeScript-Emulator gebaut, ihn aber noch nicht auf GitHub gestellt. Bei Interesse kann ich ihn hochladen; er kann auch unveränderte Tamagotchi-Firmware ausführen
    • Die Bezeichnung ROM hat mich verwirrt. Ich dachte, das bedeute eigentlich etwas, das man nicht ändern kann, aber in der Dokumentation steht, dass veränderbare Daten dort hinein- und wieder herausgeschrieben werden
      Tatsächlich ist es EEPROM und ähnelt wohl ein wenig Flash-Speicher
  • Wenn man etwas mit ein paar mehr Funktionen möchte, ist Bangle.js ebenfalls einen Blick wert
    Vorteile sind Bluetooth, GPS, Beschleunigungssensor, Vibrationsmotor und ein Farbdisplay. Der Nachteil ist, dass der Akku deutlich kürzer als drei Jahre hält
    [0] https://banglejs.com/

    • Für alle, die es interessiert: Die Akkulaufzeit der Bangle wird mit 4 Wochen angegeben
      Mit „auch bei Sonnenlicht ablesbarem Always-on-Display, 4 Wochen Akkulaufzeit, vollständiger Flexibilität und vollständiger Kontrolle über die eigenen Daten“ wird die Bangle.js 2 als Alternative zu teuren Smartwatches vorgestellt
  • Vor etwa 15 Jahren hatte ich diese Uhr und konnte damit allerlei Dinge speichern
    Ich hatte Dinge wie den Ort der nächsten Unterrichtsstunde, Busfahrpläne für häufig genutzte Haltestellen und Mondphasen darauf abgelegt
    Vor dem Smartphone-Zeitalter mit der Armbanduhr den Busfahrplan nachzusehen, sah aus wie bei James Bond :)
    Ich wünschte, solche Uhren würden immer noch gebaut. Bei diesem Stromverbrauch könnte man sie mit Solarenergie vermutlich praktisch dauerhaft nachladen und nutzen

    • Fairerweise: Das erste iPhone kam vor 16 Jahren heraus, und Smartphones, auf denen man Busfahrpläne speichern konnte, gab es auch schon davor
      Vor mehr als 20 Jahren habe ich auf einem Siemens-Handy Busfahrpläne als SMS-Entwürfe gespeichert
  • Ein modernerer Ansatz für eine hackbare Uhr könnte das hier sein
    https://github.com/sharandac/My-TTGO-Watch
    Ich bin darauf gestoßen, als ich recherchierte, wie man mit einem LILYGO-T5-E-Paper-Entwicklungsboard einen DIY-iPod Nano 7G bauen könnte
    Produkt: https://www.aliexpress.com/item/1005002474854718.html
    Code-Repository: https://github.com/Xinyuan-LilyGO/LilyGo-T5-Epaper-Series
    Wenn ich auf der Arduino-Seite mehr Zeit und Können gehabt hätte, hätte das wohl ein hervorragender iPod-Nano-7G-Ersatz werden können ;)

    • Ich habe ein paar von diesen Dingern, und die Akkulaufzeit ist ziemlich mies
      Der Standardcode funktionierte kaum richtig, und selbst wenn das Gerät nichts tat, hielt der Akku etwa 12 Stunden. Für Leute, die gern fremden Code debuggen, ist es für den Preis allerdings tatsächlich ein erstaunliches Gerät
      Ich habe ein paar fehlende Teile ergänzt und Einstellungen gefunden, die den Stromverbrauch senken, sodass es bei „normaler“ Nutzung etwa 6 Stunden durchhält
      Der aktuelle Code ist vermutlich deutlich besser, aber das Energiebudget liegt viel näher an Smartwatches von Apple oder Samsung als an der ultra-stromsparenden m851 im Stil der 80er
      Wenn man gern experimentiert, ist es ein nettes kleines Projekt und sein Geld wert. Wer etwas erwartet, das mit der iWatch konkurriert, wird wahrscheinlich enttäuscht sein
  • Wenn „3 Jahre mit einer Batterie“ ein großer Vorteil ist, stellt Casio so etwas definitiv immer noch her
    Einfach nach „Casio MIP display“ suchen

  • Weitere Informationen zur Timex-Datalink-Serie gibt es hier
    https://en.m.wikipedia.org/wiki/Timex_Datalink

    • Ironischerweise wirken die älteren Modelle mit optischem Empfänger viel futuristischer als die späteren USB-Modelle
    • Ich frage mich, warum die Synchronisierung nur mit CRTs funktionierte und nicht mit LCDs
      Ließe sich das mit einem modernen IPS-LCD nachbilden?
  • Ich wünschte, mehr Uhren und Wearables würden mit solchen stromsparenden 8-Bit-Chips gebaut und wären über freiliegende Daten-Pins hackbar.
    Bei einer Uhr ist eine Batterielaufzeit von drei Jahren entscheidend. Wenn ich mir Gedanken darüber machen muss, eine Uhr aufzuladen, ist sie für mich raus.

    • Ich kaufe weiterhin günstige mechanische Uhren mit Handaufzug und Swatch-Uhren auf eBay.
      Meine aktuelle Swatch hält mit derselben Batterie seit etwa einem Jahr zuverlässig die Zeit. Das Problem bei günstigen mechanischen Uhren ist, dass man sie überdrehen kann, wenn man nicht aufpasst. Deshalb mache ich alle paar Jahre eine kaputt, aber sie sind ja ohnehin billig.
      Das Tolle an beiden Uhren ist, dass man sie nicht jeden Tag laden muss. Natürlich muss man die mechanische Uhr aufziehen.
  • Es erinnert einen daran, dass wir tatsächlich gute Dinge haben könnten. Wenn es nur einen Markt dafür gäbe.
    Ich hätte gern eine gut integrierte Uhr mit niedrigem Batterieverbrauch, geringem Aufwand beim Tragen oder Austauschen und einem Design, das auch überzeugt.
    Schade, dass das Beste, was wir derzeit haben, Sensorwatch [1] ist.
    [1] https://www.sensorwatch.net
    Edit: Sensorwatch ist großartig, aber noch kein Ökosystem.

    • Sieht ziemlich vielversprechend aus; was kann man mit diesem Board alles machen?
      Ich frage mich, was man mit dem Board überhaupt machen wollen würde.
  • Sieht noch einfacher aus als TI's Ez430-chronos und wirkt ganz gut.
    Allerdings erscheinen drei Jahre mit einer einzigen Batterie nicht besonders beeindruckend. Hängt natürlich davon ab, welche Apps man nutzt und aufspielt, und dass sie programmierbar ist, ist cool.
    [0] https://www.sparkfun.com/products/retired/10019

    • Batterielaufzeit scheint relativ zu sein.
      2018 habe ich eine Casio F91 verloren; letzte Woche habe ich sie beim Packen für eine Kanutour wiedergefunden. Uhrzeit und Datum wichen nur um ein paar Sekunden von der Casio F91 ab, die ich am Handgelenk trug.
    • Kann man chronos noch kaufen?
      Ich hatte früher mal eine, aber sie ist bei einem Umzug verschwunden. Ich würde gern wieder damit herumspielen.
      Edit: Ach, du hast ja einen Link eingefügt, bei dem in der Produktliste „RETIRED“ steht. Bei einem TI-Produkt wäre es allerdings auch seltsam, wenn TI es nicht genau dann einstellen würde, wenn der Markt gerade anfängt, darauf zu reagieren.