ホーム フォーラム Texas Instruments マイコン C2000 F2837xD コア間でのプログラム

このトピックには9件の返信が含まれ、3人の参加者がいます。4 年、 8 ヶ月前Yojiro Yojiro さんが最後の更新を行いました。

10件の投稿を表示中 - 1 - 10件目 (全10件中)
  • 投稿者
    投稿
  • #10153 返信

    ttkkttkk
    参加者

    F2837xD コア間でのプログラム

    度々お世話になります。

    F2837xDについて質問があります。
    一度プログラム書き換えの件で質問させていただいております。
    CPU1(コア1)、CPU2(コア2)と別れておりますが
    コア間でGSRAMを使い、プログラム書き換えを行うことは可能でしょうか?

    コア2上でコア1用のプログラムをあらかじめ保存しておき、
    起動時にコア1に転送する、、等

    また、セクションを切るなどして、
    プログラム書き換え禁止領域を作ることは可能でしょうか?

    • このトピックは ttkkttkkが4 年、 8 ヶ月前に変更しました。
    #10158 返信
    Yojiro
    Yojiro
    従業員

    ttkkttkkさん

    お問い合わせいただき、ありがとうございます。

    CPU1(コア1)、CPU2(コア2)と別れておりますが
    コア間でGSRAMを使い、プログラム書き換えを行うことは可能でしょうか?

    コア2上でコア1用のプログラムをあらかじめ保存しておき、
    起動時にコア1に転送する、、等

    はい、可能です。
    書き換えデータをGSRAMにより転送するサンプルは用意されておりませんが、
    メモリ配置を工夫いただくことで、実現可能です。

    また、セクションを切るなどして、
    プログラム書き換え禁止領域を作ることは可能でしょうか?

    TMS320F2837xDには、FlashROM自体の書き込み・消去の禁止設定はありません。
    セクションごとの書き換えを抑制する機能として、DCSM機能をご利用いただくことになります。
    DCSM機能では、2つのゾーンによるセキュリティ機能が提供されており、ゾーン毎にFlashのセクタを指定できます。セキュリティを設定されたセクタに対しては、同じゾーンからの要求かセキュリティを解除しないと、Flashの書き換えはできない仕様になっています。
    セキュリティを設定していないセクタに対しては、通常通り書き換えは可能です。
    DCSM機能の設定方法につきましては、テクニカルリファレンスマニュアルのp.153 <span style=”text-decoration: underline;”>3.13 Dual Code Security Module (DCSM)</span> に記載されておりますので、ご確認ください。

    なお、セキュリティ設定後でも、CCSのFlash設定を行うことで、セキュリティを解除した状態でデバッグは可能となっております。

    ご確認のほど、よろしくお願いいたします。

    #10162 返信

    ttkkttkk
    参加者

    回答ありがとうございます。
    メモリ配置の工夫とは具体的にどのような実装になるのでしょうか?
    GSRAMの割り当てのことでしょうか?cmdファイルのメモリ配置のことでしょうか

    実際やりたい事は
    1.コア1でコア2に対しプログラムを書き換えする。
     (プログラム内容はコア1、コア2用の両方が入ったプログラム)
    2.コア1用プログラムをコア2からコピーする。
    3.コア1用、コア2用を実行する。

    度々すみませんが、ご教示お願いいたします。

    #10164 返信
    Yojiro
    Yojiro
    従業員

    ttkkttkkさん

    FlashROMの書き換えを行うためには、RAM領域にプログラムをコピーしてそのプログラムを実行する必要があります。その際に、コア間でプログラムを転送するための領域も確保するとなると、CPUのアクセス権を含めて、メモリ配置をしっかりと定義してすることが重要です。
    これを「メモリ配置の工夫」と記載しておりました。
    不明瞭な文言を使用してしまい、申し訳ありません。

    貼付いただいたファイルを確認いたしましたが、コア2(CPU2)のFlashROMに対し、コア1(CPU1)側で制御を行うと記載されていますが、本ICではCPU1からはCPU2のFlashROMへアクセス(消去・書き込み)が行えません。
    CPU1とCPU2それぞれにローダープログラムを作成・組み込んで頂く必要がありますので、ご注意いただければと思います。

     

    以上、ご確認のほど、よろしくお願いいたします。

    #10165 返信

    ttkkttkk
    参加者

    回答ありがとうございます

    CPU1はCPU1のみ、CPU2はCPU2のみしかプログラム書き換えができない
    という意味でよかったでしょうか?

    同じ質問の繰り返しになってしまうかもしれませんが
    以前教授頂いた、F2837xD_Sci_flash_kernelsのサンプルに
    DCSM機能で書込み禁止エリアを設定すれば、ローダープログラムを書き込み禁止エリアにして
    一部の機能のみプログラム入れ替えをすることは可能でしょうか?

    #10169 返信
    Yojiro
    Yojiro
    従業員

    ttkkttkkさん

    CPU1はCPU1のみ、CPU2はCPU2のみしかプログラム書き換えができない
    という意味でよかったでしょうか?

    はい、ご認識のとおりです。

    以前教授頂いた、F2837xD_Sci_flash_kernelsのサンプルに
    DCSM機能で書込み禁止エリアを設定すれば、ローダープログラムを書き込み禁止エリアにして
    一部の機能のみプログラム入れ替えをすることは可能でしょうか?

    FlashROMの書き込み・消去を行う処理は、FlashROM以外から行う必要があります。
    Flash APIライブラリのコードと、APIを呼び出す関数はRAMから実行することになります。これらの関数については、ローダープログラムとともに書き込み禁止エリアに仮置し、実行前にRAMにコピーするという制御が必要となります。
    F2837xD_Sci_flash_kernelsサンプルと同フォルダに、”flash_programming”があります。
    こちらのプロジェクトを参考に、組み込んでいただけますでしょうか。

    このサンプルプロジェクトでは、以下のことを行っています。

    • ソースコード”flash_programming.c”のExample_CallFlashAPI関数を「#pragma CODE_SECTION」でramFuncSectionセクションに割り当てます
    • ramFuncSectionは、Fapi_UserDefinedFunction.hで”.TI.ramfunc”と定義しています
    • CMDファイルにて、”.TI.ramfunc”セクションに関して
      実行アドレスをRAMLS03、配置アドレスをFLASHD
      に設定します
    • main関数から実行されるInitSysCtrl()で”.TI.ramfunc”セクションをFLASHDからRAMLS03へコピーします

    3番めのCMDファイル設定を行うことで、ビルド時に”.TI.ramfunc”セクションの実行アドレスはRAMLS03空間に配置されますが、コード自体はFLASHDに配置されます。サンプルプログラムでは、main関数でコピーしていますが、ローダープログラム実行前にコピーしていただければ、問題はありません。

    InitSysCtrl()でコピーしない場合は、セクション名を”.TI.ramfunc”から変更していただき、変更したセクション名で、CMDファイルに追記していただくことができます。

    以上、ご確認のほど、よろしくお願いいたします。

    #10177 返信

    ttkkttkk
    参加者

    ありがとうございます
    flash_programming_cpu01.cを見ました

    Fapi_issueProgrammingCommandがフラッシュへのプログラムロード部分になるのでしょうか
    プログラムの送信元はBufferになるのでしょうか

    何度もすみませんが回答をお願いします

    #10200 返信
    Ge
    Ge
    従業員

    ttkkttkkさん

    Fapi_issueProgrammingCommandがフラッシュへのプログラムロード部分になるのでしょうか
    プログラムの送信元はBufferになるのでしょうか

    ご認識のとおりとなります。
    Fapi_issueProgrammingCommand()でプログラムをロードしており、
    内蔵のFLASH(APIの第一引数)にRAM(APIの第二引数)のデータをWriteしております。

    FLASH APIの使用方法については、以下のドキュメントをご参照ください。

    TMS320F2837xD Flash API Reference Guide
    http://www.ti.com/lit/pdf/spnu629

    以上、宜しくお願い致します。

    #10256 返信

    ttkkttkk
    参加者

    すみません、
    上記のFlashのライブラリをプロジェクトに組み込む方法について
    何か資料はあるのでしょうか?

    • この返信は4 年、 8 ヶ月前に  ttkkttkk さんが編集しました。
    #10262 返信
    Yojiro
    Yojiro
    従業員

    ttkkttkkさん

    先日ご案内いたしましたドキュメントに、手順書というものではありませんが、必要なライブラリファイルやインクルードファイルなど纏められております。

    TMS320F2837xD Flash API Reference Guide
    http://www.ti.com/lit/pdf/spnu629

    ご一読いただければと思います。

    なお、本フォーラムでは、一つのトピックで一つのご質問をお願いしております。
    今回、複数のご質問を、一つのトピックにご投稿いただきましたが、今後は新たなトピックでご投稿いただくように、ご協力のほど、お願いいたします。

    以上、ご確認のほど、よろしくお願いいたします。

10件の投稿を表示中 - 1 - 10件目 (全10件中)