はじめに
これは ITソルーション室 Advent Calendar 2024 の12/17の投稿になります!
他の方の記事も上記リンクから読めますのでよろしければ!
この記事ではnRF 52840を使ってみようとした過程を書いていきます.
が,正直に言ってあまり参考にならないものになったと思っています.
それでも良ければ見ていってください~
環境
- nRF 52840 (秋月電子)
- WSL 2 (Ubuntu 24.04)
準備
rustのインストール
rustをインストールします.
https://www.rust-lang.org/ja/tools/install
wslにusbデバイスを認識させる
今回はWSL上で開発していくのでまずはWSLにnRFを認識させます.
こちらを参考になんやかんやします.
ハローワールドする
結論から言うとChatGPTが神です.(会話履歴)
私は神から賜ったお言葉を粛々と実行したのみです.
とはじめは思っていたが色々修正したら原形2割もなかった
nRF52840(ARM Cortex-M4F)向けのビルドターゲットを追加します.
rustup target add thumbv7em-none-eabihf
ツールをインストールします.
probe-runはこのあとprobe-rsに変更しました(depricateみたいですね)
cargo install probe-run
cargo install flip-link
cargo install defmt-print
probe-runをインストールする際にlibudevが必要と言われたのでインストールしました.
sudo apt install libudev-dev pkg-config
probe-rsのインストール
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/probe-rs/probe-rs/releases/latest/download/probe-rs-tools-installer.sh | sh
rustプロジェクトの作成
cargo new nrf52840_project --bin
cd nrf52840_project
Cargo.tomlの設定
[package]
name = "nrf52840_project"
version = "0.1.0"
edition = "2021"
[dependencies]
cortex-m = "0.7"
cortex-m-rt = { version = "0.7", features = ["device"] }
critical-section = "1.2"
nrf52840-hal = "0.18"
defmt = "0.3"
defmt-rtt = "0.3"
panic-probe = { version = "0.3", features = ["print-defmt"] }
[profile.dev]
panic = "abort"
[profile.release]
panic = "abort"
[features]
# set logging levels here
default = [
"defmt-default",
]
# do NOT modify these features
defmt-default = []
defmt-trace = []
defmt-debug = []
defmt-info = []
defmt-warn = []
defmt-error = []
memory.xの配置
...どこで参照されるんだろう?
ChatGPTはmainとmasterを間違えてた.(聞き直しても間違えてた)
curl -O https://raw.githubusercontent.com/nrf-rs/nrf-hal/master/nrf52840-hal/memory.x
main.rsを以下のようにします.
#![no_std]
#![no_main]
use nrf52840_hal as hal;
use cortex_m_rt::entry;
use defmt;
use defmt_rtt as _;
use panic_probe as _;
#[entry]
fn main() -> ! {
defmt::info!("Hello, nRF52840!");
loop {}
}
cargoの設定
[build]
target = "thumbv7em-none-eabihf"
[target.thumbv7em-none-eabihf]
rustflags = [
"-C", "link-arg=-Tlink.x",
"-C", "link-arg=--nmagic",
"-C", "link-arg=-Tdefmt.x",
]
runner = "probe-rs run --chip nRF54L15"
なんやかんやでコンパイルエラーを解消したときのcargo runの実行結果がこちらです.
...
ここまでやる過程で感じていました.
所々に出てくるデバッグプローブとはなんだろうと,SWDとはなんだろうと.
そして,コンパイルエラーを抜けた先,つまりnrfへの接続・書き込みの段階で出てきたこのエラー."No connected probes were found."
そうです,私はUSBをつないどきゃーどうにかなると思っていましたがそんなことなかったらしいです.
この記事を見る限りUSBでできそうだけどなーと思っていますが,どうやるんだろうなーという状況で迎えた12/18の0543.
nRF connect for Desktopもなんか認識してくれなかったしなぁ
さいごに
今回は12/17のアドベントカレンダーとして書いたのでとりあえず公開しますが,また追記していきたいですねー
(私は朝7時までは前日に含まれていると思っているので間に合っています())
ChatGPTにprojectが追加され,とても整理しやすくなったのはいいのですがprojectに入っている会話が共有できない...
そのうちできるようになると思いますが,わざわざprojectから外さないといけないのがめんどかったです.
それでもチャッピーは控えめに言って神なのですが.
引っかかったこと
defmt-trrには0.4.xが存在しているが,0.4にすると動かなかった
defmt = "0.3"
defmt-rtt = "0.3"