なんとかなるさね

マイコンをネタにブログを始めてみました


RXマイコン基板(RX62N) | (中断中)SAKURAスケッチ環境2.0をInterface誌付属RX62N基板で試す (4) 

前のエントリで、e2studio(最新版の3.0.1.08です)を日本語モードで起動するとe2studioがリンカを実行する
時のリンカオプションが何か怪しいことになっていることが分かって来ましたので、いつものようにちょっと
パラノイア的ですが、e2studioのプロジェクトウィザードで作ったプロジェクトに対して何をするとおかしく
なるのか確認してみました。

やみくもにプロジェクトの設定を変えていくのは大変なので、ルネサスのユーザコミュニティサイト(Rulz)に
ルネサスの人が書いていたことを足がかりに、ひとまずプロジェクトのリンカスクリプトファイルの設定を
変えてみました。この設定は以下の3つが選択出来るようになっていました。デフォルトは1番目のNoneです。
2番目と3番目については、適切なファイルを一緒に指定しておく必要があります。リンク出来たかどうかの
結果を○×で書いてあります。

  英語モード       日本語モード      
* None       ○       ○      
* External Linker script(-T)       ○       ×      
* All options (Command File)       ○       ×      

英語モード



日本語モード



1番目の場合は、英語モードも日本語モードも問題なくリンク出来ました。

英語モード


実行されたリンクコマンド: rx-elf-ld -o "TestKpitGnuRX.x" -T"E:\work\workspace_0en\TestKpitGnuRX\Release\TestKpitGnuRX_Release_auto.gsi" -T"E:\work\workspace_0en\TestKpitGnuRX\Release\LinkerSubCommand.tmp" -M=TestKpitGnuRX.map -e_PowerON_Reset -no-keep-memory -S -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf/4.7-GNURX_v14.01/64-bit-double" --start-group -lm -lc -lgcc -lstdc++ --end-group


日本語モード


実行されたリンクコマンド: rx-elf-ld -o "TestKpitGnuRX.x" -T"E:\work\workspace_0ja\TestKpitGnuRX\Release\TestKpitGnuRX_Release_auto.gsi" -T"E:\work\workspace_0ja\TestKpitGnuRX\Release\LinkerSubCommand.tmp" -M=estKpitGnuRX.map -e_PowerON_Reset -no-keep-memory -S -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf/4.7-GNURX_v14.01/64-bit-double" --start-group -lm -lc -lgcc -lstdc++ --end-group


2番目の場合は、英語モードでは問題なくリンク出来ましたが、日本語モードではリンクに失敗しました。

英語モード


実行されたリンクコマンド: rx-elf-ld -o "TestKpitGnuRX.x" -T"E:/work/workspace_0en/TestKpitGnuRX\Release\LinkerSubCommand.tmp" -T"../ExternalLinkerScript.gsi" -M=TestKpitGnuRX.map -e_PowerON_Reset -no-keep-memory -S -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf/4.7-GNURX_v14.01/64-bit-double" --start-group -lm -lc -lgcc -lstdc++ --end-group


日本語モード


実行されたリンクコマンド: rx-elf-ld -M=TestKpitGnuRX.map -e_PowerON_Reset -T"E:/work/workspace_0ja/TestKpitGnuRX\Release\LinkerSubCommand.tmp" -T"../ExternalLinkerScript.gsi" -no-keep-memory -S -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf/4.7-GNURX_v14.01/64-bit-double" --start-group -lm -lc -lgcc -lstdc++ --end-group -o "TestKpitGnuRX.x" -T"E:\work\workspace_0ja\TestKpitGnuRX\Release\TestKpitGnuRX_Release_auto.gsi" -T"E:\work\workspace_0ja\TestKpitGnuRX\Release\LinkerSubCommand.tmp"


3番目の場合も、英語モードでは問題なくリンク出来ましたが、日本語モードではリンクに失敗しました。

英語モード


実行されたリンクコマンド: rx-elf-ld @"../ExternalLinkerCommand.cmd"


日本語モード


実行されたリンクコマンド: rx-elf-ld -M=TestKpitGnuRX.map -e_PowerON_Reset @"../ExternalLinkerCommand.cmd" -no-keep-memory -S --start-group --end-group -o "TestKpitGnuRX.x" -T"E:\work\workspace_0ja\TestKpitGnuRX\Release\TestKpitGnuRX_Release_auto.gsi" -T"E:\work\workspace_0ja\TestKpitGnuRX\Release\LinkerSubCommand.tmp"


