マイクロマウスタイマー
夏コミ受かりました。
3日目東S-35a
今年は東館なんですね。
新作ゲームが出せるかは危ういですが,少なくとも新刊持って行きますので皆様よろしくお願いいたします。
さてさて,まもなくうちのサークル主催マイクロマウス大会の時期となりましたが,その際に使用する計測器を作成しました。
機能自体はシンプルで,センサー値が大きく変化したタイミング→マウスが通過,と捕らえてスタートからゴールまでの時間を表示するだけです。
センサーの形状については先代のタイマーを参考(丸ぱくり)にしました。
先代ではモノクロLCDで表示させていたようですが,遠くから見にくいのはどうかと思ったので,7セグメントで作成しました。
ただし,マイコンの出力ピン数が圧倒的に足らないので,2桁ずつダイナミック点灯をして表示させています。
(秋月のお楽しみ袋と,先輩からもらった年代物の7セグを使いました。光量がたりてないですね……)
一応ポイントとしては,
・クラシック,サーキット,ハーフ全対応(予定)
・センサー3個なので2点ゴールに対応
・PCにデータ出力して連動動作可能(予定)
・オートスタートに対応
では,しばらくは大会に向けてと,コミケに向けて,色々と頑張ります。
部室メーリスを学生証と連動させる(1)
Miceは学内に部室を持っており自由に使うことが出来ますが,その開け閉めをメーリングリストに流すことが義務づけられています。
しかしいちいち携帯を取りだしメールを作りしょぼい構内LANに悩まされながらメールを送るのは面倒です。
そこで,全員がIC機能付きの学生証を持っているので,これを使おうと思い立ちました。
すなわち,部室の入り口にカードリーダーを設置しておき,こいつにタッチするだけで部室の開放状況をメールする,あわよくば契約しているサーバー上にデータを放り投げようというわけです。
幸いにも学生証はFeliCa規格を利用しているようです。
SONYから発売されているNFCリーダライタ「RC-S620/S」を利用し,RaspberryPi B+から制御しようと考えました。
Sony Japan | FeliCa | 法人のお客様 | 製品情報 | RC-S620/S・S620/U
ここ数日はRC-S620/Sの使い方,ICカードとの通信の仕方を調べたので軽くまとめておきます。
今回参照したドキュメントは次のURLから参照できます。
Sony Japan | FeliCa | 法人のお客様 | 技術情報
「RC-S620/S製品仕様書<簡易版>」
「RC-S620/Sコマンドリファレンスマニュアル<簡易版>」
「FeliCa技術方式の各種コードについて」
「FeliCaカード ユーザーズマニュアル 抜粋版」
FeliCaには認証不要でアクセスできる領域と,認証が必要となる領域があります。
これらのドキュメントは,認証不要で利用できる機能しか書かれていません。
例えばsuicaの残高だったり,履歴だったりは参照できますが,それ以上踏み込んだことは出来ないというわけですね。
まずは学生証の中身を解析した,その手段からまとめておきます。
今回出てくる通信は2種類,
PC ←→ RC-S620/S ……①
RC-S620/S ←→ 学生証 ……②
それぞれの通信ごとにプロトコルが決まっており,インターネットを飛び交っているパケットのように,上位層のパケットを下位層のパケットに埋め込むようにしてデータを用意します。
ここれは,①のパケットの中に②のパケットが埋め込まれる形になります。
①で送信したコマンドは次の順番,
GetFirmwareVersion(通信できているか確認)
RFConfiguration(リーダの設定)
InListPassiveTarget(カードの補足とIDmの確認)
CommunicateThruEX(カードとの通信)
CommunicateThruEXを何回か送信し,②の通信を行います。
サービスコードはSearch Service Codeで調べられます。
肝心のデータですが,まずは学生証が対応しているサービスコードという物を調べる必要があります。
Request Serviceコマンドを,0x0000~0xFFFFまで順番に送信して,0xFFFF以外が返ってきた時のアドレスを吐き出すプログラムを書きました。
その中で今回認証なしでアクセスできるのは,下6bitがユーザーズマニュアル30ページに認証不要と書かれているものに該当するアドレスのみです。
ここで得たサービスコードに,Read Without Encryptionコマンドを,0~エラーが返ってくる手前のブロックコードまで順にアクセスし,データを読み込みました。
(実際にこのアドレスにアクセスする際はリトルエンディアンで送信します)
……とここまでプロトコルを読み込むのに結構かかりました。
残念なことに,学生証で認証不要でアクセスできる領域にはめぼしいデータがありません(?)でした。
(ハテナマークが付いてるのはまだ検証中だから,ですが)
学生証から学籍番号を読み取るのは一旦置いておき,IDm(カードの個別番号)を読み取って,あらかじめ用意しておいたIDm←→名前対応表から部室メーリスを送るシステムを作りましょう。
今日はここまで。
頑張ってこのシステムは実現させます。
STM32 Nucleo Boardの開発環境構築
2,3日ほどSTM32と格闘していたのでそのログを残します。
Ubuntu14.04 LTSにgccとst-linkで開発できる環境を整えました。
対象はSTM32F401REのNucleoBoardです。
(STM32 Nucleo Board STM32F401: マイコン関連 秋月電子通商 電子部品 ネット通販)
(とはいえ問題山積み……とりあえずビルド&書き込みができただけです)
また,現在格闘中でもあるので適宜追記更新を入れるので注意してください。
ビルド環境
ビルド環境としてLaunchPad GNU Embedded Toolchainを選択しました。
次のサイトの「ツールチェーンの(再)インストール」の通りに進め,問題もなく完了しました。
Ubuntu(Linux)環境のSTM32(ARM)開発環境についてのメモ その1 | メモたんく
Cコンパイラは"/usr/bin/arm-none-eabi-gcc",インクルードファイルは"/usr/arm-none-eabi/include/"に配置されました。
今回Eclipseは使用しないため,自前でライブラリとMakefileを用意します。
まずはSTの公式サイトからSTM32 Standard Peripheral Libraryをダウンロードしてきます。
Part Number Search ? STMicroelectronics
これを好きなところに展開し,"STM32F4xx_DSP_StdPeriph_Lib"というディレクトリができました。
僕の場合,これと同じディレクトリにプロジェクトのディレクトリを作成し,以降はそのディレクトリ内で作業を進めました。
便宜上,"nucleo_test"というディレクトリを作成し,その中に移動したとします。
まずは必要なファイルをコピーしてきます。
"../STM32F4xx_DSP_StdPeriph_Lib/Project/STM32F4xx_StdPeriph_Templates/"から,
stm32f4xx_it.c
stm32f4xx_it.h
main.c
main.h
stm32f4xx_conf.h
system_stm32f4xx.c
をプロジェクトのディレクトリに放り込みます。
もうひとつ,
"../STM32F4xx_DSP_StdPeriph_Lib/Project/STM32F4xx_StdPeriph_Templates/TrueSTUDIO/STM32F401xx/STM32F401RC.ld"
を,プロジェクトのディレクトリに"stm32_flash.ld"と名前変更して放り込みました。
(とはいえ,これ違う種類のチップのリンカスクリプトなんですよね……。
とりあえずは動きましたが良くないと思います。)
続いてMakefileを準備します。
書くのが初めてなので次の内容を参考にさせていただきました(というか丸コピして必要な箇所を改変しました)。
tokoro10g / VORAS / source / Makefile — Bitbucket
綺麗に書けなかったので要点だけ書き留めておきます。
#インクルードディレクトリを変更(ツールディレクトリも変更) TOOLDIR = /usr/bin/ INCLUDE_DIRS = -I ../STM32F4xx_DSP_StdPeriph_Lib/Libraries \ -I ./ \ -I ../STM32F4xx_DSP_StdPeriph_Lib/Libraries/STM32F4xx_StdPeriph_Driver/inc \ -I ../STM32F4xx_DSP_StdPeriph_Lib/Libraries/CMSIS/Device/ST/STM32F4xx/Include \ -I ../STM32F4xx_DSP_StdPeriph_Lib/Libraries/CMSIS/Include \ -I $(TOOLDIR)../arm-none-eabi/include \ -I $(TOOLDIR)../arm-none-eabi/include/c++/4.9.3 #BOARD_DIRを変更 BOARD_DIR = -DHSE_VALUE=\(\(uint32_t\)8000000\) -DSTM32F401xx #STARTUP_DIRを変更 STARTUP_DIR = ../STM32F4xx_DSP_StdPeriph_Lib/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc_ride7 #TARGET_ARCHを変更(エラーが出るためFPU設定を消した。良くない) TARGET_ARCH = -mcpu=cortex-m4 -mthumb #最終出力ファイルをbin/main.binに変更 bin/main.bin: $(patsubst %.c,%.o,$(wildcard *.c)) $(patsubst %.cpp,%.o,$(wildcard *.cpp)) $(STARTUP_DIR)/startup_stm32f401xx.o ../STM32F4xx_DSP_StdPeriph_Lib/Libraries/libstm32f401xx.a $(LD) $(LDFLAGS) $(TARGET_ARCH) $^ -o bin/main.elf $(OBJCOPY) -O binary bin/main.elf bin/main.bin
とりあえずこれでmakeが通る……はず(書いてないことがあったかもしれない)。
○参考
Ubuntu(Linux)環境のSTM32(ARM)開発環境についてのメモ その1 | メモたんく
tokoro10g / VORAS / source / Makefile — Bitbucket
STM32F10x Standard Peripherals Firmware Libraryを使う - Wikimura
ダウンロード環境
Ubuntu(Linux)環境のSTM32(ARM)開発環境についてのメモ その1 | メモたんくを参考に「デバッグツールのインストール」を行います。
これで,"st-flash write bin/main.bin 0x08000000"とすることで書き込みができるはずです。
(hexファイルの書き込みはできないのですね。かなり手間取りました)
せっかくなのでMakefileから書き込みができるようにしました。
.PHONY: flash flash: st-flash write bin/main.bin 0x08000000
デバッグ環境
参考サイトの通りにst-util,arm-none-eabi-gdbを立ち上げるとgdbが使えました。
gdbを使ったのもこれが初めてなので,また後日まとめます。
○参考
Linux上でSTM32のプログラミング・デバッグ環境を整える - STM32 - Tokoro's Tech-Note
USART
とりあえず次の通りにすれば動いた。
SystemInit(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_Init(GPIOA, &GPIO_InitStructure); //なぜかボーレートを3倍しないといけなかった。 USART_InitStructure.USART_BaudRate = 9600*3; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART2, &USART_InitStructure); USART_Cmd(USART2, ENABLE); //次のようにして文字を送れる USART_SendData(USART2, 'H');while( USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET) ;
○参考
STM32でUSARTを使ってみる - Wikimura
STM32F4 DISCOVERYのシリアル通信(UART)をテストする(送信編): 花岡ちゃんに花束を
ひとまず今日はここまでにさせてください。
正直新しいことを学びすぎて全然頭が追い付いていない……。
学内環境へのEmacs導入
どうやらMice内ではvimが普及(サンプル数2)しているらしいですが僕はEmacs派です。
ここで戦争を起こす気はありませんが,Emacs楽しいですよ。
学内環境にはEmacs22が導入されていますが,このバージョンにはパッケージ管理システムがデフォルトで含まれていないため,Emacs24をビルドしてみました。
$ cd $ mkdir bin $ cd ~/Download $ wget ftp://ftp.ring.gr.jp/pub/GNU/emacs/emacs-24.4.tar.bz2 $ tar xvjf emacs-24.4.tar.bz2 $ cd emacs-24.4 $ ./configure –prefix=~/bin $ make $ make install
Linuxには疎いのでmakeやconfigureについて知識がなかったのですが,どうやらconfigureには-prefixというものがあるそうです。
こいつを使ってインストールディレクトリをホームディレクトリ直下のbin内に変更し,管理者権限なしでEmacsをインストールしました。
従って,現在のディレクトリ構成は次のようになっています。
~/
┣Download/
┗bin/
┗Emacs-24.4/
Emacs23以降ではpackage.elがデフォルトで使用できるようになっています。
使い方は"M-x package-list-package"から,インストールしたいパッケージに"I",その後"x"でチェックの実行。無事パッケージがインストールされます。
現在使用しているパッケージをいくつか紹介します。
- auto-complete
VisualStudioとかEclipseとかがやってくれる自動補完
- rainbow-mode
HTMLとかの編集時,カラーコードの背景をその色に変えてくれる
- anzu
C-sのインクリメンタル検索時に,全ヒット数とハイライト部分の番号が表示
- undo-tree
ファイルの編集履歴をツリー状に表示
任意の場所にさかのぼったりできる
- org-present
org-modeで作成した文書をプレゼンに(文字拡大させて順々に表示出来るように)
最近はと言うと,ようやくマウスがそこそこ動くようになってきました。
といっても16×16は完走出来ませんが……。
冗長なコードを書き直し,整形した上で探索法を拡充させていこうと思っています。
○参考サイト
第235回 Ubuntu 12.04でEmacs 24.1を使う:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
package.el - Emacs JP
KiCadのすすめ(2)
あけましておめでとうございます。
去年は大学入学&部活で忙しい一年となりましたが,今年もその方針は変えずに頑張っていきたいと思います。ひとまずはマウスの完成が目標ですかね。
のどかプラネタリウムの方ですが,2月1日に開催されるCOMITIA111に出展します。
ブースは「ま17b」です。
今回は新作……と言っていいのでしょうか,「1週間でゲームを作ろう」という企画がサークル内で
持ち上がり,なんとか完成させた超短編作品を無料頒布します。
タイトルは「寄生怪獣ふさふさ」。多分ギャグ作品だと思われます。
COMITIAに来られない方でも近日中にダウンロードができるようになりますので,またお知らせします。
さてさて,少し時間が空いてしまいましたがKiCad記事第2回です。
今回は回路図作成(1)を進めていきます。
まずはプロジェクトファイルを作成しましょう。
ファイル > 新規 から「BlankProject」(空のプロジェクト)を作成します。
この時に,Schematicファイルが存在しないというエラーが出ると思いますが,新規プロジェクトのためこれで正常です。
次に,この回路図の右下にある説明書きを変更しておくことをオススメします。
ファイル > ページ設定 から次の画面を開きます。
最低限タイトル,できればリビジョンくらいは書いておきましょう。
印刷した際に何のファイルかが分かるようになるので,後々困りません。
次に画面上に用意されているボタンの説明をしておきます。
一応すべての説明はしますが,はじめてKiCadを使う場合には無視しても構わない,と思った項目については薄字にしておくので読み飛ばしても構いません。
まずは上のバーから。左のボタンから順に説明を書いていきます。
・新規回路図を作ります。KiCadでは複数枚の回路図を一つの回路として扱えるので,この機能が用意されています。
・既存回路図を開きます。
・今編集している回路図を上書き保存します。初回保存時はプロジェクト名の回路図ファイルを保存します。
--------------------------------------------------------------
・ページの設定をします。先ほどやったページ設定へのショートカットボタンです。
--------------------------------------------------------------
・回路図を印刷します。
--------------------------------------------------------------
・選択しているアイテムを切り取り,コピー,貼り付けします。
--------------------------------------------------------------
・いわゆる「元に戻す」「繰り返す」です。
--------------------------------------------------------------
・コンポーネントやテキストを検索します。
・コンポーネントやテキストを検索後,置換します。
--------------------------------------------------------------
・回路図を拡大,縮小,再描画,および最適表示します。
--------------------------------------------------------------
・複数回路図を扱っている場合,階層ナビゲータを表示します。
--------------------------------------------------------------
・回路図記号を編集するウインドウを表示します。
・既存の回路図記号を一覧表示します。
--------------------------------------------------------------
・アノテートします。これは次回以降説明します。
・作成した回路図が適正な物であるかチェックします。
・回路図記号のつながりを記録したファイルを生成します。
・使用した部品の一覧表を生成します。
--------------------------------------------------------------
以降は基本的に使用しません。
では次,右側のボタンの説明です。ちょっと長くなりますね。
・基本の矢印ツールです。既存の回路図記号を選択したりできます。
・階層の移動を行えます。
・回路図記号を配置するツールです。一番多用します。
・電源系統の記号を配置するツールです。
・配線をするツールです。基本的にはこれで配線します。
・バス配線をするツールです。複数の配線をまとめたい場合はこれを使います。
・バス配線から単配線を引き出すツールです。
・バス配線からバス配線を引き出すツールです。
・使用しないポートに「このポートを使用しない」と明示するための記号を配置します。
・配線の分岐点の記号を配置します。
・単一の配線に名前を付け,後でわかりやすいようにします。
・配線の端にラベルを付けるツールです。離れたところに配線したい場合に使用します。
・ここから4つのボタンは階層に関するものなので省略します。
・モジュールのまとまりをわかりやすくするためのラインを引くツールです。
・テキストを書き込むツールです。
大変長くなりましたがEeschemaのボタンについての説明は以上です。
では回路を作っていきましょう。
回路の作成にはいろいろ流儀があるかもしれませんが,この記事では僕の普段の進め方でやっていきます。
個人の趣向に合わせて適宜調整しながらやっていけば良いと思います。
まずは部品を配置します。
先ほど一番多用する,と言った回路図記号配置のツールにし,図面上をクリックします。
出てきたダイアログから部品名を入力することで,その部品を持ってくることができるわけですが,慣れないうちはリスト表示に切り替えましょう。
一般的な部品は大体「device」に入っています。これを選択することでその部品を持つことができるので,クリックして図面上においてあげましょう。
移動や回転をしたい場合,部品の上で右クリックを押すことでメニューを出すことができるのでそこから動かしてあげてください。
ただし,複数のコンポーネントや,もしくは複数種類のオブジェクトなどが重なっている場合,「どのオブジェクトに対して右クリックをしたのか」を聞くためのメニューが表示されます。
はじめのうちは慣れないかもしれませんが,この機能で満足する操作ができるように設計されてるので我慢しましょう。
同様に,5VやGNDなどの電源系統の記号は別のツールを使います。
先ほどの回路図記号のツールの下にあるツールを利用し,同様に電源周りの記号を配置しましょう。
ここまで来ればもうすぐです。
配線ツールを選択して,ポチポチと配線しましょう。
クリック→クリックで回路図記号をつなぐ線を引くことができます。
そして完成した物がこちら。
何か余計な物が含まれていますが,今日はもう疲れたので後日説明します。
ここまでの作業をこなすことができれば,基本的な回路は作り放題です。
(だがつらいのはここからである……)
というわけで今回は基本的な回路図の作り方を説明しました。
次回は回路図の作り方をもう少し説明し,回路図記号の作り方に踏み込む予定でいますが,春休みはスキーに行くのでいつ更新することやら。
ではでは,また次回。
KiCadのすすめ(1)
こんにちは。
気付けばもうコミケシーズンとなりました。のどかプラネタリウムは落選したので,今はCOMITIAに向けて作品を製作しています。
さてさて,大会が一段落ついたと言うことでサークル内ではDCマウスの設計に入る人が大勢出てきました。前作では,プリント基板の設計に"KiCad"を使いました。こちらはオープンソースのフリーソフトウェアで,あのCERNも開発に加わっているという回路設計CADソフトウェアです。
しかし部内では未だ"EAGLE"がメインに使われています。「無償ライセンスで出来ることは限られている,時代はKiCadだ!」とよく言っているのですがなかなか布教には成功しません……。
その理由はたった一つ,「先輩がEAGLEを使っているから」と考えています。なんでもちょうど今,先輩が詳しくてわかりやすいEAGLEの使い方を公開されているそうです。
「負けてられるか!」
という理由で,今回から連続して
KiCadの詳しくてわかりやすい
使い方記事を連載しようと思います。
(三日坊主にならなければね)
第1回目の今日は導入方法と基板設計の概要を説明しようと思います。
1. KiCadのインストール
KiCadは現在進行形で開発中のソフトウェアです。そのため,「最新版」と「安定版」が存在します。諸事情により,僕は最新版を導入しているのでこの記事の解説は最新版を用いたものになりますが,皆さんは安定版を利用することをお勧めします。解説も安定版に対応させたもので進める予定です。
・現時点での最新版 2014-12-06 BZR 5312 (DL先:Kicad - open source schematic capture and PCB design)
・現時点での安定版 BZR 4022 (DL先:kicad.jp | オープンソースのPCB CAD『KiCad』の日本ユーザ コミュニティです。)
では,上のKiCad.jpにアクセスし,各自のOSに合わせたインストーラをダウンロードしてきましょう。
インストールをする際には面倒な設定等がなかったはずです。そのままインストールを終わらせてください。
2. いろんな画面
早速KiCadを起動してみてください。すると次のような画面が表示されるはずです。
※繰り返しになりますが,キャプチャ画像は「最新版」のため,みなさんの手元では違う画面が表示されているはずです。安心して続けてください。
今回はまだプロジェクトは作成しないので,以降の記事は気軽に読んでみてください。
画面の右側にいろんなボタンがありますが,これらをクリックすることでそれぞれのCADツールを起動することが出来ます。
・Eeschema:回路図を編集します。
・Pcbnew:基板自体を編集します。
・GerbView:ガーバーデータ(最終的にプリント基板業者に提出するファイル)を閲覧できます。
・Schematic library editor:回路図記号を編集できます。安定版ではEeschemaの中からのみ起動できます。
・PCB footprint editor:フットプリント(部品と同寸法の図)を編集できます。安定版ではPcbnewの中からのみ起動できます。
3. 基板製作の流れ
早くも記事を書くのが面倒になってきましたが,ひとまず簡単に製作の流れを書いて今日は終わりにしておきます。
基板製作にはいくつかのプロセスがあります。
まず始めに,
・回路図作成
ただし,海外で流通しているような有名どころの部品を除き,ライブラリを自分で作る必要が出てきます。従って,
・回路図記号作成
同様に,回路図記号だけでなくフットプリントも作る必要があります。
・フットプリント作成
次に,回路図記号とフットプリントを関連づける作業が必要となります。おそらくここがEAGLEとの一番の違いだと思います。EAGLEでは回路図記号とフットプリントを関連づけた後の部品データを使用するのですが,KiCadではプロジェクトごとに関連づけを行います。
・NETリスト作成
では,いよいよプリント基板の設計に入ります。
・ボード作成
最後にこれらのデータをガーバーデータとして出力し,完成です!
こう思うとかなりの工数がかかっているように思えます……。
初めのうちは慣れなくて全然出来ませんでしたが,そのうちパパッと出来るようになります!
頑張ってきれいな基板を作れるようになりましょう!
では次回,回路図記号の作成に続きます。
C++でのマウス開発
今年の秋頃に入ってから(マウスのプログラムがややこしくなってから),CからC++での開発に切り替えました。
が,それが影響して全然コンパイルが通らない現象に見舞われたので,原因と対処法をまとめておきます。
○はじめから存在していた以下のコードを必ず含めておく。
#ifdef __cplusplus extern "C" { void abort(void); } #endif #ifdef __cplusplus void abort(void){ } #endif
コンパイラのドキュメントを読めば書いてあったような気がしますが,どこか忘れちゃったので思い出したら追記しておきます。
○外部の".c",".h"ファイルで宣言されている関数を呼び出す際,もしくは変数を外部参照する際,必ず次の通りにする(と思います。ミスがあれば報告いただけると幸いです)。
例."interrupt_handlers.c"で宣言した割り込み動作時に呼び出す関数を使用する際,その定義を行ったファイル内に次のコードを追記しておく。
#ifdef __cplusplus extern "C" void interrupt_CMT0(); extern "C" void interrupt_CMT1(); #endif
これは「マングリング」とやらが影響しているようです。
手伝っていただいたサークルの先輩,また次のサイトの作者様,ありがとうございます。
マングリングなどという現象があるとはいえ,C++を使うメリットはかなり大きいと思います。
が,ルネサスコンパイラは標準ライブラリが少ないので全然使い物になりません。
その話はまた後日したいと思います。