มาติดตั้ง KidBright IDE บน Raspberry Pi กัน

ผมได้มีโอกาสไปเล่น Pi Top Ceed ที่บูธของ MakerAsia ในงาน Thailand 4.0 ชอบ Pi Top Ceed มานานละ มันคล่องตัวและสะดวกมาก แนวคิดคือหิ้ว Pi Top Ceed ไปออกงาน แล้วเสียบ keyboard mouse แล้วใช้งานได้เลย แต่ประเด็นไม่ได้อยู่ที่ Pi Top Ceed แต่เป็น KidBright IDE บน Raspberry Pi ต่างหาก วันนี้ก็เลยมาลองติดตั้ง KidBright IDE บน Raspbian กันสักหน่อย

ก่อนติดตั้ง ต้องทำความเข้าใจกันก่อนว่า script สำหรับติดตั้ง KidBright IDE ใช้สำหรับเครื่องคอมพิวเตอร์ที่เป็น CPU ตระกูล X86 แต่ Raspberry Pi เป็น ARM ดังนั้นสิ่งที่ต้องทำมีดังนี้

  • ติดตั้ง KidBright IDE
  • compile toolchain ใหม่

มาลงมือกันเลย ติดตั้ง dev tools กันก่อน
sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial gawk gperf grep gettext python python-dev automake bison flex texinfo help2man libtool libtool-bin
ติดตั้ง KidBright IDE
ดาวน์โหลด node.js v8
wget -c https://nodejs.org/dist/latest-v8.x/node-v8.13.0-linux-armv7l.tar.gz
แตกไฟล์
tar zxvf node-v8.13.0-linux-armv7l.tar.gz
ตั้ง path
export PATH=$PATH:$HOME/node-v8.13.0-linux-armv7l/bin
ทดสอบ node กันก่อน
node -v
จะได้ผลลัพท์เป็น version ของ node.js
จากนั้นติดตั้ง pyserial
pip install pyserial
สั่ง clone KidBright IDE มาจาก gitlab ได้เลย
git clone https://gitlab.com/kidbright/kbide --recursive
สั่ง build
cd kbide
npm run build
เมื่อสั่ง build ตัวโปรแกรมจะติดตั้ง toolchain มาให้ แต่เป็น X86 เราต้อง compile toolchain ใหม่ให้ใช้บน ARM ได้ไม่งั้น compile programe ไม่ได้นะ
สั่ง clone crosstool มาเพื่อ compile toolchain ใหม่
git clone -b xtensa-1.22.x https://github.com/espressif/crosstool-NG.git
สั่ง compile
cd crosstool-NG
./bootstrap && ./configure --enable-local && make install
./ct-ng xtensa-esp32-elf
./ct-ng build
นอนรอ Zzz ใช้เวลา compile ประมาณ 20 นาที เมื่อ compile เสร็จให้ chmod เพื่อให้ excute ได้
chmod -R u+w builds/xtensa-esp32-elf
เปลี่ยน toolschain ที่มีอยู่เดิม เท่านี้ก็เรียบร้อย
cd ..
rm -rf xtensa-esp32-elf
cp -rf builds/xtensa-esp32-elf .
จากนั้นสั่ง run KidBright IDE ได้ตามปกติ
npm start
ลองลากๆ วางๆ

กด flash ไม่พังเป็นอันใช้ได้