GENMAIボードでのブートについて2

Hiroです。

 

以前、シリアルフラッシュからのブート起動が出来ないことを質問させていただきました。

その時点では解決したのですが、また問題が発生しましたので質問します。

ブートファイルを書き換えるとシリアルフラッシュからの起動ができなくなります。

ブートファイルはICEで書き込んでいます。

シリアル通信によるPC画面上での確認では、一切動いてない状態です(メッセージが一切出力されません)。

一度NORフラッシュから(BOOT_MODE0で)起動を掛けると、それ以降はシリアルフラッシュから(BOOT_MODE3で)

の起動が可能となります。

ブートファイルの書き換え時に環境設定を消去したのではないかと考えたのですが、

データは残っていますし、Kernaelイメージをシリアルフラッシュに書き込んでいるのですが

NORフラッシュ起動時にもKernelイメージをシリアルフラッシュから読み込んでいるので

環境設定は残っているようです。

NORフラッシュからの起動以降は、シリアルフラッシュからの起動が可能になることから

ブート処理の中で何かを設定することで起動可能になっていると思いますが、

ブートファイルの書き換えでその設定を壊すとも考えづらいと思います。

ブートファイル書き換え後に、シリアルフラッシュから(BOOT_MODE3で)起動させるには

何をすればよいかをお教えください。

 

以上

Parents
  • Hiro さん

    > ご回答ありがとうございます。以下にご質問の回答をします。
    初心者フォーラムとは思えない適切な回答、有難うございます。非常に助かります。
    余談ですが、よろしければ、初心者フォーラムを卒業してRZフォーラム(あるいは、英語版の
    RZ Forum)へどうぞ。 最近、少し寂しいもので(笑)

    > >(1) シリアルフラッシュを書き換えた後、一旦、GENMAI の電源を落とし、再投入する。

    > シリアルフラッシュ書込み後、GENMAI電源OFF。ICEの出力画面に"ターゲット電源OFF"表示
    > GENMAI電源ON。ICEの出力画面に"ターゲット電源ON"表示

    > >(2) 0x18000000 番地にハードウェアブレークポイント(ソフトウェアブレークポイントは

    > 不可)を設定し、ブートモード3で実行する。
    > ハードウェアブレークはICEに拒否されたので、OCD(On Chip Debug)ブレークを使用しました。
    > ブレーク時のレジスタは以下の通りです。
    > PC:0x18000000、LR:0x00000000、CPSR:0x600001d3、SPSR:0x5b0d7f31

    ここまでは、特に問題ありません。

    RZ/A1 内蔵ROM のファームウェアが SPIBSC チャネル0の初期化に成功した後、
    シリアルフラッシュの先頭(0x18000000 番地)から書き込まれている u-boot に
    ジャンプしようとしてブレークがかかったものです。

    > >(5) 十秒ほど実行し、暴走しているようなら、強制ブレークして、その時のレジスタの値を
    > >確認する。

    > (4)→(5)まで実行した結果のレジスタは以下の通りです。
    > PC:0x18000004、LR:0x18000008、CPSR:0x600001db、SPSR:0x600001db
    > GENMAIボードを2枚用意して2枚ともですので、故障ではないと思っております。


    この結果で見る限り、その後、シリアルフラッシュの先頭(0x18000000 番地)から
    書き込まれている u-boot を実行しようとして、あるいは、実行中に、
    未定義命令例外を多重に起こして無限ループに入り込んでしまっているようです。

    CP15 の設定前に不動小数点演算命令や除算命令を実行した場合にも、この例外が
    発生しますが、今回のケースでは考えにくく、
    何らかの原因で、シリアルフラッシュが正しく読めない、あるいは、読めなくなる、
    と考えた方が良さそうです。

    こちらで試した限り、再現しない(特に問題無く u-boot が立ち上がる)ので、
    申し訳ありませんが、次のことを試してみていただけますか?

    先のメールの手順の (1)~(3) は、そのままで、
    (4) 0x18000000 でブレークしたら、その後、0x18000000 番地からメモリダンプして
    シリアルフラッシュが正常に読めることを確認する。
    (5) 次に 0x18000004 にハードウェアブレークポイントを設定し、(0x18000000 から)
    継続実行する。
    (6) 0x18000004 でブレークしたら、その時のレジスタ(PC, LR, CPSR, SPSR) を
    確認する。
    (7) (6) の LR のアドレスの前後10命令程度を逆アセンブルする。

    もし、(6) でブレークしなかったら、(1)~(3) は、そのままで、
    (4) 0x18000000 でブレークしたら、次に 0x18000004 にハードウェアブレーク
    ポイントを設定し、(0x18000000 から) 継続実行する。
    (5) 0x18000004 でブレークしたら、その時のレジスタ(PC, LR, CPSR, SPSR) を
    確認する。
    (7) (5) の LR のアドレスの前後10命令程度を逆アセンブルする。

    をしてみてください。