う~ん、、、

以下、プロジェクト作成時の画像を列挙します。
スポンサーサイト



2014/07/05   blog-entry-466   category: RX /* 32bit CISC */

go page top

RXマイコン基板(RX62N) | (下準備)SAKURAスケッチ環境2.0をInterface誌付属RX62N基板で試す (3) 

前のエントリで、オープンソースライセンスとなるよう一から作り直されたルネサスのArduino互換SAKURA
ライブラリ2.0(今ベータ版段階で公開版はE2.00hというバージョン)が、最新版のe2studio(3.0.1.08)で、
英語モードで起動するとビルド出来たのに日本語モードで起動するとビルド出来なかったことを書きました。
そこで、そのカラクリを少し調べてみました。今のところ、分かったことは以下の通りです。(追記 : 対処
方法もありました。対症療法ですが。) (追記2 : 素朴な対処方法もありました。)

* 日本語モードでビルドに失敗した後に、英語モードでビルドした時のリンクコマンドを丸ごとコマンド
 プロンプトから手入力するとビルド出来てしまう。

* 日本語モードでビルドした時のリンクコマンドも、以下のオプションの前後関係を入れ替えてコマンド
 プロンプトから手入力するとビルド出来てしまう。

  --start-group -lstdc++ -lnosys -lsim -lm -lc -lgcc --end-group
  -T"E:/work/workspace_gr/sakura_sketch_v200_e2studio\release_sakura\LinkerSubCommand.tmp"

 ビルドに失敗するオプションの順番(--start-group ~ --end-groupが前)

rx-elf-ld -M=sakura_sketch_v200_e2studio.map -e_PowerON_Reset --no-flag-mismatch-warnings -no-keep-memory -S -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf//4.7-GNURX_v14.01/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf//4.7-GNURX_v14.01/64-bit-double" -o "sakura_sketch_v200_e2studio.x" --start-group -lstdc++ -lnosys -lsim -lm -lc -lgcc --end-group -T"E:/work/workspace_gr/sakura_sketch_v200_e2studio\release_sakura\LinkerSubCommand.tmp" -T"E:\work\workspace_gr\sakura_sketch_v200_e2studio\linker_arduino.gsi" "E:\work\workspace_gr\sakura_sketch_v200_e2studio\arduino\lib\DSP\utilities\libGNU_RX_DSP_Little.a"

 ビルドに成功するオプションの順番(--start-group ~ --end-groupが後)

rx-elf-ld -M=sakura_sketch_v200_e2studio.map -e_PowerON_Reset --no-flag-mismatch-warnings -no-keep-memory -S -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf//4.7-GNURX_v14.01/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf//4.7-GNURX_v14.01/64-bit-double" -o "sakura_sketch_v200_e2studio.x" -T"E:/work/workspace_gr/sakura_sketch_v200_e2studio\release_sakura\LinkerSubCommand.tmp" --start-group -lstdc++ -lnosys -lsim -lm -lc -lgcc --end-group -T"E:\work\workspace_gr\sakura_sketch_v200_e2studio\linker_arduino.gsi" "E:\work\workspace_gr\sakura_sketch_v200_e2studio\arduino\lib\DSP\utilities\libGNU_RX_DSP_Little.a"

 なお、LinkerSubCommand.tmpの内容は、以下のようなものでした。

INPUT ("./arduino/rx63n/exception_handler.o")
INPUT ("./arduino/rx63n/hardware_setup.o")
INPUT ("./arduino/rx63n/interrupt_handlers.o")
INPUT ("./arduino/rx63n/reset_program.o")
INPUT ("./arduino/rx63n/rx63n_stdlib.o")
INPUT ("./arduino/rx63n/vector_table.o")
INPUT ("./arduino/lib/Wire/utilities/I2cMaster.o")
INPUT ("./arduino/lib/Wire/utilities/twi_rx.o")
INPUT ("./arduino/lib/Wire/Wire.o")
途中省略
INPUT ("./arduino/Sketch.o")

ちなみに、英語モードでのリンクコマンドと日本語モードでの元々のリンクコマンドは、以下の通りでした。

英語モード

