1 पॉइंट द्वारा GN⁺ 2023-09-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Timex m851 दिखने में रनर्स के लिए बनी डिजिटल घड़ी जैसा है, लेकिन सिर्फ 8-bit Seiko S1C88 CPU और 2KB RAM के साथ यूज़र ऐप्स चलाने वाला एक अल्ट्रा-लो-पावर प्लेटफ़ॉर्म है
  • साइड के पिन USB हैं, इसलिए अपॉइंटमेंट जैसी डेटा चीज़ों को sync किया जा सकता है, और Timex SDK से cc helloworld.c build करके सीधे घड़ी पर upload किया जा सकता है
  • सीमित RAM की वजह से WatchApp की संरचना ऐसी है कि code state-स्तर पर replace होता है, और इसके साथ shared code, variables और persistent data के लिए API भी उपयोग होते हैं
  • kernel event delivery, timer, beep, display scroll, database access, crown और backlight control जैसे low-level काम संभालता है
  • यह discontinued डिवाइस है इसलिए इसे पाना मुश्किल है, लेकिन Virtual Datalink simulator और public docs व example code की मदद से हर बार असली घड़ी reset किए बिना development किया जा सकता है

छोटी घड़ी के अंदर एक development platform

  • Timex m851 एक digital watch है जिसमें 8-bit Seiko S1C88 CPU, 48KB ROM, 2KB RAM और 42x11 dot-matrix main display है
  • CPU को अल्ट्रा-लो-पावर ऑपरेशन के लिए डिज़ाइन किया गया है, इसलिए यह एक ही battery पर 3 साल तक चल सकता है
  • साइड के पिन USB हैं, और इनका उपयोग अपॉइंटमेंट जैसी data को घड़ी के साथ sync करने में होता है
    • Linux के लिए libdlusb library उपलब्ध है
  • Timex द्वारा दिए गए SDK का उपयोग करके cc helloworld.c से application build कर घड़ी पर upload किया जा सकता है
  • डिफ़ॉल्ट tools भले ही Windows XP दौर के wizard जैसे दिखते हों, लेकिन अंदर UNIX-शैली toolchain चलता है

WatchApp examples और मौजूदा ecosystem

  • hello world example और Makefile को taviso/timex repository में देखा जा सकता है
  • इस platform के लिए games, utilities और tools जैसे कई WatchApp बनाए गए थे

WatchApp architecture: state और mode

  • application को state में बाँटा जाता है, और state बदलने पर मौजूदा active code हट जाता है और नया code लोड होता है
  • app लगभग 30KB तक code या data इस्तेमाल कर सकता है, लेकिन RAM सिर्फ लगभग 2KB है
    • paging नहीं है, और पूरा code RAM में नहीं रखा जा सकता, इसलिए state structure ज़रूरी है
  • एक shared code space है जिसे सभी state साथ इस्तेमाल करते हैं, और variable space व persistent data के लिए database API भी उपलब्ध है
  • शुरुआती कुछ state common event handling के लिए reserved हैं, और बाकी को app अपनी ज़रूरत के हिसाब से इस्तेमाल कर सकता है
  • mode सामने दिखने वाले application के बराबर है
    • app आमतौर पर mode देता है, लेकिन background tasks या periodic tasks भी जोड़े जा सकते हैं
    • coreRequestModeChangeNext(); से mode switch का request करने पर अगला app control ले लेता है

Event handling और kernel services

  • हर state के लिए event handler ज़रूरी होता है
  • events में state entry, crown को बाहर खींचना या वापस दबाना, crown rotation, button press और mode button input शामिल हैं
    • जिन events की ज़रूरत न हो उन्हें ignore किया जा सकता है
  • kernel hardware handling और event dispatch संभालता है और कई services देता है
    • timer
    • tone और beep generation
    • display scroll
    • database record access
    • crown settings
    • backlight control
  • example code lcdClearDisplay() और lcdDispBannerMsg() जैसी kernel services का उपयोग करके "hello!" banner message दिखाता है

