Nordic nRF5340 PDKを使おう　～nRF Connect SDKをインストールしてSegger Embedded StudioでZephyr OSを使おう～

Nordic nRF5340を使おう インプレッションの続きです。
https://qiita.com/usashirou/items/860d99b6db5d992fe595

##nRF5340を使用するには？
nRF5340では、SDKが公開されないことが発表されています。
使用するには、nRF Connect SDKを使用するようにとのことです。

まずは、nRF Connect SDKをインストールしていきましょう。

##Nordic公式チュートリアル
Nordicの公式チュートリアルはこちらです。
https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html
##Zephyr Project Documentation
https://docs.zephyrproject.org/latest/boards/arm/nrf5340_dk_nrf5340/doc/index.html

##nRF Connect SDKをインストール
nRF Connect SDKをインストールして、Getting Started Assistantを起動させます

###nRF Connect SDK
https://www.nordicsemi.com/Software-and-tools/Software/nRF-Connect-SDK

##Getting Started Assistantをセッティング
コンパイルするプログラムはGithubにあります。
https://github.com/NordicPlayground/fw-nrfconnect-nrf
Getting Started AssistantはGithubのリポジトリをコピーし、ツールチェーンを確認するために存在しており
使用しなくても問題ありません。

起動してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/3d587d86-b646-bb38-2ba5-9a2011dd3210.png)

*Getting Started AssistantのVariablesは変更する必要はありません。

ｎRF Connect　SDKを起動していきなり全部確認してねと言ってもダメだよと言われるので一個一個インストールしていきます。
![setup-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/5e2c7640-b41d-2756-1970-987de98dd28c.jpeg)

Windows10で説明します。
コマンドプロンプトを起動します。
コマンドプロンプトは検索でcmdと打つことで出てきます。
管理者権限で起動するようにしてください。（管理者でないとインストールできません）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/0df8cae2-5778-4f17-fa94-e8bf406d969d.png)

赤枠で囲っているプログラムを一個一個コピーして、実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/03b66763-6cd8-4798-61d8-5a6ce3ac3251.png)

###GNU ARM Embedded toolchain
GNU ARM Embedded toolchainは
c:\gnuarmemb
にインストールしましょう。
これは後でかなり痛い思いをすることになるので要注意です
（いろいろなコンパイラーを使っていると、インストールしているフォルダがいっぱいあるケースもあるので要注意です）

次に２のClone the nRF Connect SDKを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/c72f2eb0-5902-8e57-8f68-6e49008bffaf.png)

pip3 install westまで実行したら、コマンドプロンプトを一般モードで起動します。
管理者モードで起動するとエラーになります。
右が一般モード、左が管理者モードです。
![setup3-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/1e4e7f20-51bf-0b25-4669-fef89639f19c.jpeg)

###Githubからプログラムをコピーする
コードは以下に変更しています。
c:\ncsにGithubの中身をコピーしています。
*git checkout ncs_tagはエラーになります。
以下からリリースタグを取ってきました。（別に無くても問題ないです）
https://github.com/NordicPlayground/fw-nrfconnect-nrf/releases

```
cd c:\
mkdir ncs
cd ncs
west init -m https://github.com/NordicPlayground/fw-nrfconnect-nrf
west update

cd c:\ncs\nrf
git checkout ncs_tag
west update

cd c:\ncs
pip3 install -r zephyr\scripts\requirements.txt
pip3 install -r nrf\scripts\requirements.txt
pip3 install -r mcuboot\scripts\requirements.txt
```
sourcecode_rootを変更しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/e9b1c0fa-68a3-d827-3c53-3aec320f7ff9.png)
ncs_tagは先ほど持ってきたリリースタグを入力します。


##SEGGER Embedded Studioをインストール
SEGGER Embedded Studioをインストールします。
今回は、指定のURLからダウンロードして以下に置きました。
C:\Program Files\SEGGER\arm_segger_embedded_studio_v430c_win_x64_nordic

##SEGGER Embedded Studioをセッティングする
私の起動パスはこちら
C:\Program Files\SEGGER\arm_segger_embedded_studio_v430c_win_x64_nordic\bin\emStudio.exe
ショートカットを作っても良いと思います。
Tools⇒Optins
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/aa6260e3-0c35-fdd1-7768-968e427f5993.png)
nRF Connectを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/167ec6bc-3c5e-ef75-2e2d-de3ff122d7bd.png)

・GNU Arm Embedded Toolchain Directory 
c:\gnuarmemb
標準)C:/Program Files (x86)/GNU Tools ARM Embedded/XXXXX
XXXXXはバージョン
EX)C:/Program Files (x86)/GNU Tools ARM Embedded/8 2019-q3-update
・Zephy
C:\ncs\zephyr
・CMake Executable
EX)C:/Program Files/CMake/bin/cmake.exe

