インストールを確認する
すべてのツールが正しくインストールされたことを確認しましょう。
Linux のみ
パーミッションを確認する
USB ケーブルを使って micro:bit をコンピューターに接続します。
micro:bit は、これで /dev/bus/usb に USB デバイス(ファイル)として表示されるはずです。どのように
列挙されたかを確認してみましょう:
$ lsusb | grep -i "NXP ARM mbed"
Bus 001 Device 065: ID 0d28:0204 NXP ARM mbed
$ # ^^^ ^^^
私の場合、micro:bit はバス #1 に接続され、デバイス #65 として列挙されました。つまり、
ファイル /dev/bus/usb/001/065 そのもの が micro:bit です。ファイルのパーミッションを確認してみましょう:
$ ls -l /dev/bus/usb/001/065
crw-rw-r--+ 1 nobody nobody 189, 64 Sep 5 14:27 /dev/bus/usb/001/065
パーミッションは crw-rw-r--+ になっているはずです。末尾の + に注意し、次のコマンドを実行してアクセス権を確認してください。
$ getfacl /dev/bus/usb/001/065
getfacl: Removing leadin '/' from absolute path names
# file: dev/bus/usb/001/065
# owner: nobody
# group: nobody
user::rw-
user:<YOUR-USER-NAME>:rw-
group::rw-
mask::rw-
other::r-
上の一覧に、あなたのユーザー名が rw- パーミッション付きで表示されるはずです。表示されない場合は … udev
rules を確認し、次のコマンドで再読み込みしてみてください:
$ sudo udevadm control --reload
$ sudo udevadm trigger
共通
cargo-embed を確認する
まず、USB ケーブルを使って micro:bit をコンピューターに接続します。
少なくとも、micro:bit の USB ポートのすぐ横にあるオレンジ色の LED が点灯するはずです。 さらに、まだ別のプログラムを micro:bit に書き込んだことがない場合は、micro:bit に最初から入っている デフォルトプログラムが背面の赤い LED を点滅させ始めるはずですが、それらは 無視してかまいません。
それでは、probe-rs、そしてその拡張である cargo-embed が micro:bit を認識できるか確認しましょう。これは次のコマンドを実行することで行えます。
$ probe-rs list
The following debug probes were found:
[0]: BBC micro:bit CMSIS-DAP -- 0d28:0204:990636020005282030f57fa14252d446000000006e052820 (CMSIS-DAP)
あるいは、micro:bit のデバッグ機能についてさらに詳しい情報が必要であれば、次を実行できます:
$ probe-rs info
Probing target via JTAG
Error identifying target using protocol JTAG: The probe does not support the JTAG protocol.
Probing target via SWD
ARM Chip with debug port Default:
Debug Port: DPv1, DP Designer: ARM Ltd
├── 0 MemoryAP
│ └── ROM Table (Class 1), Designer: Nordic VLSI ASA
│ ├── Cortex-M4 SCS (Generic IP component)
│ │ └── CPUID
│ │ ├── IMPLEMENTER: ARM Ltd
│ │ ├── VARIANT: 0
│ │ ├── PARTNO: Cortex-M4
│ │ └── REVISION: 1
│ ├── Cortex-M3 DWT (Generic IP component)
│ ├── Cortex-M3 FBP (Generic IP component)
│ ├── Cortex-M3 ITM (Generic IP component)
│ ├── Cortex-M4 TPIU (Coresight Component)
│ └── Cortex-M4 ETM (Coresight Component)
└── 1 Unknown AP (Designer: Nordic VLSI ASA, Class: Undefined, Type: 0x0, Variant: 0x0, Revision: 0x0)
Debugging RISC-V targets over SWD is not supported. For these targets, JTAG is the only supported protocol. RISC-V specific information cannot be printed.
Debugging Xtensa targets over SWD is not supported. For these targets, JTAG is the only supported protocol. Xtensa specific information cannot be printed.
次に、本書のソースコードの src/03-setup ディレクトリにある Embed.toml を
変更する必要があります。default.general セクションには、コメントアウトされた
2 つのチップバリアントがあります:
[default.general]
# chip = "nrf52833_xxAA" # micro:bit V2 の場合はこの行のコメントを外します
# chip = "nrf51822_xxAA" # micro:bit V1 の場合はこの行のコメントを外します
micro:bit v2 ボードを使っている場合は 1 行目のコメントを外し、v1 の場合は 2 行目のコメントを外してください。
次に、以下のいずれかのコマンドを実行します:
$ # 本書のソースコードの src/03-setup にいることを確認してください
$ # micro:bit v2 を使っている場合
$ rustup target add thumbv7em-none-eabihf
$ cargo embed --target thumbv7em-none-eabihf
$ # micro:bit v1 を使っている場合
$ rustup target add thumbv6m-none-eabi
$ cargo embed --target thumbv6m-none-eabi
すべて正しく動作すれば、cargo-embed はまずこのディレクトリ内の小さなサンプルプログラムを コンパイルし、それをフラッシュして、最後に Hello World を表示する見やすいテキストベースのユーザーインターフェイスを 開くはずです。
(うまくいかない場合は、general troubleshooting の手順を確認してください。)
この出力は、たった今 micro:bit に書き込んだ小さな Rust プログラムから送られてきています。 すべて正常に動作しており、次の章に進めます!