USBホストフラッシュブートローダーについて

はじめまして。よし と申します。

過去の投稿内容やメーカーからご提示されている資料を拝読するものの、どうしても分からないことがありご教示をお願い致します。

現在、RX621でUSBホストフラッシュブートローダーを作ろうとしています。

試しに、アプリケーションノート(R01AN0892JJ0100)とサンプルプログラムを入手しまして、

boot側をサブプロジェクト、download側をメインプロジェクトとして環境を用意しました。

ハードは自作の基板になります。

そこで、いくつか御質問が御座います。

1.boot側の動作としては、起動後、R_Fl_Mode_Entry();へ遷移する事は確認できました。

  当該関数内の以下の処理で、指定アドレスが格納されずif文内へ入ってこず、設定の問題なのかサンプルコードのミスなのか、

  判断が出来ずに迷っております、、、

 

  /* ==== Set target reset vector ==== */
  trgt_vctr_tmp = (uint32_t *)FL_TARGET_REST_VECT_ADDR;

  if(*trgt_vctr_tmp != 0xFFFFFFFFu){
   /* ==== Call user function ==== */
   trgt_fnc = (void (*)())(*trgt_vctr_tmp);
   trgt_fnc();
  }
  else{
   while(1);
  }

  0xFFFFFFFFが格納されており、必ずelseに来てしまいます。

   メモリViewで確認するに、以下となっていました。

  trgt_vctr_tmp = 0xFFFE3FFC

  *trgt_vctr_tmp = 0xFFFFFFFF

 

2.上述の1の状態から、trgt_vctr_tmp = 0xFFFE3FFCとなるように設定をして、

  trgt_fnc()の遷移先を0xFFFE3FFC番地にした際、予期しないアドレスへ遷移してしまいます。

  当方が期待する遷移先は、download側のPowerON_Resetなのですが、TrgtPrgDmmy.cに記載されているTrgtPrgDmmy_mainがコメントアウトされているので、

  ユーザー側で処理を追記する必要があるものなのか、あるいは、download側とのリンクが上手く設定できておらず遷移できていないのか、

  お恥ずかしながらサンプルプログラムにどの様な追加設定・処理をすべきか分からない状態にあります、、、

  関係しそうなノートとして、ブート領域、フラッシュ領域の分割方法(R20UT4547JJ0100)は拝読しております。

 

開発環境は以下になります。

統合開発環境:CS+ for CC V7.00.00 [13 Jun 2018]

CPU:R5F56216B(176pin)

ハード:自作基板

お知恵を貸して頂ける方、どうぞ宜しくお願い致します。

Parents
  • よし さん、こんにちは。NoMaYです。

    >また、E1では、download側の「デバッグツール」->「ダウンロード・ファイル設定」の「ダウンロードするファイル」項目にdownload.abs(download側のモジュールファイル)とNonOS_MscFw.abs(boot側のモジュールファイル)を追加しています。
    >試しに、download側(メインプロジェクト)のダウンロードファイルを1つだけに戻して、サブプロジェクトであるboot側に両方のダウンロードファイルの設定をしてみましたが、起動後にリセットベクタに来ず、CS+が実行状態のまま操作できなくなってしまいました。

    そうなりますと、アクティブプロジェクトはdownload側(メインプロジェクト)になっていて、そのアクティブプロジェクトでdownload.abs(download側のモジュールファイル)とNonOS_MscFw.abs(boot側のモジュールファイル)をダウンロードするようになっていて、問題無さそうですね。

    では、次は、download.absとNonOS_MscFw.absのMAPファイルをzipファイルに固めたものを添付してリプライして頂けないでしょうか?

    また、それで私の方で分からなければ、その次はdownload.absとNonOS_MscFw.absそのものをzipファイルに固めたものを添付してリプライして頂くことをお願いすることになるかと思います。それをシミュレータにダウンロードして、どうダウンロードされるのか調べてみようと思います。

    ここまで頂いたリプライで、以下の(A)はOKそうですので、(B)の原因を探ることになります。

    (A) download.absの0xFFFE3FFC番地には0xFFF80000が格納されている
    (B) でもCS+&E1でdownload.abs+NonOS_MscFw.absをダウンロードした時にRX621の0xFFFE3FFC番地が0xFFFFFFFFFになっている

Reply
  • よし さん、こんにちは。NoMaYです。

    >また、E1では、download側の「デバッグツール」->「ダウンロード・ファイル設定」の「ダウンロードするファイル」項目にdownload.abs(download側のモジュールファイル)とNonOS_MscFw.abs(boot側のモジュールファイル)を追加しています。
    >試しに、download側(メインプロジェクト)のダウンロードファイルを1つだけに戻して、サブプロジェクトであるboot側に両方のダウンロードファイルの設定をしてみましたが、起動後にリセットベクタに来ず、CS+が実行状態のまま操作できなくなってしまいました。

    そうなりますと、アクティブプロジェクトはdownload側(メインプロジェクト)になっていて、そのアクティブプロジェクトでdownload.abs(download側のモジュールファイル)とNonOS_MscFw.abs(boot側のモジュールファイル)をダウンロードするようになっていて、問題無さそうですね。

    では、次は、download.absとNonOS_MscFw.absのMAPファイルをzipファイルに固めたものを添付してリプライして頂けないでしょうか?

    また、それで私の方で分からなければ、その次はdownload.absとNonOS_MscFw.absそのものをzipファイルに固めたものを添付してリプライして頂くことをお願いすることになるかと思います。それをシミュレータにダウンロードして、どうダウンロードされるのか調べてみようと思います。

    ここまで頂いたリプライで、以下の(A)はOKそうですので、(B)の原因を探ることになります。

    (A) download.absの0xFFFE3FFC番地には0xFFF80000が格納されている
    (B) でもCS+&E1でdownload.abs+NonOS_MscFw.absをダウンロードした時にRX621の0xFFFE3FFC番地が0xFFFFFFFFFになっている

Children