RX24Tのフラッシュ書き込みプログラムが動くようになった。
以前に実装したRX63T版と微妙に違うので、それを修正して、対応しただけ
なのだけど、RX63Tより簡略化されているので、簡単だった。
※まだ、実装されていないプロトコルがある。(プロテクションIDの設定など)
RX63Tでは、内臓発振器の周波数が低い為、速度をキックする場合には、外部
接続クリスタルの周波数を設定して、内部のクロックデバィダをプログラムする必
要があったが、RX24Tでは、内部発振器の周波数はそこそこ高いので、その必
要は無くなった。
# Platform: 'Cygwin' # Configuration file path: 'rx_prog.conf' # Device: 'RX24T' # Serial port path: 'COM12' # Serial port speed: 115200 # Input file path: 'DS3231_sample.mot' # Motolola Sx format load map: (exec: 0x00000000) # 0xFFFC0000 to 0xFFFC1B4B (6988 bytes) # 0xFFFFFFD0 to 0xFFFFFFFF (48 bytes) # Total (7036 bytes) # Serial port alias: COM12 ---> /dev/ttyS11 # Serial port path: '/dev/ttyS11' # Connection OK. #01/01: Device: RX200 Series (LittleEndian) #01/01: Device ID: 0x33306638 #01/01: Data area: 1D #01/01: User Area: FFFC0000, FFFFFFFF #01/01: Data Area: 00100000, 00101FFF #01/02: Block: FFFC0000, 00000800, 00000080 #02/02: Block: 00100000, 00000400, 00000008 #01/01: Change baud rate: #01/01: ID Protect: Disable Write: ################################################ Verify: ################################################
-----
rx_prog では、rx63t_protocol.hpp、rx24t_protocol.hpp と2つの制御プログラム
を使っている、C++ では、通常このような場合には、インターフェースクラスを使
って切り替えるのが一般的ではあるが、「new」を使いたくないとか、ポインター
でアクセスするのが好きじゃ無いとか色々あり、boost::variant を使ってみた。
これを使って、各メソッドに対応する visitor クラスを実装すれば、同じような
共有化が出来る。
最初は、個々の visitor クラスの実装が面倒とも思ったが、インターフェースクラス
を書くのと大差無い事が判った。
これからは、boost::variant を積極的に使っていきたい~
ただ、エラー発生時に、非常にわかり難いエラーメッセージが出力される・・・
この辺りは慣れが必要と思う・・・