1 điểm bởi GN⁺ 2023-09-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Timex m851 trông giống một chiếc đồng hồ số dành cho người chạy bộ, nhưng thực ra là một nền tảng siêu tiết kiệm điện có thể chạy ứng dụng người dùng chỉ với CPU Seiko S1C88 8-bit và 2KB RAM
  • Các chân ở cạnh bên là USB, có thể đồng bộ dữ liệu như lịch hẹn, và với SDK của Timex có thể build cc helloworld.c rồi nạp trực tiếp lên đồng hồ
  • WatchApp có cấu trúc thay thế mã theo từng state do RAM hạn chế, đồng thời dùng chung API cho mã dùng chung, biến và dữ liệu lâu dài
  • Kernel đảm nhiệm các tác vụ mức thấp như chuyển sự kiện, timer, tiếng bíp, cuộn màn hình, truy cập cơ sở dữ liệu, và điều khiển núm vặn cùng đèn nền
  • Đây là thiết bị đã ngừng sản xuất nên khó kiếm, nhưng nhờ trình mô phỏng Virtual Datalink cùng tài liệu và mã ví dụ được công khai, có thể phát triển mà không cần reset đồng hồ thật mỗi lần

Nền tảng phát triển bên trong một chiếc đồng hồ nhỏ

  • Timex m851 là đồng hồ số có CPU Seiko S1C88 8-bit, 48KB ROM, 2KB RAM và màn hình chính dạng dot-matrix 42x11
  • CPU được thiết kế với mục tiêu vận hành siêu tiết kiệm điện, có thể hoạt động 3 năm chỉ với một viên pin
  • Các chân ở cạnh bên là USB, được dùng để đồng bộ dữ liệu như lịch hẹn với đồng hồ
    • Có thư viện cho Linux là libdlusb
  • Nếu dùng SDK do Timex cung cấp, có thể build ứng dụng bằng cc helloworld.c và tải lên đồng hồ
  • Bộ công cụ mặc định có dạng wizard thời Windows XP, nhưng bên trong chạy toolchain kiểu UNIX

Ví dụ WatchApp và hệ sinh thái sẵn có

  • Ví dụ hello world và Makefile có thể xem trong kho taviso/timex
  • Trên nền tảng này đã có nhiều WatchApp như game, tiện ích và công cụ

Cấu trúc WatchApp: state và mode

  • Ứng dụng được chia thành các state, và khi state thay đổi thì mã đang hoạt động sẽ bị loại bỏ, mã mới sẽ được nạp lên
  • Ứng dụng có thể dùng tối đa khoảng 30KB mã hoặc dữ liệu, nhưng RAM chỉ có khoảng 2KB
    • Không có paging, và không thể chứa toàn bộ mã trong RAM nên cần cấu trúc state
  • Có không gian mã dùng chung cho mọi state, cùng với không gian biến và API cơ sở dữ liệu cho dữ liệu bền vững
  • Một số state ở phần đầu được dành riêng cho xử lý sự kiện chung, phần còn lại ứng dụng có thể dùng theo ý muốn
  • mode tương ứng với ứng dụng ở tiền cảnh
    • Ứng dụng thường cung cấp mode, nhưng cũng có thể thêm tác vụ nền hoặc tác vụ định kỳ
    • Nếu yêu cầu chuyển mode bằng coreRequestModeChangeNext(); thì ứng dụng tiếp theo sẽ giành quyền điều khiển

Xử lý sự kiện và dịch vụ kernel

  • Mỗi state cần có trình xử lý sự kiện
  • Các sự kiện bao gồm vào state, kéo núm vặn ra hoặc đẩy vào lại, xoay núm vặn, nhấn nút và nhập từ nút mode
    • Có thể bỏ qua các sự kiện không cần thiết
  • Kernel phụ trách xử lý phần cứng, phân phối sự kiện và cung cấp nhiều dịch vụ
    • timer
    • tạo tone và tiếng bíp
    • cuộn màn hình
    • truy cập bản ghi cơ sở dữ liệu
    • cấu hình núm vặn
    • điều khiển đèn nền
  • Mã ví dụ dùng các dịch vụ kernel như lcdClearDisplay()lcdDispBannerMsg() để hiển thị thông điệp banner "hello!"

