1 puan yazan GN⁺ 2023-09-04 | 1 yorum | WhatsApp'ta paylaş
  • Timex m851, koşucular için bir dijital saat gibi görünse de, yalnızca 8-bit Seiko S1C88 CPU ve 2KB RAM ile kullanıcı uygulamaları çalıştıran ultra düşük güç tüketimli bir platformdur
  • Yandaki pinler USB’dir; randevu gibi veriler senkronize edilebilir ve Timex SDK ile cc helloworld.c derlenip doğrudan saate yüklenebilir
  • WatchApp, sınırlı RAM nedeniyle kodun state birimleri halinde değiştirildiği bir yapıya sahiptir ve ortak kod, değişkenler ve kalıcı veriler için API’leri birlikte kullanır
  • Çekirdek; olay iletimi, zamanlayıcılar, bip sesleri, ekran kaydırma, veritabanı erişimi ve crown ile arka aydınlatma kontrolü gibi düşük seviyeli işleri üstlenir
  • Üretimi durmuş bir cihaz olduğu için edinmesi zordur; ancak Virtual Datalink simülatörü ile açık belgeler ve örnek kodlar sayesinde gerçek saati her seferinde sıfırlamadan geliştirme yapılabilir

Küçük bir saatin içindeki geliştirme platformu

  • Timex m851, 8-bit Seiko S1C88 CPU, 48KB ROM, 2KB RAM ve 42x11 nokta matrisli ana ekranı olan bir dijital saattir
  • CPU, ultra düşük güç tüketimiyle çalışma hedefiyle tasarlanmıştır ve tek bir pille 3 yıl çalışabilir
  • Yandaki pinler USB’dir ve randevu gibi verileri saatle senkronize etmek için kullanılır
    • Linux için libdlusb adlı bir kütüphane vardır
  • Timex’in sunduğu SDK kullanılarak cc helloworld.c ile uygulama derlenip saate yüklenebilir
  • Varsayılan araçlar Windows XP döneminin sihirbaz tarzında olsa da, içeride UNIX benzeri bir araç zinciri çalışır

WatchApp örnekleri ve mevcut ekosistem

  • hello world örneği ve Makefile, taviso/timex deposunda görülebilir
  • Bu platform için oyunlar, yardımcı programlar ve araçlar gibi çeşitli WatchApp’ler geliştirilmiştir

WatchApp yapısı: state ve mode

  • Uygulamalar state’lere bölünür; state değiştiğinde o anda etkin olan kod atılır ve yeni kod yüklenir
  • Uygulama en fazla yaklaşık 30KB kod veya veri kullanabilir, ancak RAM yalnızca yaklaşık 2KB’dir
    • Sayfalama yoktur ve tüm kod RAM’e sığmadığı için state yapısı gereklidir
  • Tüm state’lerin birlikte kullandığı ortak bir kod alanı vardır; ayrıca değişken alanı ve kalıcı veriler için bir veritabanı API’si sağlanır
  • Baştaki bazı state’ler ortak olay işleme için ayrılmıştır, geri kalanı ise uygulamanın istediği amaçla kullanılabilir
  • mode, ön plandaki uygulamaya karşılık gelir
    • Uygulamalar genelde bir mode sunar, ancak arka plan işleri veya periyodik işler de ekleyebilir
    • coreRequestModeChangeNext(); ile mode değişimi istendiğinde kontrol bir sonraki uygulamaya geçer

Olay işleme ve çekirdek servisleri

  • Her state için bir olay işleyicisi gerekir
  • Olaylar arasında state’e giriş, crown’un çekilmesi veya geri itilmesi, crown’un döndürülmesi, düğme basımları ve mode düğmesi girişleri bulunur
    • Gerekmeyen olaylar yok sayılabilir
  • Çekirdek, donanım işlemlerini ve olay dağıtımını üstlenir ve çeşitli servisler sağlar
    • zamanlayıcılar
    • ton ve bip üretimi
    • ekran kaydırma
    • veritabanı kayıtlarına erişim
    • crown ayarları
    • arka aydınlatma kontrolü
  • Örnek kod, lcdClearDisplay() ve lcdDispBannerMsg() gibi çekirdek servislerini kullanarak "hello!" afiş mesajını gösterir

