ホーム › フォーラム › Texas Instruments › マイコン › C2000 › F2837xD コア間でのプログラム
このトピックには9件の返信が含まれ、3人の参加者がいます。4 年、 7 ヶ月前に Yojiro さんが最後の更新を行いました。
-
投稿者投稿
-
F2837xD コア間でのプログラム
度々お世話になります。
F2837xDについて質問があります。
一度プログラム書き換えの件で質問させていただいております。
CPU1(コア1)、CPU2(コア2)と別れておりますが
コア間でGSRAMを使い、プログラム書き換えを行うことは可能でしょうか?コア2上でコア1用のプログラムをあらかじめ保存しておき、
起動時にコア1に転送する、、等また、セクションを切るなどして、
プログラム書き換え禁止領域を作ることは可能でしょうか?- このトピックは ttkkttkkが4 年、 8 ヶ月前に変更しました。
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設定を行うことで、セキュリティを解除した状態でデバッグは可能となっております。
ご確認のほど、よろしくお願いいたします。
回答ありがとうございます。
メモリ配置の工夫とは具体的にどのような実装になるのでしょうか?
GSRAMの割り当てのことでしょうか?cmdファイルのメモリ配置のことでしょうか実際やりたい事は
1.コア1でコア2に対しプログラムを書き換えする。
(プログラム内容はコア1、コア2用の両方が入ったプログラム)
2.コア1用プログラムをコア2からコピーする。
3.コア1用、コア2用を実行する。度々すみませんが、ご教示お願いいたします。
Attachments:
ttkkttkkさん
FlashROMの書き換えを行うためには、RAM領域にプログラムをコピーしてそのプログラムを実行する必要があります。その際に、コア間でプログラムを転送するための領域も確保するとなると、CPUのアクセス権を含めて、メモリ配置をしっかりと定義してすることが重要です。
これを「メモリ配置の工夫」と記載しておりました。
不明瞭な文言を使用してしまい、申し訳ありません。貼付いただいたファイルを確認いたしましたが、コア2(CPU2)のFlashROMに対し、コア1(CPU1)側で制御を行うと記載されていますが、本ICではCPU1からはCPU2のFlashROMへアクセス(消去・書き込み)が行えません。
CPU1とCPU2それぞれにローダープログラムを作成・組み込んで頂く必要がありますので、ご注意いただければと思います。以上、ご確認のほど、よろしくお願いいたします。
回答ありがとうございます
CPU1はCPU1のみ、CPU2はCPU2のみしかプログラム書き換えができない
という意味でよかったでしょうか?同じ質問の繰り返しになってしまうかもしれませんが
以前教授頂いた、F2837xD_Sci_flash_kernelsのサンプルに
DCSM機能で書込み禁止エリアを設定すれば、ローダープログラムを書き込み禁止エリアにして
一部の機能のみプログラム入れ替えをすることは可能でしょうか?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ファイルに追記していただくことができます。
以上、ご確認のほど、よろしくお願いいたします。
ありがとうございます
flash_programming_cpu01.cを見ましたFapi_issueProgrammingCommandがフラッシュへのプログラムロード部分になるのでしょうか
プログラムの送信元はBufferになるのでしょうか何度もすみませんが回答をお願いします
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以上、宜しくお願い致します。
すみません、
上記のFlashのライブラリをプロジェクトに組み込む方法について
何か資料はあるのでしょうか?- この返信は4 年、 8 ヶ月前に ttkkttkk さんが編集しました。
ttkkttkkさん
先日ご案内いたしましたドキュメントに、手順書というものではありませんが、必要なライブラリファイルやインクルードファイルなど纏められております。
TMS320F2837xD Flash API Reference Guide
http://www.ti.com/lit/pdf/spnu629ご一読いただければと思います。
なお、本フォーラムでは、一つのトピックで一つのご質問をお願いしております。
今回、複数のご質問を、一つのトピックにご投稿いただきましたが、今後は新たなトピックでご投稿いただくように、ご協力のほど、お願いいたします。以上、ご確認のほど、よろしくお願いいたします。
-
投稿者投稿