Môi trường debug giúp giảm số lần reset

  • Không có bảo vệ bộ nhớ, nên ứng dụng có thể ghi đè lên bộ nhớ kernel
  • Kernel phải báo cho watchdog biết vẫn còn sống mỗi 2 giây, nếu không watchdog sẽ reset đồng hồ
    • Khi thực hiện tính toán nặng thì cần làm mới watchdog bằng hwResetWatchdog();
  • Virtual Datalink là trình mô phỏng mã nguồn mở của bên thứ ba
    • source
    • Chỉ dành cho Windows và được viết bằng Delphi
    • Cung cấp breakpoint có điều kiện, disassembler, lưu trạng thái, phân tích tài nguyên và phân tích điện năng

Tìm thiết bị đã ngừng sản xuất và tài liệu tham khảo

  • Timex m851 đã ngừng sản xuất từ lâu và ngày càng khó tìm hơn
  • Có thể tìm thấy thiết bị trên eBay mà chỉ cần thay pin là dùng như mới
  • Nếu không có cáp, có thể tận dụng việc nó dùng chân USB Type-A tiêu chuẩn và một đầu nối đặc biệt để dùng cáp USB cũ cùng kẹp cá sấu
  • Timex T5G751 cũng dùng cùng đầu nối, tương đối dễ tìm hơn nên có thể dùng để kiếm cáp
  • Biến thể m851 có tên “dress edition” có cùng thông số nhưng thân vỏ khác, và đôi khi được đăng với số model khác
  • Tài liệu tham khảo
    • Design Guide: tài liệu quan trọng nhất và được viết rất tốt
    • CPU manual: hướng dẫn CPU
    • tài liệu toolchain
    • API reference: chứa danh sách các dịch vụ do kernel cung cấp

