Timex m851 hack’leme
(lock.cmpxchg8b.com)- 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.cderlenip 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.cile 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()velcdDispBannerMsg()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
- Ağır hesaplamalar yapılırken
- 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
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...
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ı
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
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
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
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/
“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
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 ;)
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
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.
Ş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.
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
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ı.
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.