JavaScriptを有効にしてください

秋月謎SoC基板付きケースでArch Linuxを動かす

 ·   ·  ☕ 4 分で読めます

あらすじ

秋月電子が「部品取りに!無線モジュール付きSoc基板+白色プラスチックケース」と題して以下のようなシングルボードコンピュータを販売していました。

外観

出所はデジタルグリッドという会社が作っていたデジタルグリッドコントローラと呼ばれるIoTデバイスだそうで、当時のニュース記事に全く同じボードが画像として掲載されていました。1

1000円という金額が安く見える理由は、その中に搭載されているWi-SUNという通信規格のボードにあります。
これは単体で購入すると1万円程度するもので、それが1000円で買えるだけで十分すぎるほど安いです。
私も2つほど購入しましたので、この上でArchLinuxを動作させることにしました。

先人の知恵

とは言っても、先人が既に解析を済ませてデバイスツリーまで書かれてしまっているので、それを流用するだけです。
解析の様子が先人のブログにまとまっています。

温度センサーはテーブルがないので作成の必要があり、今後触ってみたいですね…

TL;DR

  • 基本はBBB(BeagleBone Black)
  • ただし、u-bootにこのパッチを当てる必要がある。
  • Wi-SUNのuartやresetピン、3Gモデムのresetピン、LEDはGPIOに刺さっているので、適切にデバイスツリーに記述する必要がある。

ということでできたのがbuildrootyoctoのレイヤーのようです。すごい…


やってみる

ジャンクなので気にせず色々触れるのが良いですね。

1. U-bootを起動する

buildrootやyoctoのU-bootをビルドするなりしてSDカード等からU-bootが起動できるようにします。
ここらへんは既に先人がかなり解説されているのでここではスキップします。(ただし、ArchLinuxのBBBのu-bootは何故か起動しませんでした。後々調べる予定)

2. デバイスツリーをビルドする

buildrootやyoctoのdtbを直接使用するとバグることがあるので、メインラインカーネル(又はARCHカーネル)のツリーでビルドします。
私はbuildrootのdts2を利用させていただきました。

本当はArchカーネルのツリーでビルドしてパッケージ化したほうが良いのでしょうが、私は面倒なので適当にメインラインでビルドしてしまいました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
diff --git a/Makefile b/Makefile
index d08a3c4..eef4974 100644
--- a/Makefile
+++ b/Makefile
@@ -927,6 +927,7 @@ dtb-$(CONFIG_SOC_TI81XX) += \
        dm8168-evm.dtb \
        dra62x-j5eco-evm.dtb
 dtb-$(CONFIG_SOC_AM33XX) += \
+       am335x-akiduki-junk.dtb \
        am335x-baltos-ir2110.dtb \
        am335x-baltos-ir3220.dtb \
        am335x-baltos-ir5221.dtb \

適当に追記してbuildrootのdtsをarch/arm/boot/dtsあたりに落とし、Wi-SUNに関する基板設計ミスをソフトウェアで修正します(爆)。3

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
diff --git a/am335x-akiduki-junk.dts b/am335x-akiduki-junk.dts
index b4398e2..0b23c7d 100644
--- a/am335x-akiduki-junk.dts
+++ b/am335x-akiduki-junk.dts
@@ -33,29 +33,35 @@
                         gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
                         default-state = "on";
                 };
+               usr_wisun_pin5 {
+                       label = "wisun_pin5";
+                       gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };

できたら、ARCH=arm make multi_v7_defconfig && make -j128 dtsなどして適当にam335x-akiduki-junk.dtbを作成します。

3. MicroSD等にファイルシステムを展開する

ArchLinuxARMのBBBのページを見ながらArchLinuxARM-am33x-latest.tar.gzを展開します。
ただし、

  • 自分でU-Bootをビルドした人は"Install the U-Boot bootloader"の項は飛ばしましょう。
  • 先程ビルドしたam335x-akiduki-junk.dtbもお使いのブートローダーのbootcmdに合わせて適切に配置しましょう。
  • 以下のような記述がありますが、スイッチを押す必要はありません。

apply 5V power while holding down the switch on the top of the board near the micro SD slot.

4. Profit

Neofetch

pacman -Syuしてrootとalarmのパスワードを変えておきましょう。

Tips

picocomでx/ymodemしたいとき

1
picocom --baud 115200 --send-cmd="sb -vvX" --receive-cmd="rb -vvX" /dev/ttyUSB0
1
picocom --baud 115200 --send-cmd="sb -vvY" --receive-cmd="rb -vvY" /dev/ttyUSB0
共有

hayabusa2yk
著者
hayabusa2yk
Dev/Admin of servers