Skip to main content
Version: v2.4.0 (Current)

Frequently Asked Questions

Common questions about the Artok HMI ecosystem, the hardware-agnostic runtime, and our "Private Engine" philosophy.


🏗️ Architecture & Philosophy

What does "Hardware Agnostic" mean for Artok?

It means the Artok Runtime contains zero hardware-specific code (no pins, no SPI registers, no I2C timings). It functions as a "Virtual Machine" for UIs. As long as you provide a thin Hardware Interface for your display and storage, the exact same ui.bin will render identically on an STM32, ESP32, or a Linux-based MPU.

How is the UI "Decoupled" from the Firmware?

In traditional embedded development, changing a button color requires a full C re-compile. With Artok, the UI is a standalone ui.bin file. Your firmware simply "hosts" the runtime. To change the UI, you only update the binary in flash; your C firmware remains completely untouched.


🛠️ Development & Tooling

Is Artok Studio Open Source?

No. Artok Studio is a proprietary, AI-accelerated IDE. It is the only tool capable of generating the optimized ui.bin files used by the runtime.

Is the Artok Runtime Open Source?

The implementation of the core runtime is private. However, the Public Headers (such as atk_runtime.h and atk_api.h) and Integration Templates are open for community use and hardware porting.

Can I use Artok without the Studio?

The Runtime is designed to parse the proprietary binary format produced by Artok Studio. While you can interact with the runtime via C, the Studio is required to design layouts, manage assets (fonts/images), and compile Lua logic.


⚡ Performance & Hardware

What are the minimum hardware requirements?

Because Artok is built for industrial performance, we recommend:

  • RAM: 64KB+ (depending on screen resolution and color depth).
  • Flash: 1MB+ (to store the ui.bin and asset data).
  • Speed: 80MHz+ recommended for 60 FPS fluidity.
  • Storage: An interface to read from SPI/QSPI Flash or an SD Card.

How do I support a custom board?

Supporting a custom board is now entirely callback-driven. You simply:

  1. Define a HMI_Hardware_Interface_t struct in your main application.
  2. Map your drivers (Flash read, Display flush, Touch read, and UART Send) to the function pointers in that struct.
  3. Pass the struct to the ART initialization functions.

Because the runtime is Hardware Agnostic, it treats your drivers as black boxes. Whether you are using a 16-bit Parallel interface on an STM32 or an SPI interface on an ESP32, the runtime only cares that the pixels eventually reach your disp_flush_cb.

Can I use DMA for the display?

Absolutely. The ART_FlushComplete() function is specifically designed for this. You can start a DMA transfer in your disp_flush_cb and immediately return control to the CPU. Once the hardware finishes pushing the pixels, call ART_FlushComplete() from your DMA interrupt to signal the runtime that the buffer is free for the next frame.


💰 Licensing

Is there a free version?

Artok Studio offers a Community Tier for hobbyists and personal projects. For commercial products, we offer Professional and Enterprise tiers that include advanced AI features and redistributable runtime licenses.

Can I ship a commercial product with Artok?

Yes. Artok is designed for production-grade automotive, industrial, and medical devices. Contact our sales team for details on commercial licensing and volume runtime deployment.


Still have questions? Join our Discord Community or check out our GitHub Discussions.