Sıfırlamayı azaltan hata ayıklama ortamı

  • Bellek koruması yoktur; uygulama çekirdek belleğinin üzerine yazabilir
  • Çekirdek, her 2 saniyede bir watchdog’a hâlâ çalıştığını bildirmelidir; bildirim gelmezse watchdog saati sıfırlar
    • Ağır hesaplamalar yapılırken hwResetWatchdog(); ile watchdog yenilenmelidir
  • Virtual Datalink, açık kaynaklı bir üçüncü taraf simülatördür
    • kaynak kodu
    • Yalnızca Windows’ta çalışır ve Delphi ile yazılmıştır
    • Koşullu kesme noktaları, disassembler, kayıtlı durumlar, kaynak analizi ve güç analizi sunar

Üretimi durmuş cihazı edinme ve referans belgeler

  • Timex m851’in üretimi uzun zaman önce durdu ve giderek bulunması zorlaşıyor
  • eBay’de yalnızca pili değiştirilerek yeni gibi kullanılabilecek cihazlar bulunabiliyordu
  • Kablo yoksa, standart USB Type-A pin dizilimi ile sıra dışı konektör yapısından yararlanarak eski bir USB kablosu ve krokodil klipsler kullanılabilir
  • Timex T5G751 de aynı konektörü kullanır; nispeten daha kolay bulunduğu için kablo edinmek amacıyla değerlendirilebilir
  • “dress edition” adlı m851 varyantı, aynı teknik özelliklere sahip farklı bir gövdeye sahiptir ve bazen farklı model numarasıyla listelenebilir
  • Referans belgeler
    • Design Guide: en önemli belgedir ve iyi yazılmıştır
    • CPU manual: CPU kılavuzu
    • araç zinciri kılavuzu
    • API reference: çekirdeğin sunduğu servislerin listesini içerir

