[11] Arduino-IDE用ブートローダROM化について

手元のATRYボードでは、0番地付近にはRAMが割りついています。

したがって、電源を入れる際、0番地付近には何も書かれていません。このため、一度bootloaderを、E10A-USBを使用して書く必要があります。

このBootloaderを、FPGAのメモリコードとしてあらかじめ記載しておけば、E10A-USBを使う必要は全くなくなり、Arduino-IDEのみでプログラムを書き、ダウンロードし、実行することができるはずです。
その場合、FreeRTOS部は書き込みが可能であるRAM領域にずらしてあげる必要があります。

もしBootloaderをROM化する場合、以下の手順が必要になります。

1. FreeRTOS部の配置を変更する

 Arduinoにインストールしたpackageの中に、リンカがあります。
 その設定を変更すればOKです。

 リンカの場所:<Windowsのドキュメントフォルダ>\packages\h8-family\hardware\h8\1.0.0\variants\standard\linker_scripts\h8300h.ld 

2.Bootloader部のデータを何等かの手順でROMコードとして書き込む
  Bootloader部は、先述の通りHewのプロジェクトで提供しています。
  このプロジェクト内の、bootloader.xや、それに対応するbootloader.motが、書き込む対象のデータです。


補足:
・Bootloader部のソースコードは基本的に変更する必要はありません。
 Bootloader部は、FreeRTOS部のダウンロードの際に、FreeRTOS部の先頭アドレスを把握します。
 そしてその先頭アドレスをWatchDoc Timer用ベクタアドレスに設定の後、しばらくたってからWatchDoc Timer割り込みを発生させることでFreeRTOS部に分岐します。

・Vector領域について注意があります。
 Vector領域の最初の4バイトは、Bootloader部が占有しています。
 その他のVectorについては、Bootloaderの方で先頭VectorをRAM領域に割り当てますので、FreeRTOS部が使用することができます。