ऐसा debugging environment जो resets कम करता है

  • memory protection नहीं है, इसलिए app kernel memory को overwrite कर सकता है
  • kernel को हर 2 सेकंड में watchdog को बताना पड़ता है कि वह जीवित है, नहीं तो watchdog घड़ी reset कर देता है
    • भारी computation करते समय hwResetWatchdog(); से watchdog refresh करना होता है
  • Virtual Datalink एक open source third-party simulator है
    • source
    • यह सिर्फ Windows के लिए है और Delphi में लिखा गया है
    • यह conditional breakpoints, disassembler, save states, resource analysis और power analysis देता है

Discontinued device हासिल करना और reference docs

  • Timex m851 बहुत पहले discontinued हो चुका है और इसे पाना लगातार मुश्किल होता जा रहा है
  • eBay पर ऐसे डिवाइस मिल सकते थे जिनमें सिर्फ battery बदलने से वे नए जैसे काम करने लगें
  • अगर cable न हो, तो standard USB Type-A pinout और एक unusual connector का फायदा उठाकर पुरानी USB cable और alligator clips इस्तेमाल किए जा सकते हैं
  • Timex T5G751 भी वही connector इस्तेमाल करता है, और यह अपेक्षाकृत आसानी से मिल जाता है, इसलिए cable हासिल करने के लिए इसका उपयोग किया जा सकता है
  • “dress edition” नाम का m851 variant वही specs रखता है लेकिन body अलग होती है, और कभी-कभी अलग model number से लिस्ट होता है
  • reference docs
    • Design Guide: सबसे महत्वपूर्ण दस्तावेज़, और अच्छी तरह लिखा गया है
    • CPU manual: CPU मैनुअल
    • toolchain manual
    • API reference: kernel द्वारा दी जाने वाली services की सूची शामिल है