1 yorum

 
GN⁺ 2023-09-04
Hacker News yorumları
  • Sihirli taraflarından biri, Epson SoC(PN S1C88349)'ın inanılmaz derecede düşük güç tüketimli olması: 32kHz düşük güç modunda çalışırken çektiği akım yalnızca 9 mikroamper
    Saniyede 32.000 çevrimlik bir bütçeyle ne kadar çok iş yapılabileceğini düşündürüyor
    Üstelik 48K ROM, 2K RAM, 3 zamanlayıcı, UART ve A/D dönüştürücü de içeriyor
    [1] https://global.epson.com/products_and_drivers/semicon/pdf/id...

    • Böyle ultra düşük güç tüketimli 8 bit parçaların yaklaşık 30 yıl öncesinden beri var olduğunu öğrenince şaşırabilirsiniz
      Seiko-Epson çipleri, EM-Swatch ve OKI-Casio çipleriyle birlikte saatlerde, hesap makinelerinde, termometrelerde ve ucuz, düşük güçlü segment LCD cihazlarda kullanılıyordu; tek bir düğme pille yıllarca çalışmaları gerekiyordu
      15 yıldan eski hesap makineleri ve dijital termometreler de bu Seiko-Epson çiplerini kullanıyor ve hâlâ içlerine ilk takılan 1,5V düğme pille çalışıyor. Lityum pillerin zamanla doğal deşarjını düşününce bu oldukça şaşırtıcı
    • Modern sistemlerde, ister SoC olsun ister işletim sistemi ister uygulama, şişkinlik ve karmaşıklık inanılmaz seviyede
      Bugün birçok mobil uygulamanın ikili dosya boyutu, geçmişte çok faydalı işler yapan işletim sistemleri ve uygulamaların tamamından daha büyük
      Bu gidişatın nereye varacağı korkutucu ve birinin ya da bir şeyin frene basma ihtimali de düşük görünüyor
    • Güncel TMS430'larda ultra düşük güç modları var ve harici ultra düşük güç tüketimli RTC de kullanılabiliyor
      Hatırladığım kadarıyla güç anahtarı sızıntısı gibi şeyler dahil nominal olarak 100nA'nın altındaydı; gerçekten etkileyici bir seviye
    • E0C6S46 hâlâ 1. ve 2. nesil Tamagotchi'leri çalıştırıyor
      4 bit(!) 32KHz mikrodenetleyicide 12 bit(‼) ROM'dan 6.144 word, dahili 4 bit RAM'den 640 word ve entegre LCD sürücü için 4 bit framebuffer'dan 160 word bulunuyor. Çift tamponlama bile mümkün
      Gerçekten güzel bir çip. Yaklaşık bir yıl önce TypeScript emülatörü yaptım ama henüz GitHub'a koymadım. İlgilenen olursa yükleyebilirim; değiştirilmemiş Tamagotchi firmware'ini de çalıştırabiliyor
    • ROM ifadesi kafamı karıştırdı. Başta değiştirilemeyen şey anlamına geldiğini sanmıştım, ama belgede değiştirilebilir verilerin oraya konup çıkarıldığından bahsediliyor
      Gerçekte EEPROM ve Flash belleğe biraz benziyor gibi
  • Biraz daha fazla özellik istiyorsanız Bangle.js de bakmaya değer
    Bluetooth, GPS, ivmeölçer, titreşim motoru ve renkli ekranı olması avantaj. Dezavantajı ise pilinin 3 yıldan çok daha kısa gitmesi
    [0] https://banglejs.com/

    • Merak edenler için, Bangle'ın pil ömrü 4 hafta olarak belirtiliyor
      “Güneş ışığında okunabilen sürekli açık ekran, 4 hafta pil ömrü, tam esneklik, verileriniz üzerinde tam kontrol” vaatleriyle Bangle.js 2, pahalı akıllı saatlere alternatif olarak tanıtılıyor
  • Yaklaşık 15 yıl önce bu saatten bende vardı ve pek çok şeyi kaydedebiliyordum
    Sonraki dersin yeri, sık kullandığım durakların otobüs tarifeleri, ayın evreleri gibi şeyleri içine koyardım
    Akıllı telefonlardan önce otobüs tarifesine kol saatinden bakmak James Bond gibi görünüyordu :)
    Keşke hâlâ böyle saatler üretseler. Bu düzeyde güç tüketimiyle güneş enerjisiyle fiilen sürekli şarj ederek kullanılabilir gibi duruyor

    • Adil olmak gerekirse ilk iPhone 16 yıl önce çıktı ve otobüs tarifesi saklayabilen akıllı telefonlar ondan önce de vardı
      20 yıldan da önce Siemens telefonumda otobüs tarifelerini SMS taslağı olarak saklardım
  • Hacklenebilir saatlere daha modern bir yaklaşım olarak şu olabilir
    https://github.com/sharandac/My-TTGO-Watch
    LILYGO T5 E-Paper geliştirme kartıyla DIY bir iPod Nano 7G yapmayı araştırırken buldum
    Ürün: https://www.aliexpress.com/item/1005002474854718.html
    Kod deposu: https://github.com/Xinyuan-LilyGO/LilyGo-T5-Epaper-Series
    Arduino tarafında daha fazla zamanım ve becerim olsaydı, bunun harika bir iPod Nano 7G alternatifi olabileceğini düşünüyorum ;)

    • Bu cihazdan birkaç tane var bende; pil ömrü epey berbat
      Varsayılan kod neredeyse doğru düzgün çalışmıyordu ve hiçbir şey yapmasa bile pil yaklaşık 12 saat gidiyordu. Yine de başkalarının kodunu debug etmeyi seven biri için fiyatına göre şaşırtıcı bir cihaz olduğu doğru
      Eksik kısımları biraz tamamlayıp güç tüketimini azaltan ayarları bularak “normal” kullanımda yaklaşık 6 saat dayanmasını sağladım
      Şimdiki kod muhtemelen çok daha iyidir, ama güç bütçesi 80'ler tarzı ultra düşük güçlü m851'den çok Apple ya da Samsung akıllı saatlere daha yakın olacaktır
      Deney yapmayı seviyorsanız eğlenceli küçük bir proje ve parasını hak ediyor. iWatch ile rekabet edecek bir şey beklerseniz büyük olasılıkla hayal kırıklığına uğrarsınız
  • “Tek pille 3 yıl gidiyor” büyük bir artıysa, Casio kesinlikle hâlâ böyle şeyler üretiyor
    “Casio MIP display” diye aratabilirsiniz

  • Timex Datalink serisi hakkında ek bilgi burada
    https://en.m.wikipedia.org/wiki/Timex_Datalink

    • İronik biçimde, daha sonraki USB modellerinden ziyade optik alıcı bulunan eski modeller çok daha ileri teknoloji gibi hissettiriyor
    • Neden yalnızca CRT ile senkronize edilebildiğini, LCD ile edilemediğini merak ediyorum
      Modern bir IPS LCD ile yeniden üretmek mümkün olur mu?
  • Keşke daha fazla saat ve giyilebilir cihaz böyle 8 bit düşük güç tüketimli çiplerle yapılsa ve veri pinleri dışarıda olduğu için hacklenebilir olsa.
    Saat söz konusuysa 3 yıllık pil ömrü kilit nokta. Saati şarj etmem gerektiğini düşünmek zorundaysam benim için elenir.

    • eBay’den ucuz mekanik kurmalı saatler ve Swatch almaya devam ediyorum.
      Şu an kullandığım Swatch, aynı pille yaklaşık 1 yıldır zamanı düzenli olarak doğru gösteriyor. Ucuz mekanik saatlerin sorunu, dikkat etmezsen yayı fazla kurabilmen. Bu yüzden birkaç yılda bir birini bozuyorum ama zaten ucuzlar.
      İki saatin de güzel yanı her gün şarj gerektirmemeleri. Elbette kurmalı saati kurmak gerekiyor.
  • Bize gerçekten iyi şeylere sahip olabileceğimizi yeniden hatırlatıyor. Yeter ki böyle şeyler için bir pazar olsun.
    Pil kullanımı düşük, takma ya da değiştirme zahmeti az, tasarım açısından da kabul edilebilir şekilde iyi entegre edilmiş bir saat olsa keşke.
    Şu an yapabildiğimizin en iyisinin Sensorwatch [1] olması üzücü.
    [1] https://www.sensorwatch.net
    Düzenleme: Sensorwatch harika, ama henüz bir ekosistem değil.

    • Epey umut verici görünüyor; o kartla neler yapılabiliyor?
      Kartla ne yapmak isteyebileceğimi merak ediyorum.
  • TI’ın Ez430-chronos’undan bile daha basit görünüyor ve iyi duruyor.
    Gerçi tek pille 3 yıl çok etkileyici görünmüyor. Tabii hangi uygulamayı kullanıp yüklediğine bağlıdır; programlanabilir olması ise güzel.
    [0] https://www.sparkfun.com/products/retired/10019

    • Pil ömrü göreceli sanırım.
      2018’de bir Casio F91 kaybetmiştim; geçen hafta kano gezisi için çanta hazırlarken buldum. Saat ve tarih, bileğimde taktığım Casio F91 ile yalnızca birkaç saniye farklıydı.
    • chronos hâlâ satın alınabiliyor mu?
      Eskiden bir tane almıştım ama taşınırken kayboldu. Tekrar kurcalamak isterim.
      Düzenleme: Ah, ürün listesinde “RETIRED” yazan bağlantıyı koymuşsun. TI ürünü söz konusuysa, pazar tepkisi gelmeye başladığı sıralarda TI’ın ürünü sonlandırmaması tuhaf olurdu zaten.