HN 日本語サマリー

← 一覧へ戻る
プログラミング

8ドルのLinuxコンピューター (2022)

The $8 Linux Computer (2022) (thelittleengineerthatcould.blogspot.com)

171 pointsby zenincognito78 コメント

要約

この記事では、わずか8ドルで購入できるRISC-Vベースのシングルボードコンピューター「Ox64」を紹介しています。Linuxを動作させることが可能ですが、UART経由でのプログラミング、開発ツールの互換性問題、そしてフラッシュツールの修正など、セットアップには多くの困難が伴います。筆者はこれらのハードルを乗り越え、Ox64がPCと通信できるようになった段階までを報告しています。

全文翻訳

The Little Engineer That Could

はい、その読み方で合っています… 8ドルでRISC-Vコンピューター上でLinuxを実行できます。しかも、MMUのない最小限のカーネルだけではありません。Ox64には、高性能なRISC-Vコアが搭載されています。しかも、コアは1つではなく、3つ(すべて異なる種類)です。エキサイティングな時代です!

注意! 執筆時点では、イーサネット、Wi-Fi、SDカードは動作していません。これに飛びつく前に、この点を理解しておくことが重要です。

[画像:Ox64の画像]

マイクロコントローラーのように見えますが、UNIXマシンのように動作します。素晴らしい、そうでしょ? しかし、それを起動して実行するのは、決して簡単なことではありません。乗り越えなければならないハードルがたくさんあります!

ハードル1: Arduino、ESP32、Stamp-C3、rPi PicoのようにUSB経由でプログラムすることはできません。いいえ… これはUARTのTX/RXピン経由でプログラムする必要があります。上の写真では、それらがGPIO14 / GPIO15とGNDに接続されているのがわかります。

ハードル2: Wayland上のUbuntuを使用している場合、フラッシュツールDev Cubeは起動時にクラッシュします。代わりにXorgに切り替える必要があります。

$ ./BLDevCube-ubuntu 
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
/usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so: undefined symbol: g_log_structured_standard
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
GLib-GIO-Message: Using the 'memory' GSettings backend.  Your settings will not be saved or shared with other applications.

(BLDevCube-ubuntu:54646): GLib-GIO-ERROR **: Settings schema 'org.gnome.settings-daemon.plugins.xsettings' does not contain a key named 'antialiasing'
Trace/breakpoint trap (core dumped) 
  

というわけで、UARTプログラミングですね… よし、あの小さなCH340Gドングルを使おう。Amazonで一つ購入しましたが、うまくいきませんでした… Dev Cubeでハンドシェイクのたびに失敗しました(ハードル3)。

幸いなことに、一部の人々は、rPi PicoのようなRP2040デバイスでプログラムできることを発見しました。手元にAdafruitのKB2040があったので、それを使いました。

[画像:KB2040の画像]

これでハードル4に到達しました。KB2040をPCとOx64間のシリアルブリッジにどうやって変換するか? RP2040のGPIO-4をOx64のGPIO-15に接続します。RP2040のGPIO-5をOx64のGPIO-14に接続します。もちろん、グランドも接続します。M0をフラッシュするための接続方法は以下の通りです。

[画像:KB2040とOx64の配線図]

次に、picoprobeをRP2040にロードする必要があります。これは、BOOTボタンを押しながら電源を入れ、picoprobeのuf2ファイルを供給することで行えます。

さて、これでフラッシュできるでしょうか? 残念ながら、まだできません。ハードル5:DevCubeは依然としてOx64をフラッシュできませんが、代わりにbflb-mcu-toolを使用できます。

bflb-mcu-toolを使えば、すべて準備完了でしょうか? そうではありません。ハードル6:ツールが機能するように、事前に修正する必要があります。これは、~/.local/lib/python3.10/site-packages/bflb_mcu_tool/libs/bflb_interface_uart.py ファイルを編集して、DTRとRTSの処理を削除することを意味します。私のコピーはこちらです:gist。

これで、Ox64はMicroUSB経由で給電され、RP2040はUSB-CでPCに接続された状態で、ようやく何かをフラッシュできます。そのために、bl808 Linuxガイドからlow_load_bl808_m0.binを取得し、以下のようにフラッシュしました:

$ bflb-mcu-tool --chipname=bl808 --port=/dev/ttyACM2 --baudrate=2000000 --firmware=out/low_load_bl808_m0.bin
    

その後、Ox64からKB2040経由でPCに以下のような出力が得られるようになりました:

dynamic memory init success,heap size = 156 Kbyte 
E907 start...
mtimer clk:1000000
psram clk init ok!
    

よし、ささやかな始まりですが、Ox64がPCと通信できるようになりました!やった!Ox64上でLinuxを実行できるかどうか、後で私のブログに戻って確認してください!私の理解では、D0にも何かをフラッシュし、実際のOSもフラッシュする必要があるからです。

更新: パート2はこちらです。