
「ちょっと大人なこどもOS」で遊ぶ
最近Shrike-LiteやArduino UNO Qといった高性能なマイコンばかり弄っていたので、反動でシンプルなマイコンを使って遊びたくなってきました。
そういえば今年の「福箱」に面白そうなガジェットがあったなあと思い出し、箱を開けてこれを引っ張り出しました。

IchigoJamと同じハードに「ちょっと大人なこどもOS」をのせたIchigoLatteです。lashという簡易的なシェルとviというエディタ(Unixのviとは違います)とJavaScriptが搭載された面白そうなマイコンボードです。
NTSCのビデオモニターとUSBキーボードをつないで電源を入れればすぐに利用することができます。


搭載されていたJavaScriptは現行のものより古いバージョンのようなのでファームウェアを更新してから使うことにしました。

IchigoLatteのサイトにはJavaScript以外にFORTHやRubyやPythonといった言語が利用できるファームも置いてあったので、まずは使い慣れたPythonの処理系を使ってみることにします。
書き込みにはUSBシリアル変換モジュールが必要です。
ファームウェアの更新に使うソフトウェアはこちらのサイトにいくつも紹介されています。今回はUbuntuで簡単にコンパイルして使えるlpc21ispを使いました。ダウンロードしたソースをmakeするだけです。
ボード上のLPC114にファームウェアを書き込むにはリセット(電源オン)のときにISP端子がLOWになっている必要があります。そこでまずISPをGNDにつないでおきます。

そしてUSBシリアル変換モジュールのTXD・RXDをボードのTXD・RXDとクロス接続してVCCとGNDをつなぎ電源を入れます。

上記のIchigoLatteのサイトからLPC114のファームウェアをダウンロードしたらPythonのヘキサデシマル(hexファイル)を取り出し、lpc21ispを使って書き込みます。(下記はJavaScript版の例です)
lpc21isp ichigolatte-js.jp.hex /dev/ttyUSB0 115200 1200Ubuntuの場合、一般ユーザーではttyUSB0へのアクセス権がないのでudevのルール変更やdialoutグループへの追加が必要になります。面倒ならttyUSB0のアクセス権を変えてしまってもいいでしょう。(ただしシリアル変換モジュールをつなぐたびにアクセス権の変更をしなければなりません)
lpc21isp ichigolatte-js.jp.hex /dev/ttyUSB0 115200 1200
lpc21isp version 1.97
File ichigolatte-js.jp.hex:
loaded...
converted to binary format...
image size : 28604
Image size : 28604
Synchronizing (ESC to abort). OK
Read bootcode version: 1
7
Read part ID: LPC1114.../102, 32 kiB FLASH / 4 kiB SRAM (0x1A40902B)
Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum is written last.
Erasing sector 0 first, to invalidate checksum. OK
Sector 1: ...........................|.........................|.........................|.........................
Sector 2: ...........................|.........................|.........................|.........................
Sector 3: ...........................|.........................|.........................|.........................
Sector 4: ...........................|.........................|.........................|.........................
Sector 5: ...........................|.........................|.........................|.........................
Sector 6: ...........................|.........................|.........................|.........................
Sector 0: ..........................|.........................|.........................|.........................
Download Finished... taking 50 seconds
Now launching the brand new code書き込みが終わったらシリアル変換モジュールをはずし、モニターとキーボードをつないで電源を入れてみると、

ちゃんとpythonになっていました。動作確認のためサンプルプログラムを動かしてみます。


問題ないみたいです。
でもこのPtythonにはリストが実装されていませんでした。a=[1,2,3]などを実行するとハングしてしまうのです。これはダメですね。JavaScriptなら配列が使えるので結局JSのファームに書き換えました。

IchigoLatteのプログラムですが、UARTで外部のPCなどから読み書きできます。lpc21ispやLinuxのgtktermなどでも接続はできるのですが、キー入力が正常に機能しませんでした。
いろいろ試してみた結果Windows環境でIJUtilitiesを使うのが一番簡単で便利だったので今後はこれを利用することにしました。lpc21ispも含まれているのでファームウェアの書き換えもできるようです。

使用手順は以下のようになります。
まず、IchigoLatteとUSBシリアル変換モジュールのTXD・RXDのクロス接続とVCC・GNDの接続を行います。変換モジュールとPCをつないでIJUtilitiesを起動します。
IJUtilitiesのFontフォルダのフォントをインストールしておかないと毎回警告が出てくるのであらかじめインストールしておきましょう。

IJUtilitiesを起動したらメインのウィンドウの左端にある赤いジャムのアイコンをクリックし、

ラテのアイコンに変更します。

ウィンドウ上部のcomポートをUSBシリアル変換モジュールのポートにして「接続」ボタンを押します。IchigoLatteの基板上のボタンを押してウィンドウにlash>と表示されれば接続完了です。

プログラムを作るときはサブウィンドウの「新規Latte」を押します。

新たにウィンドウが開きますので、ここにプログラムを入力、またはコピペします。

「cat uart > .」ボタンを押して「すべて送信」ボタンを押すとプログラムがIchigoLatteに書き込まれます。
ところが書き込まれたプログラムの先頭行に、書き込みコマンドの
cat uart > .
まで書き込まれてしまいました。これはviエディタを使わないと削除できないのですが、シリアル経由ではviが使えないのでIchigoLatteにつないだモニターとキーボードを使って修正するしかありません。

プログラムを実行するには
ms .
と入力します。(JavaScriptの場合)
シリアル経由で実行しても画面表示されないことが多いので、実行結果はIchigoLatteに接続したモニターで確認することになるでしょう。
IchigoLatteにEEPROMをつなぐとボード本体に書き込まれたプログラムを保存することができるようになります。これがあるとシリアル経由でプログラムを入れ換える必要がなくなり便利です。実行中のプログラムからEEPROMのプログラムを読み込んで実行することも出来るので、本体だけでは実現できない規模のプログラムも作れます。
ここで思い出したことがあります。2024年の福箱にIchigoCakeにつないで使うEEPROMが入っていたのです。パーツ入れにしまってあったので取り出してきました。

S24CM01C128KBのEEPROMです。早速つないでみました。

JavaScriptのサンプルプログラムを保存してみました。

前回EEPROMを使ったときにFFでクリアしていたので、空き領域がキャラクターコードFFのグラフィック文字(コーヒーカップ)で埋まってますね。
IchigoLatteの本体RAMが4KBでEEPROMが128KBあるので、128÷4で32個までプログラムを保存できるようです。プログラムソースのエリアは2KBとのことなのでメモリ内容を全て書き込んでいるのでしょうか。

保存したプログラムをIchigoLatte本体に読み込んで実行してみました。





EXと印字されている端子とGNDに圧電サウンダをつなぐとbeep命令で周波数を指定して音を鳴らすことができます。

面白いカジェットです。パソコンとよんでいるようですが、たしかに昔の低価格パソコンの感じですね。IchigoJam BASICを載せると、よりレトロパソコンぽくなるのかもしれません。
IchigoLatte単体でもそれなりに楽しめますが、外部にデバイスをつなぐともっと楽しいことができそうです。もう少し遊んでみてから何か実用的なことに使えないか考えてみましょう。