1 bình luận

 
GN⁺ 2023-09-04
Ý kiến trên Hacker News
  • Một trong những điểm như phép màu là Epson SoC (PN S1C88349) tiết kiệm điện đến mức khó tin: khi chạy ở chế độ tiết kiệm điện 32kHz, dòng tiêu thụ chỉ 9 microampere
    Điều này khiến ta nghĩ xem có thể làm được bao nhiêu việc với ngân sách 32.000 chu kỳ mỗi giây
    Hơn nữa, nó còn có 48K ROM, 2K RAM, 3 bộ định thời, UART và cả bộ chuyển đổi A/D
    [1] https://global.epson.com/products_and_drivers/semicon/pdf/id...

    • Có thể bạn sẽ ngạc nhiên khi biết những linh kiện 8-bit siêu tiết kiệm điện như vậy đã tồn tại từ khoảng 30 năm trước
      Chip Seiko-Epson, cùng với EM-Swatch và chip OKI-Casio, được dùng trong đồng hồ, máy tính bỏ túi, nhiệt kế và các thiết bị LCD segment giá rẻ, tiêu thụ điện thấp, vốn phải chạy trong nhiều năm chỉ bằng một viên pin cúc áo
      Những chiếc máy tính bỏ túi và nhiệt kế kỹ thuật số hơn 15 năm tuổi cũng dùng các chip Seiko-Epson kiểu này, và đến giờ vẫn chạy bằng viên pin cúc áo 1,5V ban đầu. Nếu tính đến mức tự xả của pin lithium theo thời gian thì điều đó khá đáng kinh ngạc
    • Các hệ thống hiện đại, dù là SoC, hệ điều hành hay ứng dụng, đều đã phình to và phức tạp đến mức khổng lồ
      Kích thước binary của nhiều ứng dụng di động ngày nay còn lớn hơn cả hệ điều hành và toàn bộ ứng dụng ngày xưa vốn làm được những việc rất hữu ích
      Thật đáng sợ khi nghĩ xu hướng này sẽ đi đến đâu, và có vẻ cũng ít khả năng sẽ có ai hay điều gì đó kìm nó lại
    • TMS430 đời mới có các chế độ siêu tiết kiệm điện, và cũng có thể dùng RTC ngoài siêu tiết kiệm điện
      Theo tôi nhớ, tính cả những thứ như rò rỉ ở công tắc nguồn thì danh nghĩa vẫn dưới 100nA, thực sự rất ấn tượng
    • E0C6S46 đến nay vẫn chạy Tamagotchi thế hệ 1 và 2
      Đó là một vi điều khiển 4-bit (!) 32KHz với ROM 12-bit (‼) 6.144 word, RAM nội 4-bit 640 word, và frame buffer 4-bit 160 word cho driver LCD tích hợp. Thậm chí còn có thể double buffering
      Quả là một con chip tuyệt đẹp. Khoảng một năm trước tôi đã làm một emulator bằng TypeScript nhưng chưa đưa lên GitHub. Nếu có ai quan tâm thì tôi có thể đưa lên, và nó cũng chạy được firmware Tamagotchi chưa chỉnh sửa
    • Cách gọi ROM làm tôi hơi bối rối. Tôi tưởng nó vốn có nghĩa là không thể thay đổi, nhưng tài liệu lại nói có thể đưa dữ liệu có thể sửa đổi vào đó rồi lấy ra
      Thực ra nó là EEPROM, và có vẻ hơi giống Flash memory
  • Nếu muốn thứ có nhiều tính năng hơn một chút, Bangle.js cũng đáng xem
    Ưu điểm là có Bluetooth, GPS, gia tốc kế, mô-tơ rung và màn hình màu. Nhược điểm là pin dùng ngắn hơn 3 năm rất nhiều
    [0] https://banglejs.com/

    • Dành cho ai tò mò, thời lượng pin của Bangle được ghi là 4 tuần
      Họ giới thiệu Bangle.js 2 như một lựa chọn thay thế để thoát khỏi những smartwatch đắt tiền, với các điểm nhấn: “màn hình luôn bật đọc được dưới ánh nắng, pin 4 tuần, tính linh hoạt hoàn toàn, toàn quyền kiểm soát dữ liệu”
  • Khoảng 15 năm trước tôi từng có chiếc đồng hồ này và có thể ghi lại nhiều thứ
    Tôi lưu trong đó địa điểm lớp học tiếp theo, lịch xe buýt của những trạm hay dùng, pha của Mặt Trăng và những thứ tương tự
    Trước thời smartphone, xem lịch xe buýt trên đồng hồ đeo tay trông như James Bond vậy :)
    Ước gì họ vẫn còn làm những chiếc đồng hồ như thế. Với mức tiêu thụ điện như này, có lẽ dùng năng lượng mặt trời là có thể vừa sạc vừa dùng gần như mãi mãi

    • Công bằng mà nói, chiếc iPhone đầu tiên ra mắt 16 năm trước, và trước đó cũng đã có smartphone có thể lưu lịch xe buýt
      Hơn 20 năm trước tôi từng lưu lịch xe buýt dưới dạng bản nháp SMS trên điện thoại Siemens
  • Một cách tiếp cận hiện đại hơn cho đồng hồ có thể hack được có lẽ là cái này
    https://github.com/sharandac/My-TTGO-Watch
    Tôi phát hiện ra nó khi đang tìm hiểu để làm một chiếc iPod Nano 7G DIY bằng board phát triển LILYGO T5 E-Paper
    Sản phẩm: https://www.aliexpress.com/item/1005002474854718.html
    Kho mã nguồn: https://github.com/Xinyuan-LilyGO/LilyGo-T5-Epaper-Series
    Nếu tôi có thêm thời gian và kỹ năng phía Arduino, có lẽ nó đã có thể trở thành một sản phẩm thay thế iPod Nano 7G tuyệt vời ;)

    • Tôi có vài cái như vậy, và thời lượng pin khá tệ
      Code mặc định hầu như không hoạt động tử tế, và pin chỉ được khoảng 12 giờ ngay cả khi chẳng làm gì. Dù vậy, nếu bạn thích debug code của người khác thì đúng là một món rất đáng kinh ngạc so với giá
      Tôi đã lấp một số phần còn thiếu và tìm ra các thiết lập để giảm tiêu thụ điện, khiến nó chạy được khoảng 6 giờ khi sử dụng “bình thường”
      Có lẽ code hiện tại đã tốt hơn nhiều, nhưng ngân sách năng lượng của nó chắc chắn gần với smartwatch Apple hoặc Samsung hơn nhiều so với m851 siêu tiết kiệm điện kiểu thập niên 80
      Nếu thích thử nghiệm thì đây là một dự án nhỏ thú vị và xứng đáng với số tiền bỏ ra. Còn nếu kỳ vọng một thứ cạnh tranh với iWatch thì rất có thể sẽ thất vọng
  • Nếu “chạy 3 năm chỉ với một viên pin” là ưu điểm lớn, Casio chắc chắn vẫn đang làm những thứ như vậy
    Chỉ cần tìm “Casio MIP display” là được

  • Có thêm thông tin về dòng Timex Datalink tại đây
    https://en.m.wikipedia.org/wiki/Timex_Datalink

    • Trớ trêu là các mẫu cũ có bộ thu quang lại cho cảm giác công nghệ cao hơn nhiều so với các mẫu USB về sau
    • Tôi tò mò vì sao chỉ có thể đồng bộ từ CRT mà không được từ LCD
      Liệu có thể tái hiện bằng IPS LCD hiện đại không?
  • Hy vọng sẽ có thêm nhiều đồng hồ và thiết bị đeo được làm bằng những chip 8-bit tiêu thụ điện thấp như thế này, và có chân dữ liệu lộ ra để có thể hack được
    Với đồng hồ thì thời lượng pin 3 năm là điểm cốt lõi. Nếu phải bận tâm đến việc sạc đồng hồ thì với tôi là loại ngay

    • Tôi vẫn tiếp tục mua đồng hồ cơ lên dây cót giá rẻ và Swatch trên eBay
      Chiếc Swatch tôi đang dùng hiện vẫn giữ giờ đều đặn được khoảng 1 năm với cùng một viên pin. Vấn đề của đồng hồ cơ giá rẻ là nếu không cẩn thận thì có thể lên dây cót quá tay. Vì vậy cứ vài năm tôi lại làm hỏng một chiếc, nhưng dù sao chúng cũng rẻ
      Điểm hay của cả hai loại đồng hồ là không cần sạc mỗi ngày. Tất nhiên đồng hồ lên dây cót thì vẫn phải lên dây cót
  • Nó nhắc lại rằng chúng ta thực ra có thể có những món đồ tốt. Miễn là có thị trường cho những món đồ như vậy
    Tôi muốn có một chiếc đồng hồ tích hợp tốt, dùng ít pin, ít phiền khi đeo hoặc thay thế, và thiết kế cũng chấp nhận được
    Thật tiếc là thứ tốt nhất hiện chúng ta có thể làm lại là Sensorwatch [1]
    [1] https://www.sensorwatch.net
    Sửa: Sensorwatch rất tuyệt, nhưng vẫn chưa phải là một hệ sinh thái

    • Trông khá hứa hẹn, nhưng với bo mạch đó thì có thể làm được những gì?
      Tôi tò mò không biết nó có thể khiến người ta muốn làm gì với bo mạch ấy
  • Trông còn đơn giản hơn Ez430-chronos của TI và có vẻ ổn
    Tuy nhiên 3 năm với một viên pin thì không có vẻ quá ấn tượng. Tất nhiên còn tùy bạn dùng và cài ứng dụng nào, và việc có thể lập trình được là rất hay
    [0] https://www.sparkfun.com/products/retired/10019

    • Thời lượng pin có lẽ là tương đối
      Năm 2018 tôi làm mất một chiếc Casio F91, và tuần trước khi đóng đồ cho chuyến đi ca nô thì tìm thấy nó. Giờ và ngày chỉ lệch vài giây so với chiếc Casio F91 tôi đang đeo trên tay
    • Giờ còn mua được chronos không?
      Trước đây tôi đã mua một chiếc nhưng nó biến mất khi chuyển nhà. Tôi muốn nghịch lại nó
      Sửa: À, hóa ra bạn đã đưa link có ghi “RETIRED” trong danh sách sản phẩm. Nếu là sản phẩm của TI thì sẽ lạ nếu TI không ngừng sản xuất đúng lúc thị trường bắt đầu có phản hồi