1. island_peak

    No comment

    island_peak
Changes in body
Source | HTML | Preview
@@ -1,404 +1,404 @@
![acd-amp-main@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/7e9ae048-a5eb-89a9-93ff-ee7adf6cc492.png)
弊社WEBサイト「APS-WEB」では、オンラインの教材「初心者講座」を掲載しております。ここでは、初心者講座マルチコア編に掲載されたソースコードを実際にお手元で実行するための環境構築手順を紹介いたします。多くのみなさまが「自分のPCを使って、すぐに機能を試し、PoCへ向けて開発に着手」できるよう **まずは、Windows 10(64bit) 日本語版 [Home/Pro]での構築手順** を展開いたします(初心者講座の各回に依存する操作方法は、初心者講座の各WEBページをご参照ください)。是非、お役立てください。
# 本資料の対象となる初心者講座は...
- 初心者講座「マルチコア編」
- https://www.aps-web.jp/academy/amp/
# セットアップ手順は以下のとおりです。
### 基本的なセットアップ手順は以下の手順を基にしています。
[SPRESENSE SDK スタートガイド (IDE 版)](https://developer.sony.com/develop/spresense/docs/sdk_set_up_ide_ja.html)
<font color=red>※SPRESENSE™ Arduino IDE、TeraTermを利用中の方は、事前にウィンドウを閉じてください。</font>
## Windows PCをご準備ください。
- 今回は **Windows 10 64bit環境** を利用します。
- SPRESENSEの開発はmacOSやLinux(Ubuntu)でも開発可能です。
-### Windows以外の環境を利用される場合は、いくつか追加の操作が必要となります。
+### macOSを利用される場合は、いくつか追加の操作が必要となります。
「[macOS上でAPSのgitリポジトリを使う場合。](#macos%E4%B8%8A%E3%81%A7aps%E3%81%AEgit%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E4%BD%BF%E3%81%86%E5%A0%B4%E5%90%88)」をご参照ください。
## SPRESENSEとPCを接続するためのUSBドライバ(USB-UARTドライバ)をインストールします。
- 以下よりUSB-UARTドライバをダウンロードします(SPRESENSE対応版です)。
- [CP210x USB to serial driver (v10.1.3) for Windows 10](https://github.com/sonydevworld/spresense-hw-design-files/raw/master/misc/usb-to-uart-bridge-vcp-drivers/CP210x_Universal_Windows_Driver-v10.1.3.zip)
- インストールします。
- ダウンロードしたZIPファイルをダブルクリックします。
- 解凍ウィザードが表示されるので、任意の場所へ解凍します。
- 解凍先のフォルダで `CP210xVCPInstaller_x64.exe` を実行します。
## 開発に必要なツールをインストールします。
### まず、MSYS2 をダウンロードします。
- [MSYS2](https://www.msys2.org/)から `msys2-x86_64-20190524.exe` をダウンロードします。
- ダウンロードしたファイルをインストールします(特に設定を変更する必要はありません)。
### 続いて、開発環境をインストールします。
- スタートメニューから「MSYS2 64bit」-「MSYS2 MSYS」を実行します。
- コマンドプロンプトに、以下のコマンドを入力し、順次実行します。
- インストールにはネットワークが必要です。
- `$`は入力不要です。
- `#`はコメントです。
```bash
# ホームディレクトリへ移動します。
$ cd ~/
# 開発ツールのインストーラを入手します。
$ curl -L https://raw.githubusercontent.com/sonydevworld/spresense/master/install-tools.sh > install-tools.sh
# インストールを開始します。
$ bash install-tools.sh
# 開発時に使う環境設定をロードします。
$ source ~/spresenseenv/setup
# 起動時に、開発時に使う環境変数が自動的にロードさせるようにします。
$ echo "source ~/spresenseenv/setup" >> ~/.bashrc
```
<img width="891" alt="スクリーンショット 2019-10-19 16.36.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/837956f1-aa68-4b07-8358-6d5bc4a041b4.png">
## Visual Studio Code(統合開発環境:IDE)をインストールします。
- [Visual Studio Code](https://code.visualstudio.com/)のインストーラをダウンロードします。
- インストールにはネットワークが必要です。
### SPRESENSEを開発するための拡張機能をインストールします。
#### 拡張機能の追加画面を開きます。
- Visual Studio Codeを起動します。
- 拡張機能を管理するタブ(下画像の赤枠)を選択し、拡張機能検索ボックス(下画像の緑枠)をクリックします。
- 拡張機能のインストールにはネットワークが必要です。
![vs001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/0fc8e784-111e-bd7a-309f-7056c3e08e4b.png)
#### 拡張機能をインストールします。
- 開発に必要な拡張機能をインストールします。
- 拡張機能のインストールにはネットワークが必要です。
- **「japanese language pack for visual studio code」** をインストールします。
- インストール完了後、Visual Studio Codeを再起動します。
- **「SPRESENSE VSCode IDE」** をインストールします。
- **(備考)** `C/C++`、`Cortex-Debug`も自動的にインストールされます。
- **(注意)** 事前に過去の拡張機能がインストールされている場合は削除してください。
- `spresense-configuration-ui-0.0.12.vsix`
- `spresense-serial-terminal-0.0.12.vsix`
- `spresense-settings-0.0.12.vsix`
- インストール完了後、Visual Studio Codeを再起動します。
- インストール後は下記の様に拡張機能が追加された状態になります。
![vs002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/955507d8-0429-cb66-cd75-9f8a2e4fd108.png)
#### MSYS2 と Visual Studio Code の連携を設定します。
- Visual Studio Code画面上で **F1キー** を入力します。
- コマンドパレット(下図オレンジ枠)が表示されます。
- `MSYS2`と入力し「SPRESENSE:MSYS2パスの設定(Windowsのみ)」を選択します。
- MSYS2がインストールされているフォルダを指定します。
- MSYS2はデフォルトで `C:¥msys64` にインストールされます。
![vs003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/8e046a39-a7f8-07d7-b89b-a284e338f5b8.png)
## 初心者講座マルチコア編にて使うソースコードを入手します。
### 既にAPS初心者講座用のソースコードを入手している場合。
#### 注意
初心者講座に使うソースコードは、Sony Developer World より配布されているソースコード( [こちら](https://github.com/sonydevworld/spresense) )から分岐されたソースコードです。https://github.com/sonydevworld/spresense よりソースコードを入手済の場合は **『はじめてAPS初心者講座用のソースコードを入手する場合』** の手順を参考に、別フォルダへダウンロード( `git clone [URL] spresense-aps` )し、以降はダウンロードしたフォルダ名に読み替えて実行してください。
#### 手順
- **初心者講座マルチコア編にて使うソースコード** を指定します。
- ダウンロードしてあるソースコードを最新の状態にします。
```bash
# ホームディレクトリへ移動します
$ cd ~/
# SPRESENSEのソースコードがダウンロードされていることを確認します
$ ls spresense
$ cd ./spresense
# APS-WEBが配布しているソースの最新版を取得します。
$ git pull
```
### はじめてAPS初心者講座用のソースコードを入手する場合。
- **初心者講座マルチコア編にて使うソースコード** を `git clone` で指定します。
- インストールにはネットワークが必要です。
- 実行に必要なサンプルソースコードが含まれています。
- `$`は入力不要です。
- `#`はコメントです。
```bash
# ホームディレクトリへ移動します
$ cd ~/
# APS-WEBが配布しているソース一式を入手します。
$ git clone --recursive https://github.com/inscape-sa/spresense-aps-v1.git spresense
# SPRESENSEのソースコードがダウンロードされていることを確認します
$ ls spresense
```
ソースコードの入手に成功すると、下記のように`spresense`フォルダが作成されます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3332393736332f64633064396132622d303562302d346263352d376562302d3036346632633033633230352e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/a7c61636-1484-55f9-8549-6ce1b05c1843.png)
### ソースコードを掲載回のバージョンに切り替える。
<font color="red">**本箇所操作の下記コマンドは、初心者講座の本文にあわせてください。**</font>
- <font color="red">git tag</font>
- <font color="red">git checkout</font>
- <font color="red">git branch</font>
- <font color="red">git reset</font>
```bash
# SPRESENSEのフォルダに移動します
$ cd spresense
# SPRESENSEのgitと接続されているsubmoduleを確認します
$ git submodule
c58c11ddd182e8ed04eb931bbf2a82f190874c9d externals/nnabla-c-runtime (v1.0.19)
74f203ea59d99b2ccd8fe2b19c79b0eaadfc31ca nuttx (v1.0.2-20-g74f203e)
# SPRESENSEのgitのリリースリストが表示されます
$ git tag -l
v1.0.0
v1.0.1
v1.0.2
v1.1.0
v1.1.1
v1.1.2
v1.1.3
v1.2.0
v1.2.1
v1.3.0
v1.3.1
v1.4.0
v1.4.0.is.1
# ソースコードを"1.4.0.is.1"という名前でブランチを生成します
$ git checkout -b 1.4.0.is.1 refs/tags/v1.4.0.is.1
Switched to a new branch '1.4.0.is.1'
# このように切り替わっています
$ git branch
* 1.4.0.is.1
master
# 1.4.0.is.1の状態にリセットします
$ git reset --hard HEAD
```
## LPC-Link2をCMSIS-DAP準拠のICEデバッガに設定する。
NXP LPC-Link2(秋月電子通商の販売ページ)、エンクロージャー により、実行中のSPRESENSEの内部を解析することが可能です。ただしLPC-Link2は出荷時にCMSIS-DAP2に準拠するプログラムは書き込まれていないため、下記手順によりCMSIS-DAP準拠のICEデバッガに更新する必要があります。
- [LPC-Link 2 Configuration Tool](https://community.nxp.com/docs/DOC-331683) を入手します。
- サイト下部付近にダウンロード用のリンクがあります。
- LPC-Link 2にデバッガとして使うためのファームウェアを書き込みます。
- LPC-Link 2 の **JP1をOpen(何もつけない:ジャンパ無)状態** とし、PCに接続します。
- LPC-Link 2 Configuration Toolを起動し、下記の手順でファームウェアを書き込みます。
- 「LPC-Link2 CMSIS-DAP debugger with bridges」を選択。
- 「Program the Link2 with the currently selected image」をクリック。
- 画面右に「Program operation successful」と表示されれば、書き込み完了です。
- LPC-Link 2 Configuration Toolを終了します。
- LPC-Link 2 を PCから抜去します。
- LPC-Link 2 の **JP1をClose(ジャンパ有)状態** とします。
- ※LPC-Link2にはジャンパが同梱されていないため、[2.54mmピッチのジャンパピン](http://akizukidenshi.com/catalog/g/gP-03687/)を別途入手ください。
![P8241569.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/decc8990-378f-a421-5465-1353db132285.png)
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3332393736332f39626631373234662d623965392d613764662d646564642d3338383464393234393830322e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/eac3aeab-a9b8-4c3b-38a2-6d1fa51d8392.png)
![vs014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/1b7bcec2-969f-6046-f6c7-5d02450b5311.png)
# 動作確認中に発生しやすいトラブルと対応。
## flash_writerが見つからない(No such file or directory)。
Windows上でSPRESENSE SDK(Visual Studio Code)を実行した際 **一部の条件において「SPRESENSE SDKを構成する一部のファイルがウィルス(脅威)と判定」され、Windowsによって自動的に検疫(削除)され「ファイルが見つからない」旨のエラーが発生する** ことがあります。
![acd-amp-04-fig05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/2df62eaf-4fc1-616a-cf04-46686208da4c.png)
この場合、回復させるにはWindowsのコントロールパネルにある「ウィルスと驚異の防止」設定から検疫されたファイルを確認し、復元ボタンをクリックしてください。
![acd-amp-04-fig03@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/2f041297-a217-3603-23cf-8f96b37f9a48.png)
### 参考情報。
[Windows Defender AV で検疫済みのファイルを復元する](https://docs.microsoft.com/ja-jp/windows/security/threat-protection/windows-defender-antivirus/restore-quarantined-files-windows-defender-antivirus)
# 実際に環境が正常に動作するか確認する。
## 開発ターゲットを組み上げる(SPRESENSE™デバイスの準備)。
以下の機材を組み上げてください。
1. SPRESENSE™ Main Board
2. SPRESENSE™ Extension Board
![acd-amp-main@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/ccc7c7ea-e320-7755-89c1-0e705dd02a27.png)
## PCとmicro-USBケーブルで接続してください。
SPRESENSEが認識され「デバイスマネージャ」にCOMポートとして表示されます。
<img width="924" alt="スクリーンショット 2019-10-09 9.11.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/50a9a78c-8789-0b18-fa2c-bc0873bbf699.png">
## Visual Studio Code開発環境でプロジェクトをビルドします。
- プロジェクトを開いて、プログラムをビルドします(下記手順)。
### ①ワークスペースを開く。
- ワークスペースは "C:¥msys64/home/(ユーザー名)/spresense/"に格納されています(下記①)。
- ワークスペースが開かれると、画面左にファイル一覧が表示されます(下記③)。
<img width="1015" alt="スクリーンショット 2019-10-09 9.12.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/5a36d461-694c-69d7-1054-907302c3eb3b.png">
### ②SPRESENSEを接続したシリアルポートを選択する。
<img width="1050" alt="スクリーンショット 2019-10-09 9.12.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/34aff8db-3c63-d9cc-f06f-831cd70011f4.png">
### ③ブートローダを書き込む。
- F1キーを入力し、SPRESENSE bootloader と入力。
- SPRESENSE:ブートローダの書き込みを実行します。
- Webからのダウンロードを求められますので、同意しダウンロードしてください。
- 初回のみインストールにはネットワークが必要です。
![スクリーンショット 2019-10-19 16.54.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/48dba9fc-c42a-f94b-a20b-bc5572224f11.png)
- 画面右下にダウンロードしたファイルを求めるメッセージが出ますので、ZIPファイルを選択してください。
- SPRESENSEにブートローダのプログラムが数種類書き込まれます。
- **注意:ウィルス検疫によりプログラムが削除される場合があります。**
- **対応:上記の「flash_writerが見つからない」手順で復旧してください。**
念の為、ウィルス検疫の影響を受けていないか、再実行しておきましょう。
- SPRESENSE:ブートローダの書き込みを **再度** 実行します。
### ④カーネル(OS)、アプリケーションをビルドし、デバイスへ書き込む。
- 00_sandboxフォルダの中のファイルどれでも良いので右クリック。
- **SPRESENSE:カーネルのビルド** を実行(下記①)。
- ビルド完了を待つ。
- **SPRESENSE:アプリケーションのビルド** を実行(下記②)。
- ビルド完了を待つ。
- **SPRESENSE:ビルドと書き込み** を実行(下記③)。
- プログラムがデバイスに書き込まれます。
- **注意:ウィルス検疫によりプログラムが削除される場合があります。**
- **対応:上記の「flash_writerが見つからない」手順で復旧してください。**
- Nsh(nsh>)が表示されます。
![スクリーンショット 2019-10-19 16.58.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/28d192fe-dc23-ca79-e298-6fc8f47abe61.png)
### ⑤表示されているターミナルでプログラムを実行する。
- Nsh(nsh>)が表示されます。
- **aps_multicore** と入力し **Enterキー** でプログラムを実行します。
<img width="1004" alt="スクリーンショット 2019-10-09 9.13.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/5d88b123-404a-baaa-627f-d1b94da68af5.png">
以上で、準備は完了となります。お疲れ様でした。
# まとめ
以上の手順で、APS初心者講座マルチコア編をお手元で試すことができます。なお、カメラはLCDを使ったサンプル・プログラムを実行するには「APS学習ボード」のご利用をお勧めします。なお、APS主催のSPRESENSEハンズオンセミナーも計画しておりますので、併せてご活用ください。会場(オフライン)でも、お会いできますこと楽しみにしております。
### 弊社ハンズオンにて当日ご利用できる機材は以下を計画しております。
※ 一部開催都合により、内容が変化する可能性があります。
※ 持ち帰り可能な機材については、別途イベントページにてご案内いたします。
- LCDパネル (LCD 2.2inch ディスプレイ (ILI9431))
- APS学習ボード(SPRESENSE Extension Board用)
- CMSIS-DAP準拠 ICEデバッガ (NXP LPC-Link2)
- SPRESENSE Extension Board
- SPRESENSE Main Board
- SPRESEBSE Camera Board
- micro-USBケーブル
- micro-SDカード
- Windows 10 (64bit) PC
- USBハブ
![acd-amp-05-fig06@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/4f156711-4855-a10d-5c98-d3ca60cd297f.png)
# macOS上でAPSのgitリポジトリを使う場合。
SPRESENSE SDKは、マルチプラットフォーム対応としてmacOS上でも開発することができます。macOS用の詳細なセットアップ手順は [Spresense SDK スタートガイド (IDE 版)](https://developer.sony.com/develop/spresense/docs/sdk_set_up_ide_ja.html) のmacOSの節をご参照ください。
macOSで上記の手順を実行する場合、いくつか操作が必要となります。下記に要点を抜粋します。
## Q. Visual Studio Codeで開いたワークスペースのアプリケーションフォルダが開けない場合。
`git clone`により取得したワークスペースが、下記のようにエラー表示され開けない場合があります。
<img width="284" alt="macbook_fig001.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/2037a44f-ca58-aca9-6b0d-51c36ebd2f77.png">
### 解決方法
こうした場合は「<font color="red">!</font>」表示のある`_aps_sample¥aps00_sandbox`を右クリックし「ワークスペースからフォルダーを削除」を選択し、まずワークスペース上からフォルダを見えない状態(実際のファイルは削除されません)にした上で、
<img width="345" alt="macbook_fig001-01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/45863fe6-04ea-3894-4835-d6ec297585b6.png">
再度、ワークスペースを右クリックし「Add Folder to Workspace...(ワークスペースにフォルダを追加)」をクリック。`git clone` コマンドで取得したspresenseフォルダ内にある `_aps_sample/aps00_sandbox` を選択してください。
<img width="690" alt="macbook_fig002@2x.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/952b373a-d6ff-b5be-1c62-2c09a3c77653.png">
## Q. カーネルやアプリケーションのビルド時にbuild.shに実行権限(Permission)がなく、エラー終了する場合。
チェックアウトし、ビルド準備が整った後に「SPRESENSE:カーネルのビルド」「SPRESENSE:アプリケーションのビルド」「SPRESENSE:ビルドと書き込み」を選択した際、build.shの実行権限がなく「`Permission denied`」となることがあります。
<img width="345" alt="macbook_fig004.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/862a9e8b-0cf9-7f87-e71f-bdd8887a21da.png">
### 解決方法
こうした場合、`git clone` コマンドで取得したspresenseフォルダ内にある`_aps_sample/aps00_sandbox` へ移動し、さらにその奥にある`.vscode`フォルダ(非表示ですが存在します)に移動。`chmod 0777 *.sh` を実行し、ビルドスクリプトに実行権限を付与してください。
<img width="345" alt="macbook_fig005.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329763/918e58d8-ba37-667b-af0e-48f55d3407e2.png">
- コマンドプロンプトに、以下のコマンドを入力し、順次実行します。
- `$`は入力不要です。
- `#`はコメントです。
```bash
# spresenseをダウンロードしたフォルダへ移動
#(ホームディレクトリのspresenseへgit cloneした場合)
$ ~/
$ ./spresense/
# ビルドスクリプトのあるフォルダへ移動
$ cd ./_aps_sample/aps00_sandbox
$ cd ./.vscode
# ここにbuild.shなどがあります
$ ls -l
-rw-r--r-- 1 shino staff 5800 10 28 20:38 build.sh
-rw-r--r-- 1 shino staff 778 10 28 20:38 c_cpp_properties.json
-rw-r--r-- 1 shino staff 614 10 28 20:38 clean_flash.sh
-rw-r--r-- 1 shino staff 832 10 28 20:38 launch.json
-rw-r--r-- 1 shino staff 74 10 28 20:38 spresense_prj.json
-rw-r--r-- 1 shino staff 3519 10 28 20:38 tasks.json
# 実行権限を付与します
$ chmod 0777 *.sh
$ ls -l
-rwxrwxrwx 1 shino staff 5800 10 28 20:38 build.sh
-rw-r--r-- 1 shino staff 778 10 28 20:38 c_cpp_properties.json
-rwxrwxrwx 1 shino staff 614 10 28 20:38 clean_flash.sh
-rw-r--r-- 1 shino staff 832 10 28 20:38 launch.json
-rw-r--r-- 1 shino staff 74 10 28 20:38 spresense_prj.json
-rw-r--r-- 1 shino staff 3519 10 28 20:38 tasks.json
```
# 参考にしたWEBサイト
## GitHubの基本的な操作方法について。
- [GitHubでForkしてPullRequestを送るのはこんなに簡単](https://qiita.com/YumaInaura/items/acff806290c8953d3185)
- [GitHubでフォーク元の差分を取り込む](https://qiita.com/icb54615/items/3544c419a3f6fc3534fb)