RL78マイコン基板(RL78/G13)|KurumiWriter V1.00(ソース公開版)のフラッシュ書き込み時間の改善
これまでの2つのエントリ(811, 819)でKurumiWriterとrl78flashでRL78マイコンの内蔵フラッシュメモリへの
書き込み時間を比較しましたが、両者に違いがあり過ぎるのがちょっと残念でしたので、KurumiWriterを改造
して書き込み時間をどの程度短縮出来るか試してみました。幸い、両者はMITライセンスでソースコードが公開
されていますので、両者を見比べつつ勘を頼りにKurumiWriterで以下の改造を行ってみました。
* 半2重で設計された通信プロトコルで受信スレッドを使う発想に違和感があったのでスレッド処理をやめた
* rl78flashがやっている非同期I/O読み出しを使わずに出来る受信タイムアウトの設定パラメータを拝借した
その結果、以下のように改善されました。(とは言え、ややタイムアウト時間が長かったので微調整が必要になり
そうですし、FT232RLの内蔵EEPROMを書き換える為のRun after COM openにチェックがあるとタイムアウト
するか意図的に調べている箇所を実行して不自然に暫く固まったりしますので、もうちょっとな感はあります。)
FT232RLのWindowsドライバのデフォルト設定
* KurumiWriter V1.00改造前 (Run after COM openのチェック無し、cotton_sketch.bin)
115,200bps → 22sec
500,000bps → 20sec
1,000,000bps → 未サポート
* KurumiWriter V1.00改造後 (Run after COM openのチェック無し、cotton_sketch.bin)
115,200bps → 8sec
500,000bps → 5sec
1,000,000bps → 未サポート
* rl78flash (rl78flash-0.5.2-mon80-20160914 -m 2 -b 通信ボーレート -a COM14 cotton_sketch.mot)
115,200bps → 16sec
500,000bps → 11sec
1,000,000bps → 11sec
以前のエントリでRL78/G10への書き込み時間が短くなることに気付いてから私が常用している設定
* KurumiWriter V1.00改造前 (Run after COM openのチェック無し、cotton_sketch.bin)
115,200bps → 40sec
500,000bps → 36sec (+/-2sec程度のバラツキあり)
1,000,000bps → 未サポート
* KurumiWriter V1.00改造後 (Run after COM openのチェック無し、cotton_sketch.bin)
115,200bps → 7sec
500,000bps → 3sec
1,000,000bps → 未サポート
* rl78flash (rl78flash-0.5.2-mon80-20160914 -m 2 -b 通信ボーレート -a COM14 cotton_sketch.mot)
115,200bps → 10sec
500,000bps → 4sec
1,000,000bps → 4sec
なお、改造したソースファイルとKurumiWriter_Win.exeを以下の7zファイルに固めておきました。
ファイル: KurumiWriter_Win_V100_Modify.7z
内容:
KurumiWriter_Win_V100_MON80_20160923.exe
KurumiWriter.vcxproj
SequenceProcessor.cpp
SequenceProcessor.h
SerialPortProcessor.cpp
SerialPortProcessor.h
ちなみに、ソースファイルの改造箇所の一例は以下の通りです。
ファイル: SequenceProcessor.cpp
改造内容(抜粋): 赤字の箇所を改造
追記 : メモ
Windows Communication API - MSDN
COMMTIMEOUTS structure
https://msdn.microsoft.com/library/aa363190.aspx
SetCommTimouts
https://msdn.microsoft.com/library/cc429719.aspx
追記 : メモ
KURUMI Writer for Win V1.00 Source - Rulz
http://japan.renesasrulz.com/gr_user_forum_japanese/m/mediagallery/119.aspx
追記 : メモ
Tool to program RL78 MCUs via serial bootloader - GitHub
master
https://github.com/msalau/rl78flash/
releases
https://github.com/msalau/rl78flash/releases/
v0.5.2
https://github.com/msalau/rl78flash/tree/v0.5.2/
書き込み時間を比較しましたが、両者に違いがあり過ぎるのがちょっと残念でしたので、KurumiWriterを改造
して書き込み時間をどの程度短縮出来るか試してみました。幸い、両者はMITライセンスでソースコードが公開
されていますので、両者を見比べつつ勘を頼りにKurumiWriterで以下の改造を行ってみました。
* 半2重で設計された通信プロトコルで受信スレッドを使う発想に違和感があったのでスレッド処理をやめた
* rl78flashがやっている非同期I/O読み出しを使わずに出来る受信タイムアウトの設定パラメータを拝借した
その結果、以下のように改善されました。(とは言え、ややタイムアウト時間が長かったので微調整が必要になり
そうですし、FT232RLの内蔵EEPROMを書き換える為のRun after COM openにチェックがあるとタイムアウト
するか意図的に調べている箇所を実行して不自然に暫く固まったりしますので、もうちょっとな感はあります。)
FT232RLのWindowsドライバのデフォルト設定
* KurumiWriter V1.00改造前 (Run after COM openのチェック無し、cotton_sketch.bin)
115,200bps → 22sec
500,000bps → 20sec
1,000,000bps → 未サポート
* KurumiWriter V1.00改造後 (Run after COM openのチェック無し、cotton_sketch.bin)
115,200bps → 8sec
500,000bps → 5sec
1,000,000bps → 未サポート
* rl78flash (rl78flash-0.5.2-mon80-20160914 -m 2 -b 通信ボーレート -a COM14 cotton_sketch.mot)
115,200bps → 16sec
500,000bps → 11sec
1,000,000bps → 11sec
以前のエントリでRL78/G10への書き込み時間が短くなることに気付いてから私が常用している設定
* KurumiWriter V1.00改造前 (Run after COM openのチェック無し、cotton_sketch.bin)
115,200bps → 40sec
500,000bps → 36sec (+/-2sec程度のバラツキあり)
1,000,000bps → 未サポート
* KurumiWriter V1.00改造後 (Run after COM openのチェック無し、cotton_sketch.bin)
115,200bps → 7sec
500,000bps → 3sec
1,000,000bps → 未サポート
* rl78flash (rl78flash-0.5.2-mon80-20160914 -m 2 -b 通信ボーレート -a COM14 cotton_sketch.mot)
115,200bps → 10sec
500,000bps → 4sec
1,000,000bps → 4sec
なお、改造したソースファイルとKurumiWriter_Win.exeを以下の7zファイルに固めておきました。
ファイル: KurumiWriter_Win_V100_Modify.7z
内容:
KurumiWriter_Win_V100_MON80_20160923.exe
KurumiWriter.vcxproj
SequenceProcessor.cpp
SequenceProcessor.h
SerialPortProcessor.cpp
SerialPortProcessor.h
ちなみに、ソースファイルの改造箇所の一例は以下の通りです。
ファイル: SequenceProcessor.cpp
改造内容(抜粋): 赤字の箇所を改造
追記 : メモ
Windows Communication API - MSDN
COMMTIMEOUTS structure
https://msdn.microsoft.com/library/aa363190.aspx
SetCommTimouts
https://msdn.microsoft.com/library/cc429719.aspx
追記 : メモ
KURUMI Writer for Win V1.00 Source - Rulz
http://japan.renesasrulz.com/gr_user_forum_japanese/m/mediagallery/119.aspx
追記 : メモ
Tool to program RL78 MCUs via serial bootloader - GitHub
master
https://github.com/msalau/rl78flash/
releases
https://github.com/msalau/rl78flash/releases/
v0.5.2
https://github.com/msalau/rl78flash/tree/v0.5.2/
- 関連記事
-
- RL78マイコン基板(RL78/G13)|Internet Explorerからrl78flashを起動して通信(シリアルモニタ)する
- RL78マイコン基板(RL78/G13)|Internet Explorerからrl78flashを起動してフラッシュ書き込みする
- RL78マイコン基板(RL78/G13)|Internet ExplorerからOCXを使わずにCOMポートを読み書きする
- RL78マイコン基板(RL78/G13)|KurumiWriter(改)で書き込んで自作utf8to932コマンドで日本語表示
- RL78マイコン基板(RL78/G13)|KurumiWriter(改)で書き込んでmoreコマンドでシリアル通信する設定
- RL78マイコン基板(RL78/G13)|KurumiWriter V1.00(ソース公開版)のフラッシュ書き込み時間の改善
- RL78マイコン基板(RL78/G13)|KurumiWriter V2.10とrl78flashの書き込み時間の比較 (CP2102編)
- RL78マイコン基板(RL78/G13)|CP2102+rl78flashで秋月のRL78搭載変換モジュールに書き込み
- RL78マイコン基板(RL78/G13)|CP2102+KurumiWriterで秋月のRL78搭載変換モジュールに書き込み
- RL78マイコン基板(RL78/G13)|rl78flashで書き込んでPython+pySerialでシリアル通信する設定
- RL78マイコン基板(RL78/G13)|TeraTermでログにタイムスタンプを付けて自動保存してくれる機能
- RL78マイコン基板(RL78/G13)|WebコンパイラのSerial.printに日本語出力させてTeraTermで表示
- RL78マイコン|日立/RSDの人のCC-RLの論文が情報処理学会の優秀論文(全54編)の1つに選ばれていた
- RL78マイコン基板(RL78/G13)|rl78flashで書き込んでTeraTermでシリアル通信する設定
- RL78マイコン基板(RL78/G13)|KurumiWriter V1.00(ソース公開版)とrl78flashの書き込み時間の比較
2016/09/23 blog-entry-820 category: RL78 /* 16bit,8bit CISC */
| h o m e |