Reply
  • Hiro さん

    > ご回答ありがとうございます。以下にご質問の回答をします。
    初心者フォーラムとは思えない適切な回答、有難うございます。非常に助かります。
    余談ですが、よろしければ、初心者フォーラムを卒業してRZフォーラム(あるいは、英語版の
    RZ Forum)へどうぞ。 最近、少し寂しいもので(笑)

    > >(1) シリアルフラッシュを書き換えた後、一旦、GENMAI の電源を落とし、再投入する。

    > シリアルフラッシュ書込み後、GENMAI電源OFF。ICEの出力画面に"ターゲット電源OFF"表示
    > GENMAI電源ON。ICEの出力画面に"ターゲット電源ON"表示

    > >(2) 0x18000000 番地にハードウェアブレークポイント(ソフトウェアブレークポイントは

    > 不可)を設定し、ブートモード3で実行する。
    > ハードウェアブレークはICEに拒否されたので、OCD(On Chip Debug)ブレークを使用しました。
    > ブレーク時のレジスタは以下の通りです。
    > PC:0x18000000、LR:0x00000000、CPSR:0x600001d3、SPSR:0x5b0d7f31

    ここまでは、特に問題ありません。

    RZ/A1 内蔵ROM のファームウェアが SPIBSC チャネル0の初期化に成功した後、
    シリアルフラッシュの先頭(0x18000000 番地)から書き込まれている u-boot に
    ジャンプしようとしてブレークがかかったものです。

    > >(5) 十秒ほど実行し、暴走しているようなら、強制ブレークして、その時のレジスタの値を
    > >確認する。

    > (4)→(5)まで実行した結果のレジスタは以下の通りです。
    > PC:0x18000004、LR:0x18000008、CPSR:0x600001db、SPSR:0x600001db
    > GENMAIボードを2枚用意して2枚ともですので、故障ではないと思っております。


    この結果で見る限り、その後、シリアルフラッシュの先頭(0x18000000 番地)から
    書き込まれている u-boot を実行しようとして、あるいは、実行中に、
    未定義命令例外を多重に起こして無限ループに入り込んでしまっているようです。

    CP15 の設定前に不動小数点演算命令や除算命令を実行した場合にも、この例外が
    発生しますが、今回のケースでは考えにくく、
    何らかの原因で、シリアルフラッシュが正しく読めない、あるいは、読めなくなる、
    と考えた方が良さそうです。

    こちらで試した限り、再現しない(特に問題無く u-boot が立ち上がる)ので、
    申し訳ありませんが、次のことを試してみていただけますか?

    先のメールの手順の (1)~(3) は、そのままで、
    (4) 0x18000000 でブレークしたら、その後、0x18000000 番地からメモリダンプして
    シリアルフラッシュが正常に読めることを確認する。
    (5) 次に 0x18000004 にハードウェアブレークポイントを設定し、(0x18000000 から)
    継続実行する。
    (6) 0x18000004 でブレークしたら、その時のレジスタ(PC, LR, CPSR, SPSR) を
    確認する。
    (7) (6) の LR のアドレスの前後10命令程度を逆アセンブルする。

    もし、(6) でブレークしなかったら、(1)~(3) は、そのままで、
    (4) 0x18000000 でブレークしたら、次に 0x18000004 にハードウェアブレーク
    ポイントを設定し、(0x18000000 から) 継続実行する。
    (5) 0x18000004 でブレークしたら、その時のレジスタ(PC, LR, CPSR, SPSR) を
    確認する。
    (7) (5) の LR のアドレスの前後10命令程度を逆アセンブルする。

    をしてみてください。
