[失敗のち成功]platformioでpic32mx

PIC32MXの環境をplatformioに移せるか確認したところ、まだMac OS X用のtoolchainが用意されていないです。

```console
bash-3.2$ platformio run
[Wed Jan 11 22:47:23 2017] Processing pinguino32 (platform: microchippic32, boar
d: pinguino32, framework: arduino)
--------------------------------------------------------------------------------
PlatformManager: Installing microchippic32
Downloading...
Unpacking  [####################################]  100%
microchippic32 @ 1.3.0 has been successfully installed!
The platform 'microchippic32' has been successfully installed!
The rest of packages will be installed automatically depending on your build env
ironment.
PackageManager: Installing framework-arduinomicrochippic32 @ ~1.10301.0
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%
framework-arduinomicrochippic32 @ 1.10301.0 has been successfully installed!
PackageManager: Installing toolchain-microchippic32 @ ~1.40803.0
Error: Could not find a version that satisfies the requirement '~1.40803.0' for 
your system 'darwin_i386'
bash-3.2$ 
```

platformioは以下のURLからパッケージを探すようです。

http://dl.platformio.org/packages/manifest.json

ここのtoolchain-microchippic32の中のsystemにdarwin_i386が無いためエラーになるようです。

まだpinguinoに寄生してビルドするしかないようです。

ちなみに私はAVR系はArduino1.06のIDEまたはcliでgccで、PICの8ビットはmplabで32bitはpinguinoのgccで、ESP8266,MSP430はplatformioで、LPCはmbedを使っています。

AVRやEPS8266はgccだけですが、他の環境はいくつかコンパイラーあるケースがあり、混乱しているような気もします。

Platformioのサポートは既存のフレームワークをベースにしているが、PIC32ではPinguinoではなく、chipKITというのを使っているようだ。

2017/3現在Mac OS Xの雪豹ではESP32,AVRとこのPIC32が使えてません。ESP8266,MSP430,LPC,STM32は使えています。

2018/3 dl.platformio.orgのファイルを手動でダウンロードして.platformio/packages/に展開したところビルドできるようになりました。[chipKIT DP32のクローン](http://chipkit.net/diy-chipkit-board/)を使ってdownloadできることを確認しました。

2018/7 [修正してくれた](https://community.platformio.org/t/pic32-on-mac-os-x-10-6/3680)ようですが、試して動かなくなると痛いので、未確認です。

```console
bash-3.2$ platformio run --target upload
[Fri Mar  9 14:14:56 2018] Processing chipkit_dp32 (platform: microchippic32, bo
ard: chipkit_dp32, framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Converting main.ino
Collected 28 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/chipkit_dp32/src/main.ino.o
Linking .pioenvs/chipkit_dp32/firmware.elf
Checking program size
text     rodata    data     bss     dec     hex filename
6152        164     216     776    7308    1c8c .pioenvs/chipkit_dp32/firmware.e
lf
Building .pioenvs/chipkit_dp32/firmware.hex
Looking for upload port...
Auto-detected: /dev/cu.usbmodemfd111
Uploading .pioenvs/chipkit_dp32/firmware.hex
Programmer for Microchip PIC32 microcontrollers, Version 2.1.24
Copyright: (C) 2011-2015 Serge Vakulenko
Adapter: STK500v2 Bootloader
Program area: 1d000000-1d1fffff
Processor: Bootloader
Flash memory: 2048 kbytes
Boot memory: 80 kbytes
Data: 6316 bytes
Erase: done
Program flash: ######### done
Verify flash: ######## done
Program rate: 33242 bytes per second
========================= [SUCCESS] Took 4.08 seconds =========================
```

![写真（2018-03-09 15.24）.jpg](https://qiita-image-store.s3.amazonaws.com/0/104066/0cd61447-670f-697b-5c6e-7d988d9213fc.jpeg)


chipKITはダウンロードモード(USBシリアルとして見える)にするにはボタン操作が必要で、ちょっと面倒です。これはArduinoなどは制御用にシリアルの信号線を2本使っているのですが、chipKITでは使ってないからです。

アップロードツールは以前からあるpic32progでchipKIT用にArduinoと同じプロトコルのSTK500v2を追加したようです。

chipKITはこのモジュールのようにチップ自体がUSBシリアルとして認識できて、ファームをアップロードできるタイプと、別途USBシリアルモジュールを利用してシリアル接続してファームをアップロードするタイプがあるようです。

2018/3現在秋月電子で販売されているPIC32チップでplatformio(chipKIT)でサポートしている物はPIC32MX250F128Bだけのようです。

以前作り込んだ[smalltooth](https://github.com/yamori813/smalltooth)とかはに移すのは面倒なので、併用する事になりそうです。

platformioにはplib.hが入っていないので、このヘッダーを使ったソースはそのままではplatformioに移せないようです。

El Capitanにインストールした3.5.4で試したらリンクができずビルド失敗しました。雪豹の方は新しくinitしてもビルドできます。なんかいじったかな。。。 2018/7 [直りました](https://github.com/platformio/platform-microchippic32/issues/11)。

2021/12追記：雪豹のpio3ではビルド＆アップロードできますが、El Capitanのpio4ではビルドはできるもののアップロードのパッケージがダウンロードできません。FreeBSDのpio5ではビルドもできません。