6 years, 1 month ago.

bootプログラムについて

GR-PEACHはブートモード3なので 起動時にFFFF_0000にあるブートプログラムにて SPIマルチIOのモード切替を実施していると データシートに記載されていました

このブートプログラムを書き換える事は可能なのでしょうか? また、現状のプログラムのソースコードは公開されているのでしょうか?

1 Answer

6 years, 1 month ago.

GR-PEACHのブート処理は、以下の流れとなります。

  1. ブートモード3により、内蔵ROM(FFFF_0000 ~)のブートプログラムが起動。SPIマルチI/O バスコントローラを外部アドレス空間に設定し、SFLASHの先頭アドレス(1800_0000)にジャンプ。
  2. SFLASHの先頭にあるSFLASHを高速設定にするコードを実行。(SFLASHにより必要な設定が異なる)
  3. Mbedボードとしてのスタートアップ処理を実行。

1は内蔵ROMに格納されたプログラムのため変更できません。
2については変更可能ですが、GR-PEACHのソースコードとしては公開されていません。こちらのバイナリデータが該当処理となっています。(以降、「SFLASH上のブート」と呼称します)
GR-PEACHのものではりませんが、RZ/A1HのSFLASH上のブート(高速設定にするコード)のサンプルはこちらから入手できます。 GR-PEACHもこのサンプルをベースにSFLASH依存部などを改造して使用しています。(ビルド結果をバイナリテーブル化して使用しています)
SFLASH依存部以外の変更として、SFLASH上のブートの領域を少なくするために以下の変更を行っています。

spibsc_init2.c

変更前:#define DEF_USER_PROGRAM_TOP  0x18080000
変更後:#define DEF_USER_PROGRAM_TOP  0x18004000

scatter.scat

変更前:LOAD_MODULE3 0x18000400 0x00003C00
変更後:LOAD_MODULE3 0x18000400 0x00002C00

変更前:LOAD_MODULE4 0x18004000 0x3C000
変更後:LOAD_MODULE4 0x18003000 0x1000

変更前:RESET_HANDLER        0x18004000    FIXED
変更後:RESET_HANDLER        0x18003000    FIXED