Children
  • pecteilisさん。詳細なご検討ありがとうございます。
    まずは、
    >余談ですが、よろしければ、初心者フォーラムを卒業してRZフォーラム(あるいは、英語版の
    RZ Forum)へどうぞ。 最近、少し寂しいもので(笑)
     組み込みLinuxに関してはまったくの初心者ですので、今回のGENMAIで組み込みLinuxを動作させるまでは、
     初心者として扱ってください。(組み込みに関しては、そこそこ経験はありますが)

    >(4) 0x18000000 でブレークしたら、その後、0x18000000 番地からメモリダンプして
    シリアルフラッシュが正常に読めることを確認する。
     この時点でシリアルフラッシュが正常に読み込めません(すべて0xffです)。
     NORフラッシュ起動後に同じ操作をして、ブレーク後は、正常に読み出せます。

    シリアルフラッシュに書き込む際に、以下のスクリプトを実行しています。(添付ファイルの付け方が分かりませんのでテキストを貼り付けます)
    ############################################
    # RZ/A1H_A1M Init script
    ############################################
    # Example of circuit diagram.
    #
    # ----------+
    # RZ/A1x |
    # | +-------------+
    # | | Serial Flash|
    # ch0 |-----------+ |
    # | | |
    # | +-------------+
    # |
    # | +-------------+
    # | | Serial Flash|
    # ch1 |-----------+ |
    # | | |
    # | +-------------+
    # |
    # ----------+
    #Data Version Discription
    #-----------+---------+-----------------------
    #2013/12/27 1.00 New
    ##############################################


    #
    # ;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    # ;*; CPG Setting ;;
    # ;*; PLL(x30),I:G:B:P1:P0 = 30:10:10:5:5/2 ;;
    # ;*; CKIO:Output at time usually,Output when bus right is opened,output at standby"L" ;;
    # ;*; Clockin = 13.33MHz, CKIO = 66.67MHz ;;
    # ;*; I Clock = 400.00MHz ;;
    # ;*; G Clock = 133.33MHz ;;
    # ;*; B Clock = 133.33MHz ;;
    # ;*; P1 Clock = 66.67MHz ;;
    # ;*; P0 Clock = 33.33MHz ;;
    # ;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    reset
    srqwait
    #PL310 Initialize
    mem l #0x3fffff80 = 0x00000001 off

    # dummy read
    mdump #0x3fffff80,,0x4 l
    delay 1

    # FRQCR
    # FRQCR2(Default)
    mem w #0xfcfe0010 = 0x1035 off
    mem w #0xfcfe0014 = 0x0003 off

    # ;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    # ;*; Internal RAM write enable ;;
    # ;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    # ;*; Writing to On-Chip Data-Retention RAM is enabled.
    # ;*; SYSCR3.RRAMWE3=RRAMWE2=RRAMWE1=RRAMWE0=1
    mem b #0xfcfe0408 = 0x0f off

    # ;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    # ;*; SPI Settings ;;
    # ;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    # *************************************************
    # SPI Controller enable
    # *************************************************
    #STB_STBCR = STB_STBCR & ~STB_STBCR_SPIBSC0_MSK;
    mem b 0xFCFE0438 = 0xF3 off

    # *************************************************
    # Ch0 Settings
    # *************************************************
    # PORT9[7:2] Serial Flash ch0-1
    #
    # REG_PIPC9
    # REG_PM9
    # REG_PFC9
    # REG_PFCE9
    # REG_PFCAE9
    # REG_PMC9
    mem w #0xFCFE7224 = 0x00FF off
    mem w #0xFCFE3324 = 0xFF03 off
    mem w #0xFCFE3524 = 0x00FC off
    mem w #0xFCFE3624 = 0x0000 off
    mem w #0xFCFE3A24 = 0x0000 off
    mem w #0xFCFE3424 = 0x00FF off


    # PORT2[12:15]Serial Flash ch0-2
    #
    # REG_PIPC2
    # REG_PM2
    # REG_PFC2
    # REG_PFCE2
    # REG_PFCAE2
    # REG_PMC2
    mem w #0xFCFE7208 = 0xF000 off
    mem w #0xFCFE3308 = 0x0000 off
    mem w #0xFCFE3508 = 0xF000 off
    mem w #0xFCFE3608 = 0xF000 off
    mem w #0xFCFE3A08 = 0x0000 off
    mem w #0xFCFE3408 = 0xF000 off

    #REG_CMNCR
    mem l #0x3FEFA000 = 0x01fff320 off

    #REG_SSLDR 0x3FEFA004uL
    mem l #0x3FEFA004 = 0x00070707 off

    # /* ---- Bit rate 66.67Mbps ---- */
    mem l #0x3FEFA008 = 0x00000200 off


    # /* S-flash deta read address map 26bit */
    mem l #0x3FEFA014 = 0x00000001 off



    # *************************************************
    # Ch1 Settings
    # *************************************************
    # PORT8[15:10] Serial Flash ch1
    # REG_PMC8
    # REG_PFCAE8
    # REG_PFCE8
    # REG_PFC8
    # REG_PM8
    # REG_PIPC8
    mem w #0xfcfe3420 = 0xffff off
    mem w #0xfcfe3A20 = 0x0000 off
    mem w #0xfcfe3620 = 0xfc00 off
    mem w #0xfcfe3520 = 0x0000 off
    mem w #0xfcfe3320 = 0x03ff off
    mem w #0xfcfe7220 = 0xffff off


    #REG_CMNCR
    mem l #0x3FEFB000 = 0x01fff320 off

    #REG_SSLDR 0x3FEFB004uL
    mem l #0x3FEFB004 = 0x00070707 off

    # /* ---- Bit rate 66.67Mbps ---- */
    mem l #0x3FEFB008 = 0x00000200 off

    # /* S-flash deta read address map 26bit */
    mem l #0x3FEFB014 = 0x00000001 off

    # Reset of Serial Flash (ch0: Serial Flash x1)
    mem l #0x3FEFA000 = 0x81FFF320 off

    # Write enable
    mem l #0x3FEFA024 = 0x00060000 off
    mem l #0x3FEFA030 = 0x00004000 off
    mem l #0x3FEFA020 = 0x00000001 off
    # Reset
    mem l #0x3FEFA024 = 0x00F00000 off
    mem l #0x3FEFA030 = 0x00004000 off
    mem l #0x3FEFA020 = 0x00000001 off

    mem l #0x3FEFA000 = 0x01FFF320 off

    # Reset of Serial Flash (ch1: Serial Flash x1)
    mem l #0x3FEFB000 = 0x81FFF320 off

    # Write enable
    mem l #0x3FEFB024 = 0x00060000 off
    mem l #0x3FEFB030 = 0x00004000 off
    mem l #0x3FEFB020 = 0x00000001 off
    # Reset
    mem l #0x3FEFB024 = 0x00F00000 off
    mem l #0x3FEFB030 = 0x00004000 off
    mem l #0x3FEFB020 = 0x00000001 off

    mem l #0x3FEFB000 = 0x01FFF320 off

    ICEのメーカからの提供です。
    これが問題でしょうか。

    また情報として、NORフラッシュで起動させてブート開始後にキー入力でブートコマンドが入力できる状態にした後(カーネルが起動する前)で電源OFFしても、その後シリアルフラッシュからの起動はできません。NORフラッシュで起動させ、カーネルの初期化が終了(現在は、ファイルシステムでエラーになるので完全には終了していません)しないと、シリアルフラッシュからの起動はできな状況です。

    長くなってしまいましたが、ご検討をお願いします。

    以上
  • 昨日の実施でブレーク時にシリアルフラッシュから読み込めないと回答しましたが、ICEでリセットを実施後に確認したところ読み込めました。(4)以降の手順を実施しましたのでご報告します。

    >(6) 0x18000004 でブレークしたら、その時のレジスタ(PC, LR, CPSR, SPSR) を確認する。
     PC:0x18000004、LR:0x18000014、CPSR:0x600001db、SPSR:0x600001d7

    >(7) (6) の LR のアドレスの前後10命令程度を逆アセンブルする。
    Addr Data Source
     18000000 ea000014 b &18000058
     18000004 e59ff014 ldr pc,&18000020
     18000008 e59ff014 ldr pc,&18000024
     1800000c e59ff014 ldr pc,&18000028
     18000010 e59ff014 ldr pc,&1800002c
     18000014 e59ff014 ldr pc,&18000030
     18000018 e59ff014 ldr pc,&18000034
     1800001c e59ff014 ldr pc,&18000038
     18000020 180001a0 stmneda r0,{r5,r7-r8}
     18000024 18000200 strmneda r0,{r9}
     18000028 18000260 stmneda r0,{r5-r6,r9}
    1800002c 180002c0 stmneda r0,{r6-r7,r9}
    18000030 18000320 stmneda r0,{r5,r8-r9}

     R0:0x08c5187a、R5:0x0000003c、R6:R7:R8:R9:0x00000000

    >もし、(6) でブレークしなかったら、(1)~(3) は、そのままで、
     これ以降の手順が、その前までの手順との違いが分かりませんでした。別の情報の取得方法が有るようでしたら、ご指示下さい。

    以上
  • pecteilisさん。
    >こちらで試した限り、再現しない(特に問題無く u-boot が立ち上がる)ので、
     そちらでは問題ないとのことですの、こちらのボードの設定をお伝えしておきます。
     「r20ut2596jj_r7s72100evum.pdf」で示されているJP、SWで初期値以外は以下の通りです。
     JP5=1-2、JP8=1-2、SW1-1:1-3:1-4=OFF

     JP5とSW1-4は初期値でも実施しましたが、動作に変わりはありません。

    以上
  • Hiro さん

    とりあえず、時間の都合で、こちらの投稿から。
    > >こちらで試した限り、再現しない(特に問題無く u-boot が立ち上がる)ので、
    >  そちらでは問題ないとのことですの、こちらのボードの設定をお伝えしておきます。
    >  「r20ut2596jj_r7s72100evum.pdf」で示されているJP、SWで初期値以外は以下の通りです。
    >  JP5=1-2、JP8=1-2、SW1-1:1-3:1-4=OFF

    >  JP5とSW1-4は初期値でも実施しましたが、動作に変わりはありません。

    ご連絡、有難うございます。

    ジャンパ等の設定は、BSPに含まれていたリリース通知の「4-1.DIPSW,ジャンパの設定」に
    従って、行ってください。上記の変更は、何か意図があってのものでしょうか?

    JP5、JP8 の設定は、NORフラッシュを使用する場合、不適当な設定です。
    現状、
    ・ シリアルフラッシュメモリ3は不使用(SPBSSL_1がL)、
    ・ NORフラッシュメモリは、先頭から1MB未満のみを使用(A21がL)
    ・ SW1-3=OFF固定(CS0#がL)
    などの条件が揃ったため、(多分)偶然、動作していますが、Cortex-A9 のプリフェッチや
    投機実行の影響で誤動作しても不思議ではありません。

    また、SW1-4の設定では、カーネルが管理する時間が、計算上4%程度、遅れます。

    それはさておき、上の Hiro さんの設定でも、当方の GENMAI では、u-boot は
    シリアルフラッシュから起動しました。

  • Hiroです。
    最初の掲示で

    >シリアル通信によるPC画面上での確認では、一切動いてない状態です(メッセージが一切出力されません)。

    としたように、シリアル通信によるPC画面上にメッセージが出力されない=起動しない、で考えていました。
    もしかしたら、シリアル通信が出来ていないだけかと思ってもいましたので、ブートのポート設定時にP4_10と
    P4_11を出力ポートの設定に変更してみました。
    結果、LEDが点灯しましたので、ブートプログラムの少なくともレジスタ設定は走っているようです。
    この情報から何か探れることは有りますでしょうか。

    以上
  • Hiro さん

    丁度、良いタイミングでした。上の

    > ブートのポート設定時にP4_10とP4_11を出力ポートの設定に変更してみました。

    は、include/configs/rskrza1.h の中で定義している値を変更したのだと思います。

    それは、変更したままで、更に、board/renesas/rskrza1/lowlevel_init.S の赤字の
    部分(ポート4の設定部分)を青字の部分(ポート9の設定部分) の後ろに移動したブート
    プログラムで、同じことをしてみていただけますか? ♯ 最初の数字は、行番号です。

    点灯しないことが私の期待なのですが。

    100 write16 PM3, PM3_S
    101 write16 PIBC3, PIBC3_S
    102
    103 /* Port4 Control register Reset */
    104 write16 PIBC4, PIBC4_D
    105 write16 PBDC4, PBDC4_D
    106 write16 PM4, PM4_D
    107 write16 PMC4, PMC4_D
    108 write16 PIPC4, PIPC4_D
    109
    110 /* Port4 Control register Set */
    111 write16 PBDC4, PBDC4_S
    112 write16 PFC4, PFC4_S
    113 write16 PFCE4, PFCE4_S
    114 write16 PFCAE4, PFCAE4_S
    115 write16 PIPC4, PIPC4_S
    116 write16 PMC4, PMC4_S
    117 write16 P4, P4_S
    118 write16 PM4, PM4_S
    119 write16 PIBC4, PIBC4_S
    120
    121 /* Port5 Control register Reset */
    122 write16 PIBC5, PIBC5_D
    123 write16 PBDC5, PBDC5_D

    (途中、略)

    190 write16 PM8, PM8_S
    191 write16 PIBC8, PIBC8_S
    192
    193 /* Port9 Control register Reset */
    194 write16 PIBC9, PIBC9_D
    195 write16 PBDC9, PBDC9_D
    196 write16 PM9, PM9_D
    197 write16 PMC9, PMC9_D
    198 write16 PIPC9, PIPC9_D
    199
    200 /* Port9 Control register Set */
    201 write16 PBDC9, PBDC9_S
    202 write16 PFC9, PFC9_S
    203 write16 PFCE9, PFCE9_S
    204 write16 PFCAE9, PFCAE9_S
    205 write16 PIPC9, PIPC9_S
    206 write16 PMC9, PMC9_S
    207 write16 P9, P9_S
    208 write16 PM9, PM9_S
    209 write16 PIBC9, PIBC9_S
    210
    211 /* Port10 Control register Reset */
    212 write16 PIBC10, PIBC10_D
    213 write16 PBDC10, PBDC10_D

  • Hiroです。
    >> ブートのポート設定時にP4_10とP4_11を出力ポートの設定に変更してみました。
    >は、include/configs/rskrza1.h の中で定義している値を変更したのだと思います。
    PM4_S:0xffff→0xf3ff としました。

    ご指示の通り、Port4の設定をPort9の設定の後に移動させたところ、期待されたとおりにLEDは点灯しませんでした。が、PC画面上には何も表示されません。
    この後の対応をお聞かせください。

    以上
  • Hiroさん

    > ご指示の通り、Port4の設定をPort9の設定の後に移動させたところ、
    > 期待されたとおりにLEDは点灯しませんでした。が、PC画面上には何も
    > 表示されません。

    PC画面上に何も表示されない(言い換えれば、ポート4の設定箇所の前で
    暴走するので、ポート4の設定箇所以降は、実行されない)ことを含めて、
    期待通りです。

    Hiro さんに幾つかの実験をお願いし、結果を戴きましたが、現時点では、
    未だ、辻褄が合わない結果があります。予め、ご承知ください。

    ----
    今回の問題は、u-boot の不具合で、
    u-boot がシリアルフラッシュから命令などを読み出しながら実行している
    最中に、シリアルフラッシュとの接続に使用している端子(ポート9の端子)
    の設定を変更(初期化)しているために、命令などが正しく読み出せず、
    誤動作を起こしていると考えています。
    つまり、先のメールの青色部分に問題があります。

    ただ、私の所で不再現であったり、Hiroさんの所で NOR フラッシュの
    u-boot を一回実行すると不再現になったりするように、暴走するか否かは、
    ボードの個体差やその時の状態にも依存するようです。

    で、対策ですが、最小限の変更で済ませるには、青色部分の処理を、
    ・ ブートモード0で起動した場合には、現状と同じ処理を、
    ・ ブートモード3で起動した場合には、次の4本の兼用端子の設定は
    変えずに、残りの端子は、現状と同じ処理を、
    それぞれ行うように、include/configs/rskrza1.h の中で定義している、
    ポート9関連の値を調整してください。
    ・ P9_2/SPBCLK_0
    ・ P9_3/SPBSSL_0
    ・ P9_4/SPBIO00_0
    ・ P9_5/SPBIO10_0

    注意する点は、ブートモード3で起動した場合、RZ/A1 内蔵 ROM の F/W が
    上記の4端子を設定して、シリアルフラッシュからの読み出しが可能な状態
    にし、0x18000000 番地から始まる u-boot にジャンプするわけですから、
    上で言っている「次の4本の兼用端子の設定は変えずに」の「設定」とは、
    リセット直後の設定ではなく、0x18000000 番地到達時点の設定であるという
    ことです。

    具体的には、

    355 #define PM8_S 0xffff
    356 #define PIBC8_S 0x0000
    357
    358 /* Port9 Control register Reset */
    359 #if !defined(CONFIG_BOOT_MODE0)
    360 #define PIBC9_D 0x0000
    361 #define PBDC9_D 0x0000
    362 #define PM9_D 0xff03 ★
    363 #define PMC9_D 0x003c
    364 #define PIPC9_D 0x003c
    365 #else
    366 #define PIBC9_D 0x0000
    367 #define PBDC9_D 0x0000
    368 #define PM9_D 0xffff
    369 #define PMC9_D 0x0003

    の★の所の値を 0xff03 から 0xffff に変更すれば良さそうですが、確認は
    していません。

  • Hiroです。
    ご指示の通り、
    #define PM9_D 0xff03 ⇒ 0xffff
    にしたところ、シリアルフラッシュからの起動が出来ました。
    Pecteilisさんのおっしゃる通り、NORフラッシュ起動後には起動できる理由が説明付きませんが、
    何とか動いたので、このまま進めたいと思います。
    本題とは異なりますが、本掲示の中で1点気になったことが有りますので質問させてください。

    ボードの設定についてご報告させていただいたとき、
    >また、SW1-4の設定では、カーネルが管理する時間が、計算上4%程度、遅れます。
    とのご説明が有りましたが、4%の遅れを踏襲する技は有るのでしょうか。
    設定の方法などが有りましたら、ご教示願います。

    以上
  • わわいさん。
    Hiroです。

    わわいさんのおっしゃる通り、ブートプログラムに問題が有ったようです。提供されているBSPだったことと、
    発生する場合の状況から、問題ないように思っていました。
    色々なご助言ありがとうございました。
    本件は、これで完了とします。

    以上