1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

nRF52840で色々したかった

Posted at

はじめに

これは ITソルーション室 Advent Calendar 2024 の12/17の投稿になります!
他の方の記事も上記リンクから読めますのでよろしければ!

この記事ではnRF 52840を使ってみようとした過程を書いていきます.
が,正直に言ってあまり参考にならないものになったと思っています.

それでも良ければ見ていってください~

環境

準備

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の設定

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を間違えてた.(聞き直しても間違えてた)

path/to/nrf52840_project
curl -O https://raw.githubusercontent.com/nrf-rs/nrf-hal/master/nrf52840-hal/memory.x

main.rsを以下のようにします.

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の設定

nrf52840_project/.cargo/config.toml
[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の実行結果がこちらです.
Pasted image 20241218045030.png

...
ここまでやる過程で感じていました.
所々に出てくるデバッグプローブとはなんだろうと,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"
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?