現在の状況
GR-CITRUSと同等に、GR-SAKURAにもRX65N-2MBを実装してArduino環境を構築中です。
素のGR-ROSE,GR-CITRUS(RX65N),GR-SAKURA(RX65N)のピン番号の定義などをdefine文で切り替えられるようにしようとしていたのですが、AVRベースのArduinoの仕様とルネサスの開発環境の独自性から詰まるポイントが多数ありました。
いくつかはこちらの調査不足と思いますが、忘れないよう記録しておきます。
強制アーカイブ関連
IDEforGRではGR-ROSE仕様から元のファイルを変えようとしても、ほとんどのファイルがgr_common.aというアーカイブで固められていてIDE下のファイルを書き換えても何も起こりません。
IDEでも端子配置を変えたければWebコンパイラで生成したgr_common.aをダウンロードしてくればよいのですが、Webコンパイラに再コンパイルしてもらうためにはまじないが必要です。
- アーカイブ対象のファイルを再コンパイルしたいときは毎回gr_common.aを消す
- 同様にスケッチも消す
ここはCITRUSでも実施した内容なので難しくはないのですが、SAKURA向けの設定を追加してdefineで切り替えようとしてもCITRUSの設定のまま変わらないという事態になりました。
PRGMEM関連
ピン番号と端子の結び付けはpins_arduino.h下のdigital_pin_to_port_PGMなどの配列に記載し、この配列はAVR独自のプログラムでFlashに書かれ、実行時にFlashが参照されます。
コンパイルでgr_common.aを再生成しても前の設定が残っているらしく、何時間試行しても上書きされませんでした。
独自のピン配置にするのは難しいのかな、と思いつつPROGMEMから外すなどしているのですがWebコンパイラで変更が反映されてもIDEでは駄目だったりで原因がはっきりしません。
ARDUINO_MAINというdefineが変に絡んでいてややこしいです。
(抜粋)
//const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
const uint8_t digital_pin_to_port[] = {
(抜粋)
//#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
#define digitalPinToPort(P) ( digital_pin_to_port[P] )
しばらく試行が続きそうです。
(続く)