iT邦幫忙

鐵人檔案

第 12 屆 iT 邦幫忙鐵人賽
回列表
IoT

拿到錘子的我想在微控制器上面執行 Ruby 系列

最近買了一些 Maker 小玩具回來玩,卻發現市面上大多數的微控制器都無法執行 Ruby,這點對於一個 Ruby 開發者來說是無法容忍的!

運氣不錯的是,在日本已經有很多先進針對 ESP32 等硬體開發對應的機制,同時也有人實作了只有 1000 行左右能夠運行部分 mruby 指令碼的虛擬機,讓我們跟著前人的腳步為手邊無法運行 Ruby 的微控制器上實作 mruby 虛擬機吧!

鐵人鍊成 | 共 30 篇文章 | 23 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day 11 - 重構 VM 處理程序

在這幾天的實作過程中,我們逐漸發現一個情況的出現,每當增加一個 OPCode 的處理就會有不少重複的程式碼需要輸入,而在 C 語言要對應這樣的狀況使用巨集就可以...

2020-09-24 ‧ 由 蒼時弦也 分享
DAY 12

Day 12 - 實作方法(一)

在前面的實作中,我們是直接對 OP_SEND 放入 printf 的處理將結果印出來,但這樣就表示我們在 Ruby 不論呼叫任何方法都只會將他印出來,這並不是我...

2020-09-25 ‧ 由 蒼時弦也 分享
DAY 13

Day 13 - 實作方法(二)

在上一篇我們已經能夠利用 mrb_state 去儲存整個 Ruby VM 運行時共有的狀態,接下來我們要利用 mrb_state 將 Ruby 中呼叫的方法和...

2020-09-26 ‧ 由 蒼時弦也 分享
DAY 14

Day 14 - mruby 的物件與方法

現在大多數的人在入門程式語言的時候大多是從物件導向語言開始入門,而工作也是以使用物件導向語言為主。但是在 C 語言或者函數式語言中,並沒有「物件」的概念,又是如...

2020-09-27 ‧ 由 蒼時弦也 分享
DAY 15

Day 15 - 方法呼叫資訊

在 mruby 中,我們想知道目前的方法傳入了哪些資訊,會像這樣子使用 mrb_value mrb_puts(mrb_state* mrb, mrb_value...

2020-09-28 ‧ 由 蒼時弦也 分享
DAY 16

Day 16 - 變數(ㄧ)

不知道大家有沒有思考過「強型別」語言跟「弱型別」語言的差異在哪邊,在強型別語言中每一種變數的「型別」都是固定的,也就是說當我們「編譯」的時候就會知道「類型」不對...

2020-09-29 ‧ 由 蒼時弦也 分享
DAY 17

Day 17 - 變數(二)

我們在上一篇已經可以製作 MRB_TT_FIXNUM 這類整數型的變數,但是必須透過下面這種方式手動去製作 mrb_value mrb_value v = {...

2020-09-30 ‧ 由 蒼時弦也 分享
DAY 18

Day 18 - PlatformIO 的準備

大多數時候我們使用 Arduino 這類開發板的時候都會使用 Arduino 提供的 IDE或者像是 ESP32/ESP8266 官方提供的開發工具,不過當有一...

2020-10-01 ‧ 由 蒼時弦也 分享
DAY 19

Day 19 - 把程式碼上傳到開發板

雖然我們已經可以使用 pio test 對我們撰寫的 Ruby VM 進行測試,但是使用 pio run 編譯的時候還是會出現無法正常運作的錯誤,我們需要對原始...

2020-10-02 ‧ 由 蒼時弦也 分享
DAY 20

Day 20 - TFT 螢幕設定

因為我們的目標是要能讓自製的 Ruby VM 運行在微控制器上並且在螢幕上顯示訊息,這次使用的是 TFT 螢幕型號是 ST7735 因為不同的硬體會有差異,在設...

2020-10-03 ‧ 由 蒼時弦也 分享