1 टिप्पणियां

 
GN⁺ 2023-09-04
Hacker News की राय
  • जादुई बातों में से एक यह है कि Epson SoC(PN S1C88349) अविश्वसनीय रूप से power-efficient है: 32kHz low-power mode में चलते समय इसकी current consumption सिर्फ 9 माइक्रोएम्पियर है
    यह सोचने पर मजबूर करता है कि प्रति सेकंड 32,000 cycle के budget में कितना कुछ किया जा सकता है
    ऊपर से इसमें 48K ROM, 2K RAM, 3 timer, UART और A/D converter भी हैं
    [1] https://global.epson.com/products_and_drivers/semicon/pdf/id...

    • आपको यह जानकर हैरानी हो सकती है कि ऐसे ultra-low-power 8-bit parts करीब 30 साल पहले से ही मौजूद थे
      Seiko-Epson chip, EM-Swatch और OKI-Casio chip के साथ, घड़ियों, calculators, thermometers और सस्ते low-power segment LCD devices में इस्तेमाल होते थे, जिन्हें एक button cell battery पर सालों तक चलना होता था
      15 साल से ज्यादा पुराने calculator और digital thermometer भी ऐसे Seiko-Epson chip इस्तेमाल करते हैं, और अभी भी उनमें शुरू से लगी 1.5V button cell battery पर चलते हैं। lithium battery के समय के साथ natural self-discharge को देखते हुए यह काफी चौंकाने वाला है
    • आधुनिक systems में, चाहे SoC हो, operating system हो या app, bloat और complexity जबरदस्त स्तर पर हैं
      आजकल कई mobile apps का binary size अतीत के पूरे operating systems और applications से बड़ा होता है, जबकि वे बहुत उपयोगी काम करते थे
      यह trend कहां जाएगा, यह डराता है, और लगता नहीं कि कोई व्यक्ति या कोई चीज इस पर ब्रेक लगाएगी
    • नए TMS430 में ultra-low-power modes हैं, और external ultra-low-power RTC भी इस्तेमाल किया जा सकता है
      याद है कि power switch leakage जैसी चीजें शामिल करने पर भी nominally 100nA से कम था, और सचमुच कमाल का स्तर है
    • E0C6S46 आज भी पहली और दूसरी generation के Tamagotchi को चलाता है
      4-bit(!) 32KHz microcontroller में 12-bit(‼) ROM के 6,144 words, internal 4-bit RAM के 640 words, और integrated LCD driver के लिए 4-bit frame buffer के 160 words हैं। double buffering तक संभव है
      सचमुच खूबसूरत chip है। करीब एक साल पहले मैंने TypeScript emulator बनाया था, लेकिन अभी GitHub पर नहीं डाला। अगर रुचि हो तो डाल सकता हूं, और यह unmodified Tamagotchi firmware भी चला सकता है
    • ROM शब्द से भ्रम हुआ। मुझे लगा था इसका मतलब मूल रूप से ऐसी चीज है जिसे बदला नहीं जा सकता, लेकिन documentation में लिखा है कि editable data को उसमें डाला और निकाला जाता है
      असल में यह EEPROM है, और कुछ हद तक Flash memory जैसा लगता है
  • अगर आपको थोड़े ज्यादा features चाहिए, तो Bangle.js भी देखने लायक है
    इसमें Bluetooth, GPS, accelerometer, vibration motor और color screen होने का फायदा है। नुकसान यह है कि battery 3 साल से काफी कम चलती है
    [0] https://banglejs.com/

    • जिन्हें जिज्ञासा हो, उनके लिए बता दूं कि Bangle की battery life 4 सप्ताह बताई गई है
      “sunlight में भी readable always-on screen, 4-week battery life, पूरी flexibility, और अपने data पर पूरा control” को highlight करते हुए Bangle.js 2 को महंगी smartwatches से अलग एक alternative बताया गया है
  • करीब 15 साल पहले मेरे पास यह घड़ी थी, और मैं इसमें कई चीजें रिकॉर्ड कर सकता था
    अगली class कहां है, अक्सर इस्तेमाल होने वाले stops के bus timetables, चंद्रमा की कलाएं जैसी चीजें इसमें डाल रखी थीं
    smartphones से पहले wristwatch पर bus timetable देखना James Bond जैसा लगता था :)
    काश ऐसी घड़ियां अभी भी बनतीं। इस level की power consumption के साथ, solar से इसे लगभग लगातार charge करते हुए इस्तेमाल किया जा सकता है

    • निष्पक्ष रूप से कहें तो पहला iPhone 16 साल पहले आया था, और bus timetable store कर सकने वाले smartphones उससे पहले भी थे
      20 साल से भी ज्यादा पहले मैं Siemens phone में bus timetable को SMS draft के रूप में save करके रखता था
  • hackable watch के लिए एक ज्यादा modern approach यह हो सकती है
    https://github.com/sharandac/My-TTGO-Watch
    LILYGO T5 E-Paper development board से DIY iPod Nano 7G बनाने की कोशिश में research करते समय यह मिला
    Product: https://www.aliexpress.com/item/1005002474854718.html
    code repository: https://github.com/Xinyuan-LilyGO/LilyGo-T5-Epaper-Series
    अगर मेरे पास Arduino side पर ज्यादा समय और skills होते, तो यह एक शानदार iPod Nano 7G replacement बन सकता था ;)

    • मेरे पास इनमें से कुछ हैं, और battery life काफी खराब है
      default code लगभग ठीक से काम नहीं करता था, और कुछ न करने पर भी battery करीब 12 घंटे चलती थी। हालांकि जो लोग दूसरों का code debug करना enjoy करते हैं, उनके लिए कीमत के हिसाब से यह वाकई कमाल की चीज है
      missing हिस्सों को थोड़ा भरा और power consumption घटाने वाली settings ढूंढीं, जिससे “normal” use में करीब 6 घंटे चलने लगा
      अब code काफी बेहतर हो गया होगा, लेकिन power budget 80s-style ultra-low-power m851 की तुलना में Apple या Samsung smartwatch के कहीं ज्यादा करीब होगा
      अगर आपको experiments पसंद हैं तो यह मजेदार छोटा project है और पैसे के लायक है। अगर iWatch से मुकाबला करने वाली चीज की उम्मीद करेंगे तो शायद निराशा होगी
  • अगर “एक battery पर 3 साल चलती है” बड़ी खासियत है, तो Casio निश्चित रूप से अभी भी ऐसी चीजें बनाता है
    “Casio MIP display” खोजकर देखें

  • Timex Datalink series के बारे में अतिरिक्त जानकारी यहां है
    https://en.m.wikipedia.org/wiki/Timex_Datalink

    • विडंबना यह है कि बाद के USB models की तुलना में optical receiver वाले पुराने models कहीं ज्यादा advanced technology जैसे लगते हैं
    • यह जानने की जिज्ञासा है कि sync सिर्फ CRT से ही क्यों हो सकता था, LCD से क्यों नहीं
      क्या इसे modern IPS LCD से भी reproduce किया जा सकता है?
  • काश और ज़्यादा घड़ियाँ और wearable ऐसे 8-bit low-power chip से बनें, और data pins exposed हों ताकि उन्हें hack किया जा सके
    घड़ी के लिए 3 साल की battery life ही मुख्य बात है। अगर मुझे घड़ी charge करने की चिंता करनी पड़े, तो मेरे लिए वह बाहर है

    • eBay पर सस्ती mechanical wind-up watches और Swatch लगातार खरीद रहा हूँ
      अभी जो Swatch इस्तेमाल कर रहा हूँ, वह उसी battery पर लगभग 1 साल से समय लगातार सही दिखा रही है। सस्ती mechanical watches की दिक्कत यह है कि अगर सावधान न रहें तो spring को ज़रूरत से ज़्यादा wind कर सकते हैं। इसलिए हर कुछ साल में एक खराब कर देता हूँ, लेकिन वैसे भी वे सस्ती हैं
      दोनों घड़ियों की अच्छी बात यह है कि उन्हें रोज़ charge करने की ज़रूरत नहीं होती। बेशक wind-up watch में spring wind करनी पड़ती है
  • यह फिर याद दिलाता है कि हमारे पास सच में अच्छी चीज़ें हो सकती हैं। बस ऐसी चीज़ों के लिए market होना चाहिए
    काश ऐसी अच्छी तरह integrated घड़ी हो जिसकी battery usage कम हो, जिसे पहनने या replace करने का झंझट भी कम हो, और design के लिहाज़ से भी समझ में आए
    अफ़सोस है कि अभी हम जो सबसे अच्छा कर सकते हैं, वह Sensorwatch [1] है
    [1] https://www.sensorwatch.net
    संपादन: Sensorwatch शानदार है, लेकिन अभी ecosystem नहीं है

    • काफ़ी promising लग रहा है, उस board से क्या-क्या किया जा सकता है?
      जानना चाहता हूँ कि board के साथ क्या करने का मन हो सकता है
  • TI के Ez430-chronos से भी ज़्यादा simple और अच्छा लगता है
    हालांकि एक cell पर 3 साल इतना शानदार नहीं लगता। ज़ाहिर है यह इस पर निर्भर करेगा कि कौन-सा app इस्तेमाल और upload करते हैं, और programmable होना cool है
    [0] https://www.sparkfun.com/products/retired/10019

    • battery life शायद relative चीज़ है
      2018 में मैंने एक Casio F91 खो दी थी, और पिछले हफ़्ते canoe trip की packing करते समय मिल गई। उसका time और date मेरी कलाई पर बंधी Casio F91 से बस कुछ seconds ही अलग था
    • क्या chronos अभी भी खरीदी जा सकती है?
      पहले एक खरीदी थी, लेकिन घर बदलते समय गायब हो गई। फिर से उसके साथ खेलना चाहता हूँ
      संपादन: ओह, तुमने तो product listing में “RETIRED” लिखे link को ही डाल रखा है। TI product हो तो market response आने लगते ही TI उसे बंद न करे, यह अजीब ही होगा