🐽

Armadillo-IoT(A6E) 開発環境を Macで整える

に公開

はじめに

armadilloの推奨開発環境にMac(Mチップ)は存在しないため自分で構築する必要があります。
Lチカまでは仮想環境でできたのでメモとして公開します。
セミナー資料からポイントを絞ってしますので参考程度にどうぞ。

機種と環境

  • armadillo A6E
  • M4 Macbook pro
  • 仮想環境はUTM+ubuntu22.04

引用元資料

こちらが公式の資料です。
検索すると様々なドキュメントが出てきますがこれが一番みやすい。

https://armadillo.atmark-techno.com/system/files/blog/Armadillo_Base_OS_seminar_VScode.ver_v1.7.3.pdf

https://armadillo.atmark-techno.com/blog/10900/10937

推奨の仮想環境パッケージはMacでは動かない

VirtualBox 7.1 以降の開発者プレビュー版では Apple Silicon に対応し始めましたが、x86/x86_64 ゲスト OS のエミュレーションには対応しておらず、M チップ上で実用的に使える状態ではありません。

やったこと

  1. UTMにubuntuをインストール
  2. ATDE環境を構築
  3. armadilloの準備/設定

1.UTMにubuntuをインストール

こちらは割愛。
私はubuntu22.04にしました。本家がDebian11ベースなのでそちらに合わせたほうが無難だったかもしれません。
合わせてVScodeもインストールしてください

https://note.com/h_m8810/n/nda73e6a575dc

2.ATDE環境を構築

UTM

Mac<->armadillo<->UTMをネットワーク

公式の通りに接続。
(ルーターはなくてもいいと思います。)

Mac <-> armadillo

こちらはmicroUSBで armadilloとMacを接続してください。

シリアルで接続確認

ls -la /dev/cu*
crw-rw-rw-  1 root  wheel  0x9000003 Jul 16 10:22 /dev/cu.Bluetooth-Incoming-Port
crw-rw-rw-  1 root  wheel  0x9000001 Jul 16 10:22 /dev/cu.debug-console
crw-rw-rw-  1 root  wheel  0x9000005 Jul 25 15:48 /dev/cu.usbserial-3140

// シリアルで接続してみる
screen /dev/cu.usbserial-3140  115200 

UTM <-> Armadillo 接続メモ

UTM上のUbuntu仮想マシンから、Armadilloデバイスに対して通信を行う設定手順。


ネットワーク設定:UTM で 2つのNICをブリッジ接続

UTM のネットワーク設定画面で、2つのネットワークインターフェースを追加し、それぞれブリッジに接続します。

  • 1つ目:通常のインターネットアクセス用。(ex: enp0s1)
  • 2つ目:ArmadilloとのLink-Local通信用。(ex: enp0s2)

設定イメージ

設定1
設定2


初期状態の確認

ping 169.254.190.160
# → Destination Host Unreachable

ip a
# enp0s2 は DOWN 状態

設定手順

1. enp0s1 の不要なアドレスとルートを削除

sudo ip addr del 169.254.190.200/16 dev enp0s1
sudo ip route del 169.254.0.0/16 dev enp0s1
# RTNETLINK errors は無視してOK

2. enp0s2 を UP にする

sudo ip link set dev enp0s2 up

3. enp0s2 に IP アドレスを付与

sudo ip addr add 169.254.190.200/16 dev enp0s2

4. ルートを enp0s2 向けに追加

sudo ip route add 169.254.0.0/16 dev enp0s2
# 「File exists」と出たら無視してOK

動作確認

ping -I enp0s2 169.254.190.160
# → 応答が返ればOK

curl -I http://169.254.190.160:58080

ブラウザで以下のURLを開いてアクセス確認:

http://169.254.190.160:58080


結果ログ例

仮想環境-> armadillo

PING 169.254.190.160 (169.254.190.160) from 169.254.190.200 enp0s2: 56(84) bytes of data.
64 bytes from 169.254.190.160: icmp_seq=1 ttl=64 time=3.24 ms
64 bytes from 169.254.190.160: icmp_seq=2 ttl=64 time=2.12 ms
...

備考

  • 169.254.x.x は Link-Local アドレス (自動割当IP)
  • enp0s2 を Armadillo接続用に専用化するのがポイント
  • UTM側に2つのNICが必要(通常LAN + Armadillo用)

3.armadilloの初期設定

mkswuインストール

1. mkswu とは

  • Armadillo向けの SWUファイル (ソフトウェアアップデート) を生成する公式ツール
  • Atmark Techno が GitHub で公開、ATDEにも同梱

2. 入手方法

  • ATDE を使う (公式推奨)

    • OVA イメージを VirtualBox などで起動すると最初から mkswu が利用可能
  • GitHub から clone

sudo apt update
sudo apt install cpio zstd jq xxd gawk
git clone https://github.com/atmark-techno/mkswu.git
cd mkswu
./mkswu/mkswu --config-dir ./conf デスクリプションファイル.desc

3. PATH の設定

cd ..
mkdir -p ~/.local/bin
ln -s ~/mkswu/mkswu ~/.local/bin/mkswu
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
which mkswu  # → /home/user/.local/bin/mkswu

4. VSCode の settings.json 設定 (VSCodeターミナル用)

"terminal.integrated.env.linux": {
  "PATH": "/home/user/.local/bin:${env:PATH}"
}

mkswu 初期化 (鍵・設定ファイル生成)

./mkswu --config-dir ./conf --init
  • Common Name: 任意 (例: armadillo)
  • 秘密鍵パスワード: 空でもOK(2回 Enter)/本番は8字以上推奨
  • AES 暗号化: N(通常)
  • Atmark署名許可: Y(通常)
  • root パスワード: 8文字以上+英数字記号

出力ファイル(conf/ 内):

  • mkswu.conf
  • swupdate.pem(公開鍵)
  • swupdate.key(秘密鍵)

SWU ファイル生成

./mkswu --config-dir ./conf initial_setup.desc
# → initial_setup.swu が生成される

VSCode 拡張からの実行エラー対策

  • 問題: generate_initial_setup_swu.shmkswu: command not found
  • 原因: VSCode は非対話シェルで ~/.bashrc を読まない
  • 解決策: 以下を settings.json に追加
"terminal.integrated.env.linux": {
  "PATH": "/home/user/.local/bin:${env:PATH}"
}

VSCode 再起動後に mkswu が認識される


セットアップ後

セット完了


初期化

資料の通りinitial_setup.swuをインストールすればOK

他人の署名が残っている場合

初期化しても署名エラーが残っている場合は署名をリセットした方がいい。

https://armadillo.atmark-techno.com/faq/swupdate-troubleshooting-abos

Armadillo上で実行:

abos-ctrl certificates reset

その後 initial_setup.swu を再適用

初期化

Discussion