## Open nRF Connect SDK Project
次にプロジェクトを設定していきましょう。
いろいろやっている中でエラーが多発しているので動く構成を紹介します。

File⇒Open nRF Connect SDK Projectをクリック 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/830f1151-e8f7-c636-5468-bc8cee8d9114.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/bfcee1ac-63ce-82b6-ff13-68a336e7bccc.png)

・CMakeLists.txt
C:/ncs/zephyr/samples/basic/blinky/CMakeLists.txt
・Board Directory
C:/ncs/zephyr/boards/arm/nrf5340_dk_nrf5340
・Board Name
nrf5340_dk_nrf5340_cpuapp

nrf5340_dk_nrf5340_cpuapp：アプリケーション部
nrf5340_dk_nrf5340_cpuappns：セキュリティ無し
nrf5340_dk_nrf5340_cpunet ：ネットワーク部
・Build Directory
C:/ncs/zephyr/samples/basic/blinky/build_nrf5340_dk_nrf5340_cpuapp

CleanBuild Directoryをチェックする必要があります。

ここで指定するCMakeLists.txtは実行したいプロジェクトになります。
BeaconだったりBlinkyだったりといった実行したいプロジェクトのCmake.txtを選択します。
**Boardはnrf5340_dk_nrf5340_cpuappをセキュリティありを指定するようにとなっていますが、
今後は、セキュリティ無しのcpuappnsを選択することも可能になるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/50f6894b-8fc2-dafe-3354-42835e0435ba.png)

うまくいくとこんな画面が出て起動します。
![setup8-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/f599455e-88a6-03f9-6718-8218aec411f9.jpeg)
これでビルドできるはずです。
![setup9-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/d1d3e34b-6895-2e9c-9ade-41bbbd0f0655.jpeg)

###Cannot start "cmake"
Cannot start "cmake"と出る場合は、CMake ExecutableはCmakeのインストール先を指定します。
Tools⇒Optins⇒nRF Connect
EX)C:/Program Files/CMake/bin/cmake.exe
![setup6-6-3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/5619f559-1588-9225-2672-e1ca5361deaf.jpeg)

###can't load project file
The reported error is 'solution load command failed (-1)'

こんなエラーが出るケースがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/b1a934ea-562a-de5d-5573-0cc7eb47b02d.png)
いくつかのプロジェクトで発生しており、二進も三進もいかないです。
無理やり通したのが以下です。
直ると良いのですが・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/93ad4f25-ec70-139c-aaa5-4070ccc987d1.png)

##J-Linkのセッティング
Open nRF Connect SDK Projectの設定が終了し、Cmakeが通ったらビルドできるのですが、
現段階ではｎRF5340のJ-Linkのセッティングデータが入っていないために追加する必要がるようです。
以下を参照しましょう。
https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_nrf5340.html

まずは、 J-Link Software and Documentation Packをダウンロードしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/cb044d80-b4e8-7516-4a66-bfe8004483c6.png)
ライセンスを確認して、ダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/2a393c76-b7e7-a64d-f741-015f4d043dca.png)
以下は適宜進めていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/90edda63-a3c9-19b8-f5cc-10fb8c8b4139.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/095e126f-da23-0e4c-e471-bc0eb5d96c34.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/fe31cd0f-6d2d-0074-d19e-fa739de0b9f3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/a9887022-d435-1e32-0dbf-53e9dc305eba.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/08c70727-afa2-ae5b-3151-24ee9dca1bc0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/b7cab297-1d15-9676-2962-981d2c0c15db.png)

##Optionsの設定
続いて、ちょっと面倒な設定をしていきます。
プロジェクトツリーのトップで右クリップ⇒Optionsを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/dd9ba6fd-7d23-76eb-d30c-0797a34c81fa.png)
Debug⇒Debuggerを選択し、TargerDeviceを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/12f8564f-30f0-cb0c-4899-493d6cf436f1.png)
資料はnrf9160を選択して、nrf5340とありますが、直接nRF5340_xxAA_APPを選択して問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/83c39b7f-6b69-3b10-d5dd-ad44da2947fc.png)
nRF5340_xxAA_APPを確認してOKをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/551d86c4-cdc7-e436-394f-c09ef694d4f6.png)

この状態で、Debugをすればコンパイルが通ると思います。
（私は、なぜか、1度目が、エラーになり、2度目が通ります）
![setup13-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/6a696b3a-ce12-1f0e-26f2-01f4a7fef0a5.jpeg)
この画面が一瞬表示されれば起動されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/5aebda84-542a-7a15-8d2e-51f0186f11cf.png)
無事起動します
TeraTermに起動した旨が表示されます（すべてではありません）
Bluetoothで接続するとConnectedと表示されます。
![setup14-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/017187a7-fc9c-73e7-f97a-732f8a7e0066.jpeg)

以上でｎRF5340にZephyのプログラムを入れて、使う事が出来ました。