rx-elf-ld -o "sakura_sketch_v200_e2studio.x" -T"E:/work/workspace_gr/sakura_sketch_v200_e2studio\release_sakura\LinkerSubCommand.tmp" -T"E:\work\workspace_gr\sakura_sketch_v200_e2studio\linker_arduino.gsi" "E:\work\workspace_gr\sakura_sketch_v200_e2studio\arduino\lib\DSP\utilities\libGNU_RX_DSP_Little.a" -M=sakura_sketch_v200_e2studio.map -e_PowerON_Reset --no-flag-mismatch-warnings -no-keep-memory -S -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf//4.7-GNURX_v14.01/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf//4.7-GNURX_v14.01/64-bit-double" --start-group -lstdc++ -lnosys -lsim -lm -lc -lgcc --end-group

日本語モード

rx-elf-ld -M=sakura_sketch_v200_e2studio.map -e_PowerON_Reset --no-flag-mismatch-warnings -no-keep-memory -S -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf//4.7-GNURX_v14.01/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/rx-elf/lib/64-bit-double" -L"E:\tools\micom\Renesas\HEW\Tools\KPIT\GNURX-~1\v14.01\rx-ELF/lib/gcc/rx-elf//4.7-GNURX_v14.01/64-bit-double" --start-group -lstdc++ -lnosys -lsim -lm -lc -lgcc --end-group -o "sakura_sketch_v200_e2studio.x" -T"E:/work/workspace_gr/sakura_sketch_v200_e2studio\release_sakura\LinkerSubCommand.tmp" -T"E:\work\workspace_gr\sakura_sketch_v200_e2studio\linker_arduino.gsi" "E:\work\workspace_gr\sakura_sketch_v200_e2studio\arduino\lib\DSP\utilities\libGNU_RX_DSP_Little.a"

後でもう少し調べてみようと思います。

それで、対処方法ですが、以下の方法で何とか回避出来ました。(対症療法ですが。) なお、この方法の他に
素朴な対処方法もありましたので下に書き加えました。


* 以下のオプションをリンカコマンドラインオプションで指定するのではなく、LinkerSubCommand.tmpに
 続いて読み込まれるlinker_arduino.gsiのリンカスクリプトコマンドで指定する

 コマンドラインオプションで指定する場合
  --start-group -lstdc++ -lnosys -lsim -lm -lc -lgcc --end-group

 リンカスクリプトコマンドで指定する場合
  GROUP(-lstdc++ -lnosys -lsim -lm -lc -lgcc)

具体的には、以下のようにしました。

(1) e2studio上でプロジェクトのプロパティを変更する

変更前



変更後



(2) sakura_sketch_v200_e2studio\linker_arduino.gsiの内容をエディタで変更する

変更前

MEMORY
{
    途中省略
}

SECTIONS
{
    途中省略
}

変更後

/* The following line is a workaround for an e2studio's bug under Japanese environment. */
GROUP(-lstdc++ -lnosys -lsim -lm -lc -lgcc)


MEMORY
{
    途中省略
}

SECTIONS
{
    途中省略
}

その結果、以下のようにビルド出来るようになりました。(ただ、libGNU_RX_DSP_Little.aのリンク順序を
合わせ込んでいませんので、そのせいだと思いますが、生成されたsketch.binは異なっています。)
(追記 : いっそのこと、リンクバッチファイルを作ってe2studioから呼び出すようにした方が良いかも? 後で
試してみたいと思います。)




build.log
sakura_sketch_v200_e2studio.map

その後、外部リンカスクリプトファイルを使用する設定にしているとおかしくなることが分かりましたので、
試しに以下のような素朴な対処をしたところ、うまくビルド出来るようになりました。また、sketch.binも
一致するようになりました。

(1) プロジェクトをインポートする前にsakura_sketch_v200_e2studio_release_sakura_auto.gsi
  ファイルだけを残してrelease_sakuraフォルダの他のファイルを全て削除する
(2) プロジェクトをインポートする
(3) プロジェクトのプロパティで外部リンカスクリプトファイルを使用しない設定[None]にする
(4) プロジェクトをビルドする






build.log
sakura_sketch_v200_e2studio.map

使用したツールのバージョンは以下の通りです。

e2studio 3.0.1.08
KPIT GNU RX Tool Chain       14.01

2014/07/03   blog-entry-465   category: RX /* 32bit CISC */

go page top

RXマイコン基板(RX62N) | (下準備)SAKURAスケッチ環境2.0をInterface誌付属RX62N基板で試す (2) 

