$30 off During Our Annual Pro Sale. View Details »

2021 - RubyKaigi - It is time to build your mruby VM on the microcontroller?

蒼時弦や
September 14, 2021

2021 - RubyKaigi - It is time to build your mruby VM on the microcontroller?

In 2020, I find a mini-arcade maker product that uses ESP8622 and MicroPython. Since I know the mruby/c can run on the ESP32 but it doesn't support running on the ESP8622. Is it possible to implement our own mruby VM and execute Ruby on any microcontroller we want to use it? This talk will show my progress to run a simple mruby script on the ESP8622 by implementing my own small mruby VM.

蒼時弦や

September 14, 2021
Tweet

More Decks by 蒼時弦や

Other Decks in Programming

Transcript

  1. It is time to build your mruby VM
    on the microcontroller?
    Photo by Johannes Plenio from Pexels

    View Slide

  2. THE ENGINEER


    OF CREATIVE


    ݭ໵
    @elct9620

    View Slide

  3. View Slide

  4. View Slide

  5. Does build a mruby VM is hard
    Question

    View Slide

  6. Yes, but we can do it easier
    My Answer

    View Slide

  7. This is my
    fi
    rst time trying it, how can I start it?
    Question

    View Slide

  8. mruby-L1VM

    View Slide

  9. A mruby VM running on the Web only ~1000 lines
    mruby-L1VM

    View Slide

  10. Everyone can read it without spending a lot of time
    mruby-L1VM

    View Slide

  11. How does it work?
    mruby-L1VM

    View Slide

  12. Start Program End Program
    Read Byte Code Execute Exit?
    No
    Yes
    IREP OPCODE

    View Slide

  13. View Slide

  14. How to read the IREP from mrb binary?
    IREP

    View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. example.mrb
    RITE Header
    IREP
    Debug Section

    View Slide

  19. example.mrb
    RITE Header
    IREP
    Debug Section
    34 bytes

    View Slide

  20. View Slide

  21. example.mrb
    RITE Header
    IREP
    Debug Section
    IREP Header

    View Slide

  22. View Slide

  23. IREP
    ISEQ
    Pools
    Symbols
    Sub-IREP
    OPCODE

    View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. Sample Code

    View Slide

  28. IREP
    ISEQ
    Pools
    Symbols
    Sub-IREP
    Ex. String

    View Slide

  29. View Slide

  30. How does the "method" work in mruby?
    Call Method

    View Slide

  31. IREP
    ISEQ
    Pools
    Symbols
    Sub-IREP
    Method
    Name

    View Slide

  32. IREP
    ISEQ
    Pools
    Symbols
    Sub-IREP
    Method Body

    View Slide

  33. View Slide

  34. Pointer

    View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. Sample Code

    View Slide

  39. View Slide

  40. View Slide

  41. Run your VM on the microcontroller
    Demo

    View Slide

  42. View Slide

  43. Prototype Code
    Series Article (Chinese)

    View Slide

  44. I am trying to build my own plant keeper IoT device
    The Next

    View Slide

  45. Thanks

    View Slide