ArduinoライクなIDEの作り込みについて

がじぇるね岡宮です。

#2015/10/16 追記

昨年のルネサスナイト4で要望の多かったArduinoライクなIDEを作ってみました。

GR-KURUMIでコンパイル→書き込み→シリアルモニターまで一通りできます。

すみませんが、まだWindows用でだけです。

Download Site:

 http://japan.renesasrulz.com/gr_user_forum_japanese/m/mediagallery/146.aspx

 

後記:

ブログとして開発に関することを書いておこうと思います。

Arduino IDEはオープンソースとしてGithubにありますので、それをベースにしています(当たり前なのですが・・・)。

https://github.com/arduino/Arduino

 

このソースをビルドしてパッケージングする際はJDKやAntを使うのですが、SAKURAボードユーザ会の下記書き込みを参考にしました。(Akagawaさん感謝です)

http://sakuraboard.org/communityTopic/47

私はcygwin環境でantを実行してビルドしています。

 

ソース解析+開発にはOracleのNetbeansを使いました。非常に使いやすかったです。

実はJavaが初めてだったので、言語の勉強から始める始末でしたが、もともとはデバッグツール屋でしたので、解析自身は比較的楽に進めました。

(世の中にJava開発者はたくさんいますが、半導体ベンダーの中では希少のためなかなかお手伝いしてもらえる人がいませんでしたorz)

 

コンパイルや書き込みに必要なコマンド実行などは、hardware/arduino/rl78フォルダ下のboards.txtとplatform.txtにまとまっています。

これらを書き換えて、ツールやソースさえ入れておけば、他のプラットフォーム構築もできるようになっています。このような作り込みに

なっていることは非常にありがたかったです。(ProcessingやArduino IDEの開発者には頭が下がるばかりですね)

ただ、ターゲットソースの検索が、.c, .cpp, .Sファイルの三種類になっており、最後の.S(大文字のS)がアセンブルソースなのですが、

Javaソースを直すか、ソースファイルの拡張子を変えるか、10分ほど悩んで後者を取りました。

ですので、Webコンパイラで公開されているファイル名と若干異なる部分はありますが、中身は変えてません。

 

0.1.0を作る中で一番苦労したことは、自分のPCではコンパイルできるのに、他のPCではコンパイルエラーが出てしまう現象でした。

これは最後の最後に一週間もかかってしまった不具合なのですが、コンパイルエラーといってもGCCが一般的に返すエラーではなかったことです。

エラー内容すら出力されないため、予測をつけてはカット&トライで、ビルドをしてはコピーするのも、膨大なファイル数で時間がかかって大変でした。

 

最初は自分のPCの環境変数や、Javaからのネイティブプロセス実行に差分があり、問題が発生していると思っていましたが違いました。

原因はGCCから、libgcc_s_dw2-1.dllが見つからないというもので、実際にrl78-elf-gcc.exeと同じフォルダに存在しているにも関わらず、

なぜか見つからないというものでした。コンパイラをexeとして固める際のMinGWでのリンクオプションで回避できるようなのですが、さすがに

原発のコンパイラパッケージを作り直したくなかったので、今回はこのdllを読んでいるcc1plus.exeが存在するフォルダにdllをコピーして回避してます。

2015/10/16追記:GR-SAKURAでは、libstdc++-6.dllもコピーする必要が生じました。 

今後は、WebコンパイラのHTTP APIを使ったビルドやファイル操作、GR-SAKURAの追加などを行っていきたいと思っています。