前のエントリで、オープンソースライセンスとなるよう一から作り直されたルネサスのArduino互換SAKURA
スケッチ環境2.0(今ベータ版段階で公開版はE2.00hというバージョン)を昔のe2studioを英語モードで起動して
ビルドしてみました。今度は、最新版のe2studio(3.0.1.08)でビルドしてみました。今回も前回と同じように
クリーンの動作がおかしかったので、手作業でビルドフォルダの中を削除したところ、英語モードで起動した
場合には無事ビルドすることが出来ました。しかし、日本語モードで起動してビルドするとビルドに失敗して
しまいました。(後で少し調べてみようと思います。)

e2studioを英語モードで起動してビルドするとビルド出来る

build.log
sakura_sketch_v200_e2studio.map



e2studioを日本語モードで起動してビルドするとビルド出来ない

build.log
sakura_sketch_v200_e2studio.map



使用したツールのバージョンは以下の通りです。

e2studio 3.0.1.08
KPIT GNU RX Tool Chain       14.01

追記 : メモ

ちなみに、ビルドログはプロジェクトのプロパティの以下のページで指定された場所に保存されていました。

英語モード



日本語モード



追記 : メモ

どういうわけか、英語モードのタイトルバーではC/C++となっているのに、日本語モードのタイトルバーでは
Cのみになっています。どういうカラクリで、こんなことが起きてしまうのかな? とても不思議です、、、
英語モードと日本語モードの切り替えをしたせいなのだろうか、、、

英語モード



日本語モード



2014/07/02   blog-entry-464   category: RX /* 32bit CISC */

go page top

RXマイコン基板(RX62N) | (下準備)SAKURAスケッチ環境2.0をInterface誌付属RX62N基板で試す (1) 

オープンソースライセンスとなるよう一から作り直されたルネサスのArduino互換SAKURAスケッチ環境2.0(今
ベータ版段階で公開版はE2.00hというバージョン)が手持ちのInterface誌付属RX62Nマイコン基板でちょっと
ぐらいは動くようにならないかと思い、まずはソースコードをビルド出来るかどうかやってみました。(今回、
ちょっと用心して、昔のe2studioを英語モードで起動して確認してみました。) 初めのうち、クリーンの動作が
おかしかったのですが、手作業でビルドフォルダの中を削除してからは、無事ビルド出来るようになりました。
先は長いですが、まずは最初の一歩ということで、、、

build.log
sakura_sketch_v200_e2studio.map



なお、ソースコードはルネサスのユーザコミュニティサイト(Rulz)の以下のページからダウンロードしました。

GR-SAKURA library E2.00h for evaluation
http://japan.renesasrulz.com/gr_user_forum_japanese/m/mediagallery/163.aspx?loc=JP

使用したツールのバージョンは以下の通りです。

e2studio 2.1.0.21 (英語モードで起動)
KPIT GNU RX Tool Chain       14.01

2014/07/01   blog-entry-463   category: RX /* 32bit CISC */

go page top

RXマイコン | CubeSuite+シリアルデバッガのダウンロードページ 

RXマイコン用のCubeSuite+シリアルデバッガがダウンロード可能になっていました。

http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/tools/upgrades_serial_debugger_rx.jsp

追記 : メモ

ツールニュース - RXファミリ用シリアルデバッガ リリースのお知らせ
http://tool-support.renesas.com/jpn/toolnews/130901/tn4.htm

開発環境 - RXシリアルデバッガ
http://japan.renesas.com/products/tools/emulation_debugging/monitor_debuggers/serial_debugger/index.jsp

半導体セミナー - RXシリアルデバッガのカスタマイズ方法と使い方
http://japan.renesas.com/support/seminar/products_seminar/20130826/index.jsp

追記 : メモ

RXマイコンのデバッグアダプタの価格バリエーション(価格は大雑把)

10万円       E20エミュレータ
1万円       E1エミュレータ
5千円       USBOCE学習用途向けエミュレータ(北斗電子)
2千円       USBシリアル変換アダプタ + UART版シリアルモニタ
アダプタなし       マイコン内蔵USB版シリアルモニタ

追記 : 雑感

FTDIのUSBシリアル変換チップを使用したARMマイコン用(あるいはFPGA用)JTAGアダプタって、普通にUSB
シリアル変換アダプタとしても使えるものなのかな?

EclipseのC/C++ GDB Hardware Debuggingプラグインには、ARMマイコン用OpenOCD対応が組み込まれて
いるようなのですが、e2studioプラグインは、RXシリアルデバッガをサポートするのかな?

2013/09/03   blog-entry-337   category: RX /* 32bit CISC */

go page top