GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
GR-CITRUSのTX1ピン(0ピン)/RX1ピン(1ピン)でCS+のRXシリアルデバッガを試したい時にモニタプログラム側(monitor.mot)をビルドする時のHardwareSetup()です。(参考までに。なお、RXシリアルデバッガのUMに従ってマイクロコントローラ変更やセクションアドレス変更も行っています。ちなみに、以下ではTX1はCMOS出力です。)RX_Serial_Debugger_V30000¥Serial_Debugger¥RX630¥hwsetup.c変更前#define BRR 12 // Bitrate Register Value#define CLOCK 192000000 // Input Clock value at Frequency dividerconst unsigned char Brr = BRR;const unsigned long Clock = CLOCK;void HardwareSetup(void){int i;// If Used 12MHz Main Clock SYSTEM.PRCR.WORD = 0xA503; // Protect Disable SYSTEM.MOSCWTCR.BYTE = 0x0D; // 12MHz*131072cyc=10.9225ms SYSTEM.MOSCCR.BYTE = 0x00; // Enable Main Clock while( SYSTEM.MOSCCR.BYTE ) ; // Wait Finish SYSTEM.PLLCR.WORD = 0x0F00; // PLL 12MHz*16/1=192MHz SYSTEM.PLLCR2.BYTE = 0x00; // Enable PLL SYSTEM.PLLWTCR.BYTE = 0x0E; // 192MHz*2097152cyc=10.9226ms for( i=0 ; i<636 ; i++ ) // 20.1053ms/143.75kHz/5cyc=635.527 nop( ); SYSTEM.SCKCR.LONG = 0x21021211; // FCLK=48MHz,ICLK=96MHz,BCLK=48MHz,PCLKB=48MHz while( SYSTEM.SCKCR.LONG != 0x21021211 ) ; // Wait Finish SYSTEM.SCKCR2.WORD = 0x0032; // UCLK=48MHz,IECLK=48MHz while( SYSTEM.SCKCR2.WORD != 0x0032 ) ; // Wait Finish SYSTEM.SCKCR3.WORD = 0x0400; // Select PLL while( SYSTEM.SCKCR3.WORD != 0x0400 ) ; // Wait Finish SYSTEM.LOCOCR.BYTE = 0x01; // Disable LOCO SYSTEM.PRCR.WORD = 0xA500; // Protect Enable// If Used SCI0// PORT2.PMR.BIT.B1 = 1; // Use P21 for RXD0// PORT3.PMR.BIT.B3 = 1; // Use P33 for RXD0// PORT2.PMR.BIT.B0 = 1; // Use P20 for TXD0// PORT3.PMR.BIT.B2 = 1; // Use P32 for TXD0// If Used SCI1// PORT1.PMR.BIT.B5 = 1; // Use P15 for RXD1 PORT3.PMR.BIT.B0 = 1; // Use P30 for RXD1// PORTF.PMR.BIT.B2 = 1; // Use PF2 for RXD1// PORT1.PMR.BIT.B6 = 1; // Use P16 for TXD1 PORT2.PMR.BIT.B6 = 1; // Use P26 for TXD1// PORTF.PMR.BIT.B0 = 1; // Use PF0 for TXD1// If Used SCI2// PORT1.PMR.BIT.B2 = 1; // Use P12 for RXD2// PORT5.PMR.BIT.B2 = 1; // Use P52 for RXD2// PORT1.PMR.BIT.B3 = 1; // Use P13 for TXD2// PORT5.PMR.BIT.B0 = 1; // Use P50 for TXD2。。。// If Used SCI12// PORTE.PMR.BIT.B2 = 1; // Use PE2 for RXD12// PORTE.PMR.BIT.B1 = 1; // Use PE1 for TXD12}変更後: 追加/削除した箇所を赤字/赤字取り消し線にしています。 MPC.PWPR.BYTE = 0x00; // Protect Disable (Step 1) MPC.PWPR.BYTE = 0x40; // Protect Disable (Step 2) MPC.P21PFS.BYTE = 0x0A; // Set P21 as RXD0 MPC.P20PFS.BYTE = 0x0A; // Set P20 as TXD0 MPC.PWPR.BYTE = 0x80; // Protect Enable// If Used SCI0// PORT2.PMR.BIT.B1 = 1; // Use P21 for RXD0// PORT3.PMR.BIT.B3 = 1; // Use P33 for RXD0// PORT2.PMR.BIT.B0 = 1; // Use P20 for TXD0// PORT3.PMR.BIT.B2 = 1; // Use P32 for TXD0// If Used SCI1// PORT1.PMR.BIT.B5 = 1; // Use P15 for RXD1// PORT3.PMR.BIT.B0 = 1; // Use P30 for RXD1// PORTF.PMR.BIT.B2 = 1; // Use PF2 for RXD1// PORT1.PMR.BIT.B6 = 1; // Use P16 for TXD1// PORT2.PMR.BIT.B6 = 1; // Use P26 for TXD1// PORTF.PMR.BIT.B0 = 1; // Use PF0 for TXD1
以下のように1行追加したところ、GR-CITRUSでCS+のRXシリアルデバッガを動かす時のTX1ピン(0ピン)をNチャンネルオープンドレインにすることが出来ました。例えば、FT232RLのRXDピン(TX1ピンの相手側)をFT232RLのVCCIOピンからプルアップする構成にしておけば、USBシリアル変換モジュールとGR-CITRUSの電源投入順序を気にしなくてもよくなりそうです。(FT232RLの絶対最大定格ではRXDピン(に限らず)の入力電圧範囲は -0.5V to +(VCC+0.5)V でした。他方、RX631の絶対最大定格ではP21ポート(など一部のポート)の入力電圧範囲は -0.3V ~ +5.8Vでした。)変更後その2: 追加した箇所を赤字にしています。// If Used SCI0 PORT2.PMR.BIT.B1 = 1; // Use P21 for RXD0// PORT3.PMR.BIT.B3 = 1; // Use P33 for RXD0 PORT2.ODR0.BIT.B0 = 1; // Set P20 as N-ch Open Drain PORT2.PMR.BIT.B0 = 1; // Use P20 for TXD0// PORT3.PMR.BIT.B2 = 1; // Use P32 for TXD0なお、参照したURLは以下の通りです。http://www.ftdichip.com/Products/ICs/FT232R.htmhttp://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdfhttps://www.renesas.com/ja-jp/products/microcontrollers-microprocessors/rx/rx600/rx63n-631.htmlhttps://www.renesas.com/ja-jp/doc/products/mpumcu/doc/rx_family/r01uh0041jj0180_rx63n631.pdfところで、なぜルネサスには常に最新版ドキュメントを指すパーマネントリンク(というかURL)が無いのでしょうかね? 不便ですよね? (版数情報を含むURLで旧版を後々まで参照出来るシステムになっていれば、それはそれで有用かと思いますが、そういうURLしかないのは不便だと思うのですが、、、)
NoMaYさん、ありがとうございます!
まさかCS+でのデバッグを実現されるとは思いませんでした。ちなみにこのモニターデバッガの使い方が分かっていないのですが、HardwareSetupを変更した後は、WEBコンパイラとかで再生したbinを書き込めばいいということですか?
デバッグできるようになったとして、ソースデバッグはできないという認識でいいのですかね?
GNURXでビルドする時のGCC/LDのオプションやリンカスクリプトの変更でソースレベルデバッグも出来そうです。以下はIDE4GR 0.8.0のplatform.txtやlinker_arduino.gsiを書き換えて試してみたものです。一区切りついたら、ブログ形式で投稿したいと思っています。
おぉ、すごいですね。CS+でGNUのELF読めるんですね・・・(中の人間なのに知りませんでした)
GR-CITRUSで、CS+のRXシリアルデバッガのモニタプログラムを結合した独自USBMSCファームとそれを現行のUSBMSCファームのマスストレージ書き込みでセルフアップデートするプログラム(citrus_usbfw_updater.bin)を作ることが出来ましたので、がじぇっとるねさすコミュニティへ投稿するブログを書いていこうかと思います。(楽観的には明日か明後日ぐらいに書き上がるといいなぁ、、、)