Arduinoのボードマネージャー用のjsonファイル


新しいハードウェア用のパッケージをArduinoにインストールするには,jsonファイルを入力して,ボードマネージャーから指定する. このjsonファイルがどのような構造になっているのかを調べてみた.

基本的には,パッケージの圧縮ファイルと,アーキテクチャ毎のツールの圧縮ファイルが指定されており,すべてのファイルについて,SHA256とファイルサイズを指定する必要がある. SHA256の値が分かっている場合にはそれをコピペすれば良いが,無い場合には,ファイルを用意して以下のコマンドを使って表示された値を使う.

sha256sum filename

また,サイズが分からない場合には,ファイル全体をダウンロードしなくても,以下のようなコマンドでファイルのヘッダを調べることにより,サイズが分かることがある.

wget --spider --server-response url

ちなみに,ローカルにあるファイルを指定する場合には,以下のように記述する必要がある.

file:///home/user/filename.txt

すべてのアーキテクチャで同じファイルを指定する方法が無いか調べたが,分からなかった. jsonファイルを編集すると,ミスをすることもあるが, ブラウザーで開くと,値などが正しく指定されているかや,文法などをチェックできる.

構造が大体分かったので,私がUIAPduino用に作っているch32funを使ったArduino環境を簡単にインストールできるように,jsonファイルを作ってみた. その環境で取り込んで使っているのは,riscv-none-elf-gccとminichlinkとArduinoCoreAPIとch32funとrv003usbである. gccはxpack-dev-toolsの最新のリリースがv15.2.0-1だったので,それを使えば良いだろう. minichlinkはUIAPduinoの本家のファイルを指定すれば良い. ArduinoCoreAPIの最新のリリースがv1.5.2なのでこれを使いたいのだが,hardwareフォルダの中に自動で組み込む方法が分からなかったので,toolにダウンロードさせて,自分でコピーすることにした. ch32funもv1.0rc2というリリースがあったのだが,その中身はch32funでは無く,ch32v003funになっていた. 実質的には同じかも知れないが,環境を構築するときにch32funを使っており,バグなどが起こると嫌なので,ch32funのファイルを自分で組み込むしかないかな. rv003usbについてはリリースがなく,そのフォルダのzipを指定することもできるが,少しでも修正があったらSHA256が一致しなくなるので,これもファイルを自分で組み込むしかないだろう.

私の作った環境とch32funとrv003usbをzipで圧縮したファイルとjsonファイルはローカルに置いて,それ以外はネットから取って来て,簡単にインストールすることができるようになった. aipのフォルダだけはコピーしないといけないが. シンボリックリングなどをつかって,うまくできないかを考えてみよう. gccのバージョンの違いによる問題が起こる可能性もあるが,後でチェックしよう. 新しく立ち上げたPCには,この方法を使って,インストールしようと思う.