LambdaChip First Impression
LambdaChip はオープンソースの関数型組み込みシステムです。
LambdaChip を実装し、Scheme で組み込みプログラミングができる Alonzoボードを入手したので試してみました。
Alonzoボードはスタンダード版 (USD29) とフルセット版(USD99)の2種類あります。写真のパッケージはフルセット版です。
フルセット版の中身。
写真の左下にある黒いボードがAlonzoボード本体です。スタンダード版 (USD29) を購入した場合はこのボード1枚のみになります。
写真の右下はデバッガです。Alonzo ボードへのプログラム書き込みやデバッグなどに使います。
スタンダード版のみ購入の場合でも、プログラムの書き込み/実行は microSD カードにプログラム配置することで行うことができます。
フルセット版/スタンダード版いずれも現在のところ入手はSeeedStudio経由となります。
https://www.seeedstudio.com/LambdaChip-Alonzo-Standard-Version-p-4854.html
图㧪科学技術有限公司
LambdaChip および Alonzo 中国深センで組込技術開発を行う TuweiTechnology 社(图㧪科学技術有限公司)が開発しています。
LambdaChip
https://lambdachip.com
TuweiTechnology 社は LambdaChip の開発に注力していますがライセンスは独占的ではなく、LambdaChip は Linux のようにオープンソースで誰でも使うことができます。
Alonzo ボード
デバッガを使ってPCに接続した状態 この状態でプログラムの書き込みやデバッグを行うことができます。
デバッガを使わずにスタンダード版のみで開発や実行をする場合は、このようにmicroSDカードを使ってプログラムの実行を行います。
AlonzoボードのCPU はSTM32F411CEU6。Cortex-M4 の 32bit ARM プロセッサで 100MHz。 512KB のフラッシュが使えます。
FR8016HA は freqchip 社の BLE チップです。これを使うとしてAlonzoボードは日本の技適は取得していないので「技適未取得機器を用いた実験等の特例制度」などを申請して実験することになります。
https://www.freqchip.com/
実験しよう
最初の1歩として、LED点滅(Lチカ) をしてみます。
https://lambdachip.com/articles/docs
の「0. Get started」を行います。
環境
- Ubuntu 20.04 LTS
あらかじめ、以下の手順でDockerをセットアップしています。
「Ubuntu20.04 に Docker を導入する」
https://qiita.com/nanbuwks/items/0ba1d13b3cd27e5c6426
docker で開発環境を入手
$ sudo docker pull registry.gitlab.com/lambdachip/laco:latest
sudo しているのは、先のDockerセットアップで sudo 必要な設定としているからです。sudo 必要ない設定にしている方は以降も sudo 無しに読み替えてください。
なお、環境を作った後もこのコマンドを実行することで開発環境が最新に保つことができます。
ワークスペースを作り、開発環境に入る
$ mkdir ~/lambdachip-workspace
$ cd lambdachip-workspace/
としておいて、
$ sudo docker run -it --rm -v $PWD:/workspace -w /workspace -u "lambdachip:lambdachip" registry.gitlab.com/lambdachip/laco:latest bash
と実行すると、以下のようになります。
________________________________
/\ \
\_| _ |
| | _.._ _ |_ _| _./ |_ o._ |
| |_(_|| | ||_)(_|(_|\_| |||_) |
| | |
| ___________________________|_
\_/_____________________________/
Laco compiler workspace
lambdachip@de52db3dde27:/workspace$
プロンプトがこのようになったことを確認し、一度抜けます。
lambdachip@de52db3dde27:/workspace$ exit
exit
$
Scheme プログラムを作成、コンパイルする
$ vim program.scm
として、以下の内容のファイルを作成します。
(define (main x)
(gpio-toggle! 'dev_led1)
(usleep 200000)
(if (= x 0)
#t
(main (- x 1))))
(main 10)
ここに示したプログラムは、サンプルから少し変えています。
再度仮想環境に入ります。
$ sudo docker run -it --rm -v $PWD:/workspace -w /workspace -u "lambdachip:lambdachip" registry.gitlab.com/lambdachip/laco:latest bash
先程作成したプログラムをコンパイルします。
lambdachip@448d3a1fe424:/workspace$ laco program.scm
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /usr/bin/laco
;;; compiled /home/lambdachip/.cache/guile/ccache/3.0-LE-8-4.5/usr/bin/laco.go
lambdachip@448d3a1fe424:/workspace$
コンパイルしたファイルができていることを確認します。
lambdachip@448d3a1fe424:/workspace$ ls
program.lef program.scm
この、program.lef を microSDカードに書き込みましょう。
Alonzo ボードで実行
書き込んだ microSD カードを装着します。
USB Type-C 端子から5Vを供給します。
プログラムを変更してみる
LED の定義を変えたり、時定数を変えたりして遊んでみましょう。
定義 | LED |
---|---|
dev_led0 | フルカラーLED 赤 |
dev_led1 | フルカラーLED 緑 |
dev_led2 | フルカラーLED 青 |
dev_led3 | 白LED |
Alonzoボードの入手
先に記したように現在のところSeeedStudio経由となります。
https://www.seeedstudio.com/LambdaChip-Alonzo-Standard-Version-p-4853.html
https://www.seeedstudio.com/LambdaChip-Alonzo-Standard-Version-p-4854.html
しかしながら、フルセット版/スタンダード版いずれも品切れで入手できません。なんとかしてみようと計画中です。
Author And Source
この問題について(LambdaChip First Impression), 我々は、より多くの情報をここで見つけました https://qiita.com/nanbuwks/items/2696f1ca512543d36b9c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .