2016年04月30日

GR-PEACHで遊ぼう(32): フラッシュを使うと面倒

これまでRZ/A1のサンプルをEWARMの中にあるものをSimple_Demoを改造していますが、リンカ設定がNOR/SPIフラッシュのみしかありません。
まあ、バイナリファイルを作ってダウンロードする方法ありますが、それが嫌で始めているので、出来れば他の方法で解決したいです。

RZ/A1のもう一つのサンプルに答えがあります。これまでSimple Demoを使っていますが、Getting Startedに答えがあります。
GR_P0079.png

Getting StartedのRAM Debugのプロジェクト設定をみてみます。
すると実はデフォルトのリンカ設定ファイルを選んでいます。
GR_P0080.png

リンカ設定の中身を見ると、RAM設定用になっています。


ということで、リンカ設定はデフォルトにしてやればRAM配置となりますので、
EWARMからRAMに直接ダウンロードしてデバッグできます。
GR_P0081.png





ラベル:RZ/A1 Cortex-A9 mbed
posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | Renesas | このブログの読者になる | 更新情報をチェックする

2016年04月29日

GR-PEACHで遊ぼう(31): コードの改造

それでは実際にコードを変更してみます。

最初の見立てで、大きく2か所ぐらいかと思います。
1) siochar.cで初期化およびput/getあたりの修正
2)scif_uart_userdef.cの修正
あと
3)scif_uart.cもちょっと考える必要がありそう

で、それぞれ見ていきますと
1)siochar.cで、IoInitScif2のあたりが大きく修正が必要です。
GR_P0074.png

ここであ、SCIF2→ SCIF0に変更
ポート3のところをポート2に変更が基本になります。
今回EWARMの機能で使ったものとして、まとめてコメントアウトする”ブロックコメント”です。
領域を指定して、[編集]-[ブロックコメント]を選択すると行頭に//が挿入されます。
GR_P0075.png

このブロックコメントの良いところは、”ブロックコメントの解除”で戻すことも出来るところです。
GR_P0076.png

また、IoGetChar、IoPutcharもSCIF0に変更します。

2)scif_uart_userdef.cの修正
GR_P0077.png

3)呼び出しもまだ、変更とちゅですが、呼び出しがつながるようにします。
GR_P0078.png






ラベル:mbed Cortex-A9 RZ/A1
posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | Renesas | このブログの読者になる | 更新情報をチェックする

2016年04月28日

GR-PEACHで遊ぼう(30): GR-PEACHでUARTの出し先は?

それでは、GR-PEACHでUARTを動かすためにはどこに出すのか?を検討が必要とです。

もともと、GENMAIボードで使っていたP3_0とP3_2が使用できないところがスタートでした。

今回のUARTはデバッグ機能なので最終的には不要となるため、使いやすそうなところにP2_14,P2_15を第1候補にします。
GR_P0072.png

前に、見たようにポートはいろいろな機能に割り当てられてますので、P2の割り当ても確認しておきます。
GR_P0073.png



まずはこれで検討を開始します。


ラベル:mbed Cortex-A9 RZ/A1
posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | Renesas | このブログの読者になる | 更新情報をチェックする

2016年04月27日

GR-PEACHで遊ぼう(29): UARTのポート設定は?

ここまで、UARTの設定、クロック設定を調べてきましたが、ポート設定を調べる必要があります。
RZ/A1は高機能なマイコンのため、1つのポートに様々な機能を割り当てられているので、実際に使用するときには何を使うかによって正しく設定する必要があります。


まずコードを見てみましょう。
    /* === Initialization of PORT function ==== */
    /* ---- P3_0 : TxD2 ---- */
    /* Port mode : Multiplex mode                     */
    /* Port function setting : 6th multiplex function */
    /* I/O control mode : Peripheral function         */
    RZA_IO_RegWrite_16(&GPIO.PFCAE3, 1, GPIO_PFCAE3_PFCAE30_SHIFT, GPIO_PFCAE3_PFCAE30);
    RZA_IO_RegWrite_16(&GPIO.PFCE3,  0, GPIO_PFCE3_PFCE30_SHIFT,   GPIO_PFCE3_PFCE30);
    RZA_IO_RegWrite_16(&GPIO.PFC3,   1, GPIO_PFC3_PFC30_SHIFT,     GPIO_PFC3_PFC30);
    RZA_IO_RegWrite_16(&GPIO.PMC3,   1, GPIO_PMC3_PMC30_SHIFT,     GPIO_PMC3_PMC30);
    RZA_IO_RegWrite_16(&GPIO.PIPC3,  1, GPIO_PIPC3_PIPC30_SHIFT,   GPIO_PIPC3_PIPC30);

    /* ---- P3_2 : RxD2 ---- */
    /* Port mode : Multiplex mode                     */
    /* Port function setting : 4th multiplex function */
    /* I/O control mode : Peripheral function         */
    RZA_IO_RegWrite_16(&GPIO.PFCAE3, 0, GPIO_PFCAE3_PFCAE32_SHIFT, GPIO_PFCAE3_PFCAE32);
    RZA_IO_RegWrite_16(&GPIO.PFCE3,  1, GPIO_PFCE3_PFCE32_SHIFT,   GPIO_PFCE3_PFCE32);
    RZA_IO_RegWrite_16(&GPIO.PFC3,   1, GPIO_PFC3_PFC32_SHIFT,     GPIO_PFC3_PFC32);
    RZA_IO_RegWrite_16(&GPIO.PMC3,   1, GPIO_PMC3_PMC32_SHIFT,     GPIO_PMC3_PMC32);
    RZA_IO_RegWrite_16(&GPIO.PIPC3,  1, GPIO_PIPC3_PIPC32_SHIFT,   GPIO_PIPC3_PIPC32);


この設定はGENMAIボードの物ですが、P3_0とP3_2の設定をしています。それではP3はそれぞれどんな機能が実装されているのでしょうか?
GR_P0070.png

そうすると設定をしますが、こんな感じです。
GR_P0071.png
PMは専用端子側に設定することで、個別の設定は不要になります。

これで、RZ/A1のUARTにかかわるところが理解できました。
結構大変でしたが、こうしたサンプルがあるとやりやすいです。



続きを読む
posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | Renesas | このブログの読者になる | 更新情報をチェックする

2016年04月26日

GR-PEACHで遊ぼう(28): クロック設定は?

UARTのボーレートを設定するためには、クロック設定を理解しておく必要があります。
昨日は、もうP1Φ=66.67前提で話をしていますが、そもそも、だれが設定したのだ!という部分も見ておきましょう。

まずクロック周りの回路図です。
GR_P0067.png

これだけでは10〜13.33MHzのクロックをつなぐぐらいしか解りませんので、外部からのどんなクロックが入力されているかも確認しましょう。
SystemClockに13.33MHzのクロックをつないでいるのが確認できました。
GR_P0068.png


ここでは、SystemClockを使用するモード0の話になります。
GR_P0069.png

これで一番上の設定になっています。設定の選択はあまり多くなくIFCで決まります。
I:G:B:P1:P0とありますが、以下のようになります。
  • I: CPUクロック
  • G: 画像処理クロック
  • B: 内部バスクロック
  • P0: 周辺クロック0
  • P1: 周辺クロック1

I:G:B:P1:P0=30:20:10:5:5/2
で、13.333を書けてみましょう。
I:G:B:P1:P0=30:20:10:5:5/2=399.99:266.66:133.33:66.665:33.3325となります。

で、UARTのボーレートはP1で決定されますので、昨日までの設定となっているわけです。




ラベル:RZ/A1 Cortex-A9 mbed
posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | Renesas | このブログの読者になる | 更新情報をチェックする

2016年04月25日

GR-PEACHで遊ぼう(27): UARTサンプル理解(5)

RZ/A1のUARTサンプルもうすこし追い込みます。

次に出てくるのはシリアルモードレジスタ(SCSMR)の設定です。
    /* ---- Serial mode register (SCSMR2) setting ----
    b7    C/A  - Communication mode : Asynchronous mode
    b6    CHR  - Character length   : 8-bit data
    b5    PE   - Parity enable      : Add and check are disabled
    b3    STOP - Stop bit length    : 1 stop bit
    b1:b0 CKS  - Clock select       : cks(argument) */
    SCIF2.SCSMR = cks & 0x0003u;
SCSMRのレジスタを見てみると、ここでUART通信の基本的な設定をしています。上記のコメントからも見えますが。。。
GR_P0063.png

クロックはもとからchkがSCIF_CKS_DIVISION_1でゼロですので、P1クロックと同じ速度での設定となります。



どんどんいきましょう。
    /* ---- Serial extension mode register (SCEMR2) setting ----
    b7 BGDM - Baud rate generator double-speed mode  : Normal mode
    b0 ABCS - Base clock select in asynchronous mode : Base clock is 16 times the bit rate */
    SCIF2.SCEMR = 0x0000u;
GR_P0064.png



それで、次はボーレートの設定です。scbrr=17です。
    /* ---- Bit rate register (SCBRR2) setting ---- */
    SCIF2.SCBRR = scbrr;
GR_P0065.png
この時B:ビットレート、N=SCBRRの設定値、P1Φ:周辺モジュール用クロックMHz, nボーレートジェネレータ入力クロック(0,1,2,3)


これまでの設定と、設定したい数を入れてNを確認してみたいと思います。
P1Φ=66.67
B=115200
n=0
ということで計算結果は以下になります。
GR_P0066.png

あとは、お見せするだけおわります。
次にFIFOの設定です。
        /* b10:b8 RSTRG - RTS output active trigger         : Initial value
           b7:b6  RTRG  - Receive FIFO data trigger         : 1-data
           b5:b4  TTRG  - Transmit FIFO data trigger        : 0-data
           b3     MCE   - Modem control enable              : Disabled
           b2     TFRST - Transmit FIFO data register reset : Disabled
           b1     RFRST - Receive FIFO data register reset  : Disabled
           b0     LOOP  - Loop-back test                    : Disabled */
        SCIF2.SCFCR = 0x0030u;


そして、シリアルポートレジスタの設定がこちらです。
    /* ---- Serial port register (SCSPTR2) setting ----
    b1 SPB2IO - Serial port break output : Enabled
    b0 SPB2DT - Serial port break data   : High-level */
    SCIF2.SCSPTR |= 0x0003u;

ここまで、UARTの直接の指定ですが、これ以外にも指定する必要があります。
もうしばらく調査をしていきます。







ラベル:RZ/A1 Cortex-A9 mbed
posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | Renesas | このブログの読者になる | 更新情報をチェックする