SPRESENSE　セットアップとLチカ

# 記事の内容
SPRESENSEの開発環境のセットアップとLチカをする。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483299/e391a1f2-b4a6-dd80-3733-f4e5d45bb8a5.jpeg width=320>
* セットアップ(1)VS Code（IDE版)
* セットアップ(2)　Arduino IEDでの開発
* セットアップ(3) Spresense SDK（ubuntu）
* セットアップ(4) Spresense SDK（mac）

## SPRESENCEとは
- [Spresense について](https://developer.sony.com/spresense/development-guides/introduction_ja.html)
- [SPRESENSE をはじめよう！](https://qiita.com/TaroYoshino/items/e9ec0c6dabacb6074fbb)

## セットアップ(1) VS Code（IDE版）
VS Code及びその拡張機能 Spresense VSCode IDE を使ってSpresense SDKのアプリケーションを開発を行う
- 手順通りに進める[Spresense SDK スタートガイド (IDE 版)](https://developer.sony.com/spresense/development-guides/sdk_set_up_ide_ja.html)
    - 4.5.4. 動作確認　まで完了させると一通りセットアップは完了。

### セットアップ時のエラー対応
- [Homebrew のインストールで error: RPC failed; curl 92](https://qiita.com/bacchus1225/items/d9ec1e2387c2e82d25ba)
- [事象 : RPC failed; curl 18 transfer closed with outstanding read data remaining](https://qiita.com/chovin/items/0023a24a5587394e8156)
対応3 : ネットワーク環境がいい時に実行する
使っていた時にネットワークが遅かったのですが、後日ネットワークが早くなった時に実行したらエラーにはなりませんでした。
技術的な解決ではないのですが、通信が早い環境で行うのも1つの対策のようです。

- ビルドがうまくいかない時
　ディレクトリを変えるとうまく行った。(再現性がないかも？)
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483299/39b62424-16da-7c59-1050-6c4c37eb9922.png width=320>


## セットアップ(2)　Arduino IEDでの開発
VSCodeとSDKだと上手くいかない事が多々あったので、とりあえずこちらの開発環境を使うことにした。

- Spresense ブートローダーのインストール
https://developer.sony.com/spresense/development-guides/arduino_set_up_ja.html

- [Spresense Arduino スタートガイド](https://developer.sony.com/spresense/development-guides/arduino_set_up_ja.html)
    - 3. LED のスケッチを動かしてみる
        ここのスケッチを動かして、本体のgreenのLED4つが順次点灯すれば成功。

<details><summary>LED 点灯テストサンプルスケッチ</summary>
<div>

```bash:Spresense LED test
void setup() {
    pinMode(LED0, OUTPUT);
    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    pinMode(LED3, OUTPUT);
}

void loop() {
    digitalWrite(LED0, HIGH);
    delay(100);
    digitalWrite(LED1, HIGH);
    delay(100);
    digitalWrite(LED2, HIGH);
    delay(100);
    digitalWrite(LED3, HIGH);
    delay(1000);

    digitalWrite(LED0, LOW);
    delay(100);
    digitalWrite(LED1, LOW);
    delay(100);
    digitalWrite(LED2, LOW);
    delay(100);
    digitalWrite(LED3, LOW);
    delay(1000);
}
```
</div></details>

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483299/e391a1f2-b4a6-dd80-3733-f4e5d45bb8a5.jpeg width=320>

## Examples 一覧
様々なサンプルコードがあるので試してみる。
- [Spresense SDK チュートリアル](https://developer.sony.com/spresense/development-guides/sdk_tutorials_ja.html#_examples_%E4%B8%80%E8%A6%A7)

# セットアップ(3) Spresense SDK（ubuntu）
* [公式：Spresense SDK スタートガイド](https://developer.sony.com/spresense/development-guides/sdk_set_up_ja.html#_%E9%96%8B%E7%99%BA%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97)
基本的に記載の手順で実行

### セットアップ時のエラー対応

### エラー１　2.5.1. Linux 上でのシリアルポートの確認方法
```bash:エラー内容
~$ dmesg | grep "cp21.*attached"
dmesg: カーネルバッファの読み込みに失敗しました: 許可されていない操作です
```

* [対処法の参考](https://matoken.org/blog/2019/03/03/run-dmesg-as-a-general-user-with-debian-buster-sid/)
要因:root 以外ではdmesg が読めないようになっています．
```bash:kernel.dmesg_restrict設定の確認
$ sudo sysctl -a|grep dmesg
kernel.dmesg_restrict = 1
$ cat /proc/sys/kernel/dmesg_restrict
1
```
これを 1 から 0 に変更することで以前と同じ動作となります

```bash:対処方法
$ sudo sysctl -w kernel.dmesg_restrict=0
```


### エラー2 ./build.sh 実行権限がない

https://qiita.com/mokio/items/daa99f969a66771b80f7

```bash:エラー内容
amd@amd-Victus-by-HP-Gaming-Laptop-15-fb0xxx:~/PMV_for_build_test$ ./build.sh
bash: ./build.sh: 許可がありません
```

```bash:実行権限の確認
amd@amd-Victus-by-HP-Gaming-Laptop-15-fb0xxx:~/PMV_for_build_test$ ls -l build.sh
-rw-rw-rw- 1 amd amd 394 11月 28 11:13 build.sh
```

```bash:実行権限の付与と確認
amd@amd-Victus-by-HP-Gaming-Laptop-15-fb0xxx:~/PMV_for_build_test$ chmod 755 build.sh
amd@amd-Victus-by-HP-Gaming-Laptop-15-fb0xxx:~/PMV_for_build_test$ ls -l build.sh
-rwxr-xr-x 1 amd amd 394 11月 28 11:13 build.sh
```