SEGGER Embedded Studioの紹介

144Labのメカトロソフト屋の入江田です。

ドイツの組み込み向け統合開発環境 を紹介します。

f:id:irieda:20190517183542p:plain

サイト: https://www.segger.com/products/development-tools/embedded-studio/

外観

f:id:irieda:20190517183558p:plain

特徴

  • 非常に親切&高機能&軽快な動作
  • パッケージマネージャにて必要な依存を容易に管理可能
  • 動作環境はWindows/Linux/macOS対応
  • 本来有償のIDEだけど、nordicのチップを扱う限り無償で利用可能
  • シミュレーションモードもあってPC上でロジックを追うことができます

セットアップ

https://www.segger.com/downloads/embedded-studio/ ここから使っている環境にあったものをダウンロードして入れます。 ちなみにmacOSのHomebrew経由なら以下のコマンドでインストールできます。

brew cask install segger-embedded-studio-for-arm

その後パッケージマネージャから必要なターゲット用のパッケージを選んでインストールするだけです。

nordicのドキュメント

http://infocenter.nordicsemi.com/pdf/getting_started_ses.pdf

nRF-Connect-Desktopによる環境構築

https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Connect-for-desktop

これを対応ホストを選んでダウンロード&インストールすると、

f:id:irieda:20190517183539p:plain:w80 このようなアイコンのアプリを起動しましょう。

f:id:irieda:20190517183551p:plain

「Add/remove apps」を選び、以下の2つのアプリをinstallします。

  • Programmer
  • Getting Started Assistant

一般にはJ-Link(SMD/JTAG)経由でFLASH書き換えやデバッグを可能にする方法を使いますが、外部機器の不要なUSBSDFU方式(nRF52840が内蔵してるUSBシリアル)で書き換えたい場合に「Programmer」を使います。

「Launch app」から「Getting Started Assistant」をLaunchします。

f:id:irieda:20190517183554p:plain

右サイドのVariablesを埋めます。ncs_tagは現時点でmasterである必要がありました。 (ドキュメントにはv0.3.0と書いてたんですが) 1〜4の条件をそれぞれ埋めていきます。 (3に該当する部分は「セットアップ」に書いた内容でOK)

Programmerについて

「Launch app」から「Programmer」をLaunchします。

f:id:irieda:20190517183547p:plain

上部のボタンから接続デバイスを選択できます。 接続すると左のチャートに色分けメモリマップが表示されます。

  • オレンジ: MBR(ブートレコード)
  • 赤: ブートローダ
  • 青: softdevice
  • 緑: アプリケーション

右のチャートはhexファイルを読んだ結果が表示されます。 基本はhexファイルを読み込んでwriteで書き込み、resetでブートです。

J-Linkについて

J-Linkと呼ばれる規格対応のJTAG/SMD接続プローブがあればEmbedded-Studioが連携可能になります。 FLASHの書き換えはもちろん、ソースコードステップでのデバッグも可能になり、デバッグログも出ます。 開発時はJ-Linkプローブが乗った評価ボードで行うことをお勧めします。 量産モデルのターゲットであってもJ-Linkプローブが接続可能にしておくと良いでしょう。

感想

これまで構築した開発環境の中ではもっともスムーズにセットアップできました。 失敗しそうな条件などは徹底的にうまく隠蔽できてそう。 ArduinoIDEとは違い、ビルドコマンドログ等もみれてあとあとCLIによる開発もスムーズに移行できそう。 nordic系の開発をするのならこれが良さそう?

Getting Started Assistantを実施後、nRF-Connect-SDKのサンプルをビルド、書き込んで実行可能なところまで動作確認できました(ble_app_blinky)。