RA4M2に対応した弊社オリジナルブートローダです。
マイコンに備わったUSBを経由してホストからマイコンボードのフラッシュROMへユーザプログラムを転送及び書き込んだり、書き込まれたユーザプログラムを実行するといった機能を持ちます。
e2studioにてコンパイルでき、ユーザ自身による改造も可能です。
ファイルの送受信にはXMODMプロトコルを使用しますが、全てのXMODEMに対応したターミナルクライアントでの動作を保証するものではありません。
renesas electronics社提供のe2studio[4]最新版にインポートしてビルドします。
デバッガを持っていない場合はRenesas Flash Programmer[5]でコンパイル済み.srecファイルを書き込みます
本ブートローダはフラッシュROM上で動作するプログラムであり、一般のプログラムと何ら相違はありません。そのため、ブートローダ自身のサイズが大きいと、ユーザが使用できる領域が圧迫されてしまいます。
現在リリースしているバージョンでは占有フラッシュROM領域が64kbyte以下である前提とします。
ユーザが使用できるフラッシュROMの領域は、ブートローダの後ろ0x00010000からフラッシュROMの最終アドレスまでとなります。
ブートローダから実行を遷移させる事ができるユーザプログラムは、以下の条件を満たしていなければなりません。
e2studioを使用している場合は、リンカスクリプトファイルにてFLASHとして予約しているアドレスを修正すれば大抵のプログラムは動作するはずですが、それでも動作しない場合は広範な修正が必要になる場合もあります。
USBを仮想シリアルポートとして認識させるためのドライバは、USBケーブルでマイコンボードとPCを接続するとデバイスドライバを要求されますが、自動検索させる事で自動的にインストールが行われます。
インストール後、新しいCOMポートがWindowsのデバイスとして追加され、SIMPLE TERM[13]から該当するCOMポートを選択(COMポート番号はPCの環境によって変わるが、デバイス名に「STMicroelectronics Virtual COM Port (COMxxx)」が表示されたポートを選択)しオープンするとブートローダの各種コマンドが使用可能となります。
ユーザプログラムへ実行が遷移するか、ブートローダがコマンドモードになるかの2つの状態に動作が分岐します。
ユーザプログラムへ実行が遷移する前にユーザ自らの操作でコマンドモードに遷移させる場合は、ハードリセット(リセットボタンの押下)を行います。ユーザプログラムが書き込まれていなければ、常にコマンドモードとなります。
また、ハードリセット以外の条件(WDTやソフトリセット等)でリセットされた場合は、再度ユーザプログラムへ実行が遷移します。
SIMPLE TERM[13]からのキー入力にて各種機能を実行します。
コマンドのリストを表示します。
2023/05/04 00:00:00>? RA4M2 USB BL0.7 [w]write [r]read [e]erase [d]dump [g]go [s]set date&time 2022/05/04 00:00:00>
ホストからフラッシュROMへファイルを転送及び書き込みを行います。
2023/05/04 00:00:02>w(y/n)
ここでyを入力すると転送を待ち受ける状態となりますので、STERMから任意のファイルを選択しXMODEMプロトコルで転送を開始させます。
成功すれば<OK>、失敗すると<NG>と表示されます。
2023/05/04 00:00:02>w(y/n)y OK 2023/05/04 00:00:10>
本コマンドはユーザプログラムの実行は行わず、処理が完了するとコマンドモードに戻ります。
なお、既にユーザプログラムが書き込まれていると書き込みに失敗しますので、書き込む前には消去コマンドでユーザプログラム領域を消去する必要があります。
フラッシュROMに書き込まれたユーザプログラムを実行します。
2023/05/04 00:00:15>g
ユーザプログラムが書き込まれていなければ、
2023/05/04 00:00:15>g NG 2023/05/04 00:00:15>
というメッセージを表示してコマンドモードに戻ります。
メモリを16進数でダンプ表示します。スタートアドレスを入力せずにエンターキーのみを押すと、ブートローダ内で想定しているユーザープログラムが保存されているアドレスの先頭を指定したと見なします。
2023/05/04 00:00:20>d START ADDRESS:$00010000 00010000:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00010010:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00010020:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00010030:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00010040:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00010050:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00010060:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00010070:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00010080:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00010090:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 000100A0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 000100B0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 000100C0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 000100D0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 000100E0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 000100F0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ ---([u]up [d]down [ESC]exit)---
フラッシュROMのユーザプログラム領域を消去します。
2023/05/04 00:00:30>e(y/n)
ここでyを入力すると消去を開始します。
2023/05/04 00:00:30>e(y/n)y OK 2023/05/04 00:00:31>
(This host) = http://www.besttechnology.co.jp