こんにちは、エンジニアのオオバです。

先日我が家にやってきたキュベット君。

キュベットとは
イギリス発のプログラミング脳を鍛えるための電子おもちゃです。
プログラミング脳を3歳から プリモトイズ キュベット

キュベットは、そこそこお高いですが、
うちの5歳の娘は夢中で遊んでいます。

→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら

キュベットの挙動をカスタマイズする

ちなみに、キュベットの中身はArduinoなので、
プログラムを書くことができます。

さっそくやってみようということで、
こちらの動画を見ながら、やってみました。

Cubetto Tutorial | Update Firmware - YouTube

しかし、コンパイル時に以下のエラーがでます。

failed MSpanList_Insert 0x30c000 0x2c93f0697180 0x0  
fatal error: MSpanList_Insert  

runtime stack:  
runtime.throw(0x2ac50b)  
 /usr/local/go/src/runtime/panic.go:491 +0xad fp=0x7ffeefbff3e0 sp=0x7ffeefbff3b0  
runtime.MSpanList_Insert(0x2ca128, 0x30c000)  
 /usr/local/go/src/runtime/mheap.c:692 +0x8f fp=0x7ffeefbff408 sp=0x7ffeefbff3e0  
MHeap_FreeSpanLocked(0x2c6d20, 0x30c000, 0x100)  
 /usr/local/go/src/runtime/mheap.c:583 +0x163 fp=0x7ffeefbff448 sp=0x7ffeefbff408  
MHeap_Grow(0x2c6d20, 0x8, 0x0)  
 /usr/local/go/src/runtime/mheap.c:420 +0x1a8 fp=0x7ffeefbff488 sp=0x7ffeefbff448  
MHeap_AllocSpanLocked(0x2c6d20, 0x1, 0x0)  
 /usr/local/go/src/runtime/mheap.c:298 +0x365 fp=0x7ffeefbff4c8 sp=0x7ffeefbff488  
mheap_alloc(0x2c6d20, 0x1, 0x12, 0x0)  
 /usr/local/go/src/runtime/mheap.c:190 +0x121 fp=0x7ffeefbff4f0 sp=0x7ffeefbff4c8  
runtime.MHeap_Alloc(0x2c6d20, 0x1, 0x10000000012, 0xf989)  
 /usr/local/go/src/runtime/mheap.c:240 +0x66 fp=0x7ffeefbff528 sp=0x7ffeefbff4f0  
MCentral_Grow(0x2cea98, 0x0)  
 /usr/local/go/src/runtime/mcentral.c:197 +0x8b fp=0x7ffeefbff590 sp=0x7ffeefbff528  
runtime.MCentral_CacheSpan(0x2cea98, 0x0)  
 /usr/local/go/src/runtime/mcentral.c:85 +0x167 fp=0x7ffeefbff5c8 sp=0x7ffeefbff590  
runtime.MCache_Refill(0x308000, 0x12, 0x0)  
 /usr/local/go/src/runtime/mcache.c:90 +0xa0 fp=0x7ffeefbff5f0 sp=0x7ffeefbff5c8  
runtime.mcacheRefill_m()  
 /usr/local/go/src/runtime/malloc.c:368 +0x57 fp=0x7ffeefbff610 sp=0x7ffeefbff5f0  
runtime.onM(0x223ad0)  
 /usr/local/go/src/runtime/asm_amd64.s:273 +0x9a fp=0x7ffeefbff618 sp=0x7ffeefbff610  
runtime.mallocgc(0x120, 0x1bde40, 0x0, 0x0)  
 /usr/local/go/src/runtime/malloc.go:178 +0x849 fp=0x7ffeefbff6c8 sp=0x7ffeefbff618  
runtime.newobject(0x1bde40, 0x308000)  
 /usr/local/go/src/runtime/malloc.go:353 +0x49 fp=0x7ffeefbff6f0 sp=0x7ffeefbff6c8  
runtime.newG(0x276ba)  
 /usr/local/go/src/runtime/proc.go:233 +0x2a fp=0x7ffeefbff708 sp=0x7ffeefbff6f0  
allocg(0x2b9660)  
 /usr/local/go/src/runtime/proc.c:925 +0x1f fp=0x7ffeefbff718 sp=0x7ffeefbff708  
runtime.malg(0x8000, 0x2b9700)  
 /usr/local/go/src/runtime/proc.c:2106 +0x1f fp=0x7ffeefbff748 sp=0x7ffeefbff718  
runtime.mpreinit(0x2b9ac0)  
 /usr/local/go/src/runtime/os_darwin.c:137 +0x27 fp=0x7ffeefbff760 sp=0x7ffeefbff748  
mcommoninit(0x2b9ac0)  
 /usr/local/go/src/runtime/proc.c:201 +0xc9 fp=0x7ffeefbff788 sp=0x7ffeefbff760  
runtime.schedinit()  
 /usr/local/go/src/runtime/proc.c:138 +0x55 fp=0x7ffeefbff7b0 sp=0x7ffeefbff788  
runtime.rt0_go(0x7ffeefbff7e0, 0x19, 0x7ffeefbff7e0, 0x0, 0x19, 0x7ffeefbff9b8, 0x7ffeefbff9f6, 0x7ffeefbffa02, 0x7ffeefbffa12, 0x7ffeefbffa1c, ...)  
 /usr/local/go/src/runtime/asm_amd64.s:95 +0x116 fp=0x7ffeefbff7b8 sp=0x7ffeefbff7b0  
arduino-builderが2を返しました。  

ボードArduino/Genuino Zero (Native USB Port)に対するコンパイル時にエラーが発生しました。  

最初Goのバージョンが古いのか?そもそもGoを使用する???など、エラー内容からGoを疑っていましたが真犯人は別にいました。

動画のバージョンではコンパイルエラー

動画の通りArduinoアプリのバージョンを1.6.9、ボードを1.6.6にしていましたが、Arduinoアプリを1.8.9、ボードを1.6.23にした環境で作業していたのですが、それではぼくの環境ではダメだったようです。

キュベットへプログラム送信時にエラーが出た時の対応_0

2016年末と約1年半前の動画なので、
情報がアップデートされていないのかも知れません。

とりあえず、動いてよかったです。

送信したプログラム

動画ページにリンクがありますが、こちらのコードをコンパイルしています。
PrimoCubettoOOBExample.ino · GitHub

オススメ記事
検証環境