2017/03/31

[esp8266][rtos][bow]RTOS SDKを更新しようとしてあきらめる

久しぶりに休暇を取ったので、ESP8266のRTOS版で遊んでみよう。
と思ったが、インストールしてから長いこと放置しているので、RTOSの部分が古くなっているかもしれない。
更新しておこう。

環境は、Windows10 64bitのBash on Ubuntu on Windowsだ。


RTOS SDKは、昔はEspressifからダウンロードしていたのだが、今ではgithubで管理されている。
espressif/ESP8266_RTOS_SDK: Latest ESP8266 SDK based on FreeRTOS

Non-OS版はコンパイラも一緒になっていたのだが、RTOS版ではgcc推奨になっていて、それはesp-open-sdkと呼ばれているようだ。
pfalcon/esp-open-sdk: Free and open (as much as possible) integrated SDK for ESP8266/ESP8285 chips

だから、この2つを更新する必要があろう。


まずはesp-open-sdkから。
https://github.com/pfalcon/esp-open-sdk#building

さて、STANDALONEはyだったかnだったか。。。
http://hiro99ma.blogspot.com/2016/12/esp8266esp-open-sdkstandalonen.html
ここを見ると、nでやっているように見える。

 

が、不安が。
当時の私はSTANDALONE=nの方がライセンス的に大丈夫そうだ、という判断をしているのだが、その翻訳は正しかったのだろうか?

To build the bare Xtensa toolchain and leave ESP8266 SDK separate

この一文の「separate」だけで判断していなかっただろうか。
ちゃんと英文を読もう。

Build

プロジェクトは2つのビルドモードがある。

  1. バイナリも含め提供されるベンダのIoT SDKから切り離す。ライセンスもクリアで、ベンダのSDKアップデートにも対応しやすくなる。
  2. 完全にツールチェーンがマージされたベンダのSDKファイルからも分離する。このモードはソフトウェアのビルドを容易にする(-Iや-Lなどを追加せずに済む)。しかし、ビルドしたものの再配布はライセンスがクリアではなく、ベンダが提供する新しいバージョンのIoT SDKリリースが行われると複雑になる。このモードはローカルビルドとしてデフォルトだ。(以下略)

というわけで、1がSTANDALONE=nだと思う。
2はデフォルトと書いてあって、makeの引数無しはSTANDALNE=yだからだ。

 

では、git pullしてmakeしなおそうと思ったが、よくわからんエラーが。。。

fatal: index file open failed: Input/output error

不思議なことに、このエラー自体はフォルダを移動したりしているうちに直った。
どうも、BoWはファイル周りがまだ弱いような気がする。

もう一度git pullすると、今度は「examples/blinky/Makefile」がどうのこうのと。
git statusしてみると、Changesの方にdeletedでずらずらファイルが並んでいる。
そこにexamples/blinky/Makefileも入っているのだが、実際にはファイルがある。。。
そして、Untrackedの方にはexamples/が入っているのだ。
もう、何が何だか。。。

では、examplesをexamples_にリネームしよう。

$ mv examples/ examples_
mv: cannot move 'examples/' to 'examples_': No such file or directory

はあ?

$ mv examples/ examples_
$

2回同じことをやったら動いた。
これ、BoWでgo言語をやったときにも出てきたな。
これをしても、まだexmaples/blinky/Makefileがどうのこうのというから、BoWが原因で起きているような気がする。

 

気がする程度ではあるが、不安な環境でやるような作業でもないので、VMのLinuxでやろう。。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。