手元の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部が使用することができます。