フォーラムへの返信
-
投稿者投稿
-
ご回答ありがとうございます。
記載頂いているようにアプリケーションを一時停止してアップデートを想定しております。
サンプルのご紹介ありがとうございます。
こちらのサンプルについてご質問がございます。
サンプルのリンカーコマンドファイルはRAMブートとなっておりますが、最終的にはFLASHブートとし、サンプルのコードをRAMにmemcpy()するという理解でよろしいでしょうか?具体的に行いたいことは、リモートでのアップデートになります。
ですので、全てのプログラムとデータをRAMに展開しなくても良いのかとも思っております。
アップデートに必要な関数のみをRAMに展開し、FLASHを書き換えリブートするという手順を想定しております。
RAMへの展開ですが、リンカーコマンドファイルで必要サイズのRAMを確保し、jaja230aを参考にramfuncs…を記載し、コピーしたい関数をCODE_SECTION()にて指定し、初期化時にmemcpy()するということであっていますでしょうか?
また、FLASHを書き換えリブートするという手順については現在検討中になります。ご回答ありがとうございます。
なんとなくのイメージは出来ているのですが、具体的なところがまだ理解できておりません。
参考資料では特定の関数をRAMに展開する例となっておりまが、すべてのプログラムとデータとなるとどのような設定になるのかが理解できておりません。
まずリンカーコマンドファイルについてですが添付(28374S_FLASH_CLA_lnk.cmd)のような設定にし、F2837xS_SysCtrl.cのInitSysCtrl()を初期化時に呼び出すということで良いのでしょうか?Attachments:
ご回答ありがとうございます。
余り価格差はございませんが、F28374Sで開発は進めたいと考えております。
ApplicationをFlashからRAMにコピーさせ動作させる必要があるという認識ですが、具体的にどのような作業が必要になりますでしょうか?ありがとうございます。
確認いたします。追加情報です。
Uniflashで双方のプログラムをWriteしVerifyいたしました。
(VerifyはWrite後電源OFFしデバッガを外して、電源ONし一度動作確認。その後、電源OFFしデバッガを接続して、電源ON後にVerify)
OKプロジェクト Write:OK 動作確認:OK Verify:OK
NGプロジェクト Write:OK 動作確認:NG Verify:NG
Verifyが通らないということはFlashに書き込めてないということになるのでしょうか?ありがとうございます。
プロジェクトについてはエンドユーザー様の物になるので、添付は難しいです。
プロジェクトの差分についてです。
NGプロジェクトは元々LAUNCHXL-F28379D用に作られたプロジェクトをTMS320F28374Sに変更しております。
OKプロジェクトはNGプロジェクトから最低限評価のために機能(コード)を削減したプロジェクトになります。ご回答ありがとうございます。
mainの先頭に
WdRegs.SCSR.bit.WDOVERRIDE = 1;
WdRegs.WDCR.bit.WDDIS = 1;
を記載し、その後ろにGPIO初期化+whileでGPIOのトグルを入れて確認しましたが、
Flashからのブートは出来ていなさそうで、XRSのアサート現象変らずでした。また、別プロジェクトで同様に試したところ無事Flashからの起動が確認できました。
OKのプロジェクトではWatchdogのOFF(上記述の2行)を入れなくてもずっとIOがトグルしておりました。
となると、ダメな方のプロジェクトはmain()に来る前にWatchdogが動いている?
もしくはWatchdogとは違う要因?
でもデバッガ接続では動作する。度々申し訳ございませんが、ご見解頂けるとさいわいです。
何度もご回答いただきありがとうございます。
GetModeにして書き込むと、XRSが15msごとにアサートされるようになりました。
XRSには外部で2.2kΩで3.3Vにプルアップし、0.1uFのコンデンサを付けています。
OSCは10MHzです。
Watchdog Resetが動作しているような感じで、このResetのせいで再bootが何度も繰り返されているという理解でよろしいのでしょうか?返信ありがとうございます。
基板側の設定getmodeにする件承知いたしました。
ソフト側ですが、具体的にccsの設定はどのようにすればよいのでしょうか?
色々と設定により分岐があるようですが、行いたいことはシンプルでXDS110から内部FLASHに書き込み、FLASHからブートです。同一カテゴリなので追加でご質問がございます。
デバッガを接続しての動作は現状安定して動作しているのですが、デバッガを外しての評価がうまくできません。
(かなり初歩的なことだとおもいますが。。。)
おそらく内部Flashに書き込めてないという状況です。
手順としては、ccsのRun → Loadから.outを書き込んでおります。
uniflashからも試しましたが、エラーなく書込み処理は終ってそうなのですが、電源OFF/ONしてverifyするとエラーになります。
なにか設定等が足りていないのかなと思ってます。
ご教授の程宜しくお願いいたします。ご回答ありがとうございます。
USBケーブルの交換は効果なしでした。
色々と調査すると下記現象が掴めてきました。
各JTAG端子をオシロでプローブしてみると、TRSTをプローブした際はエラーがなく終了しました。
ノイズやデバッガのドライブ能力による影響かと推測し、TRSTの2.2kΩプルダウンを4.7kΩに変更するとエラーが出なくなりました。
ひとまずこれで現状は回避できていそうです。
ちなみにJTAGの周波数を変更することは可能でしょうか?
ノイズによる影響であればその辺りの変更も効いてくるかと思ってます。ご要望の画面添付いたします。
Attachments:
ご回答ありがとうございます。
もし推奨外部負荷容量12pF~24pF以外の物を選定した場合どのような影響がございますでしょうか?
-
投稿者投稿