1: 2022-12-19 (月) 16:41:48 takaboo | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | TITLE:RA4M2 Bootloader | ||
+ | #norelated | ||
+ | #contents | ||
+ | **はじめに [#h3cf836e] | ||
+ | RA4M2に対応した弊社オリジナルブートローダです。~ | ||
+ | マイコンに備わったUSBを経由してホストからマイコンボードのフラッシュROMへユーザプログラムを転送及び書き込んだり、書き込まれたユーザプログラムを実行するといった機能を持ちます。~ | ||
+ | e2studioにてコンパイルでき、ユーザ自身による改造も可能です。~ | ||
+ | ファイルの送受信にはXMODMプロトコルを使用しますが、全てのXMODEMに対応したターミナルクライアントでの動作を保証するものではありません。 | ||
+ | **基本仕様 [#r62ea0f7] | ||
+ | ***コンパイル方法 [#kdc2554b] | ||
+ | renesas electronics社提供の[[e2studio>https://github.com/renesas/fsp/releases]]最新版にインポートしてビルドします。 | ||
+ | |||
+ | デバッガを持っていない場合は[[Renesas Flash Programmer>https://www.renesas.com/jp/ja/software-tool/renesas-flash-programmer-programming-gui]]でコンパイル済み.srecファイルを書き込みます | ||
+ | #ref(rfp.png,100%) | ||
+ | |||
+ | ***ソース及びコンパイル済みバイナリのダウンロード [#DOWNLOAD] | ||
+ | #ref(https://www.besttechnology.co.jp/download/ra4m2_usb_bootloader_20221220.7z) | ||
+ | バージョン: 0.6~ | ||
+ | 公開日: 2022/12/20 | ||
+ | 更新内容:ベータ版 | ||
+ | |||
+ | ***メモリマップ [#fd1295e9] | ||
+ | 本ブートローダはフラッシュROM上で動作するプログラムであり、一般のプログラムと何ら相違はありません。そのため、ブートローダ自身のサイズが大きいと、ユーザが使用できる領域が圧迫されてしまいます。~ | ||
+ | 現在リリースしているバージョンでは占有フラッシュROM領域が64kbyte以下である前提とします。 | ||
+ | #ref(bl_memmap.png,100%) | ||
+ | ユーザが使用できるフラッシュROMの領域は、ブートローダの後ろ0x00010000からフラッシュROMの最終アドレスまでとなります。 | ||
+ | |||
+ | ***ユーザプログラム [#a1597f0a] | ||
+ | ブートローダから実行を遷移させる事ができるユーザプログラムは、以下の条件を満たしていなければなりません。 | ||
+ | -先頭アドレスが0x00010000にオフセットしており、ベクタテーブルがその先頭アドレスより配置されている | ||
+ | -0x00000000~0x0000FFFFのフラッシュROM領域に対して書き込み操作を行わない | ||
+ | |||
+ | e2studioを使用している場合は、リンカスクリプトファイルにてFLASHとして予約しているアドレスを修正すれば大抵のプログラムは動作するはずですが、それでも動作しない場合は広範な修正が必要になる場合もあります。 | ||
+ | |||
+ | **使用方法 [#d84bf868] | ||
+ | |||
+ | ***デバイスドライバ [#c1a78e7c] | ||
+ | USBを仮想シリアルポートとして認識させるためのドライバは、USBケーブルでマイコンボードとPCを接続するとデバイスドライバを要求されますが、自動検索させる事で自動的にインストールが行われます。~ | ||
+ | インストール後、新しいCOMポートがWindowsのデバイスとして追加され、[[SIMPLE TERM>GDL#STERM]]から該当するCOMポートを選択(COMポート番号はPCの環境によって変わるが、デバイス名に「STMicroelectronics Virtual COM Port (COMxxx)」が表示されたポートを選択)しオープンするとブートローダの各種コマンドが使用可能となります。 | ||
+ | |||
+ | ***ブートローダの動作フロー [#BOOTFLOW] | ||
+ | #ref(SAM7BL_BOOT_FLOW.png,100%) | ||
+ | ユーザプログラムへ実行が遷移するか、ブートローダがコマンドモードになるかの2つの状態に動作が分岐します。~ | ||
+ | ユーザプログラムへ実行が遷移する前にユーザ自らの操作でコマンドモードに遷移させる場合は、ハードリセット(リセットボタンの押下)を行います。ユーザプログラムが書き込まれていなければ、常にコマンドモードとなります。~ | ||
+ | また、ハードリセット以外の条件(WDTやソフトリセット等)でリセットされた場合は、再度ユーザプログラムへ実行が遷移します。 | ||
+ | ***コマンド [#sb3ccc22] | ||
+ | [[SIMPLE TERM>GDL#STERM]]からのキー入力にて各種機能を実行します。 | ||
+ | |||
+ | ****ヘルプ '?' [#k1c5df53] | ||
+ | コマンドのリストを表示します。 | ||
+ | 2022/01/01 00:00:00>? | ||
+ | RA4M2 USB BL0.5 | ||
+ | w:write r:read e:erase d:dump g:go | ||
+ | 2022/01/01 00:00:00> | ||
+ | |||
+ | ****書き込み 'w' [#ddb17d72] | ||
+ | ホストからフラッシュROMへファイルを転送及び書き込みを行います。 | ||
+ | 2022/01/01 00:00:01>w(y/n) | ||
+ | ここでyを入力すると転送を待ち受ける状態となりますので、STERMから任意のファイルを選択しXMODEMプロトコルで転送を開始させます。~ | ||
+ | 成功すれば<OK>、失敗すると<NG>と表示されます。 | ||
+ | 2022/01/01 00:00:01>w(y/n)y | ||
+ | OK | ||
+ | 2022/01/01 00:00:03> | ||
+ | 本コマンドはユーザプログラムの実行は行わず、処理が完了するとコマンドモードに戻ります。 | ||
+ | |||
+ | なお、既にユーザプログラムが書き込まれていると書き込みに失敗しますので、書き込む前には消去コマンドでユーザプログラム領域を消去する必要があります。 | ||
+ | |||
+ | ****実行 'g' [#u539eceb] | ||
+ | フラッシュROMに書き込まれたユーザプログラムを実行します。 | ||
+ | 2022/01/01 00:00:04>g | ||
+ | ユーザプログラムが書き込まれていなければ、 | ||
+ | 2022/01/01 00:00:04>g | ||
+ | NG | ||
+ | 2022/01/01 00:00:04> | ||
+ | というメッセージを表示してコマンドモードに戻ります。 | ||
+ | |||
+ | ****メモリダンプ 'd' [#pa71dd4c] | ||
+ | メモリを16進数でダンプ表示します。スタートアドレスを入力せずにエンターキーのみを押すと、ブートローダ内で想定しているユーザープログラムが保存されているアドレスの先頭を指定したと見なします。 | ||
+ | 2022/01/01 00:00:05>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)--- | ||
+ | |||
+ | ****消去 'e' [#a03e16d8] | ||
+ | フラッシュROMのユーザプログラム領域を消去します。 | ||
+ | 2022/01/01 00:00:06>e(y/n) | ||
+ | ここでyを入力すると消去を開始します。 | ||
+ | 2022/01/01 00:00:06>e(y/n)y | ||
+ | OK | ||
+ | 2022/01/01 00:00:08> |