ホーム › フォーラム › Texas Instruments › マイコン › C2000 › LiveFirmwareUpdateについて
このトピックには29件の返信が含まれ、2人の参加者がいます。3 年、 12 ヶ月前に zen135 さんが最後の更新を行いました。
-
投稿者投稿
-
お問い合わせありがとうございます。
トピックのタイトルとご質問の内容が異なるため、以下のスレッドを新たに作成し、こちらに回答させていただきました。以下のリンクで回答をご確認いただけますでしょうか。
以上、よろしくお願いいたします。
ブートに関わるプログラムのRAM展開からのLiveFirmアップデートが一通り確認できました。
しかし、現在下記懸念点がございます。
解決方法等ございましたらご教授の程宜しくお願いいたします。
datファイルの転送中(FLASH書込み中)に断線及び電圧低下(電源オフ)がおこるとデバッガ等で正常データを上書きしないといけないかと思います。
そこで、ブート用に関わるプログラムとアップデートされるであろうプログラムの領域をFLASHのセクターで分離し、動作させることは可能でしょうか?そこで、ブート用に関わるプログラムとアップデートされるであろうプログラムの領域をFLASHのセクターで分離し、動作させることは可能でしょうか?
可能となります。ただし、サンプルプログラムなどは無いので、2つのプロジェクトが干渉しないようにユーザーにてプロジェクトを作成頂く必要がございます。
以上、よろしくお願いいたします。
ありがとうございます。
ブート用プロジェクトとアプリ用プロジェクトを作成する件承知いたしました。
干渉しないようにというのは、cmdファイルにてFLASH領域及びRAM領域が干渉しないという理解でよろしいでしょうか?
起動時はブート用プロジェクトから起動しその後アプリ用プロジェクトで動作と考えております。
その際、アプリ用プロジェクトの開始アドレスにはどのようにジャンプすればよろしいでしょうか?
また、開始アドレスはどのように指定しますでしょうか?(cmdファイル内のcodestart?)ブート用プロジェクトとアプリ用プロジェクトを作成する件承知いたしました。
干渉しないようにというのは、cmdファイルにてFLASH領域及びRAM領域が干渉しないという理解でよろしいでしょうか?ご認識のとおりとなります。ブート用プロジェクトの起動が常にリセット後のみであれば、RAM領域の干渉は気にする必要はございません。
起動時はブート用プロジェクトから起動しその後アプリ用プロジェクトで動作と考えております。
その際、アプリ用プロジェクトの開始アドレスにはどのようにジャンプすればよろしいでしょうか?((void (*)())0x0A0000)();などをコールして、開始アドレスにそのままジャンプしていただければ問題ございません。
また、開始アドレスはどのように指定しますでしょうか?(cmdファイル内のcodestart?)
アプリ用プロジェクトのcmdファイル内のBEGINのアドレスを変更いただくと開始アドレスを変更可能となります。
以上、よろしくお願いいたします。
ありがとうございます。
ブートプロジェクトのBEGINを0x080000
アプリプロジェクトのBEGINを0x088000
とした場合、ブートからアプリに移動する際は((void (*)())0x088000)(); アプリからブートに移動する際は((void (*)())0x080000)(); という認識でよろしいでしょうか?
また、起動はどちらのプロジェクトから起動しますでしょうか?ブートプロジェクトのBEGINを0x080000
アプリプロジェクトのBEGINを0x088000
とした場合、ブートからアプリに移動する際は((void (*)())0x088000)(); アプリからブートに移動する際は((void (*)())0x080000)(); という認識でよろしいでしょうか?ご認識のとおりとなります。
また、起動はどちらのプロジェクトから起動しますでしょうか?
FLASHブートの場合には、0x80000がプログラムの開始アドレスとなりますので、上記の仕様の場合ブートプロジェクトから起動することになります。
以上、よろしくお願いいたします。
ありがとうございます。
初期起動の件承知しました。
また、プロジェクトを2つに分けると.outも2つになるかと思います。
一方を書き込むと他方の領域がイレースされます。
これを回避する方法はございますでしょうか?
行いたいことは使用している領域のみイレースして書込みです。上記質問ですが、解決いたしました。
プロジェクトプロパティのDebug->FlashSettingのNecessarySectorsOnlyにチェック。スレッドが長くなりましたので、新たにスレッドを作成し、そちらに回答させていただきました。
以下のリンクをご参考いただけますでしょうか。
以上、よろしくお願いいたします。
解決されたとのことで安心いたしました。
また不明点が御座いましたらお問い合わせください。
確認になります。
今回LiveFirmwareUpdateについて色々とご質問させて頂きましたが、プロジェクトを一つで行う場合はブートに伴うプログラムはRAMに展開する必要がある。
プロジェクトをブート用とアプリ用に分けて作成し、FLASHの領域も分けて作成した場合は、アプリ用側のアップデートに限りブートに伴うプログラムをRAMに展開する必要はない。(展開せずにアップデートできていました。)
上記認識で問題ございませんでしょうか?今回LiveFirmwareUpdateについて色々とご質問させて頂きましたが、プロジェクトを一つで行う場合はブートに伴うプログラムはRAMに展開する必要がある。
プロジェクトをブート用とアプリ用に分けて作成し、FLASHの領域も分けて作成した場合は、アプリ用側のアップデートに限りブートに伴うプログラムをRAMに展開する必要はない。(展開せずにアップデートできていました。)
上記認識で問題ございませんでしょうか?このブートの伴うプログラムというのは、FLASH書き換えプログラムのことでしょうか。その場合にはRAMに展開する必要がございます。FLASHを書き換える動作をしていないプログラムについては、RAMに展開する必要はございません。
以上、よろしくお願いいたします。
ありがとうございます。
FLASHを書き換える動作をしているプログラムになります。
RAM展開の件承知いたしました。
それはデバッグモードでも同様でしょうか?
(意図としてはこちらで質問させて頂いている内容になります。https://emb.macnica.co.jp/forums/topic/13740/)ご連絡ありがとうございます。
それはデバッグモードでも同様でしょうか?
デバッグモードでも同様と考えます。
また、先程返信に少し補足をしますと、「FLASH書き換えプログラムはRAMにコピーする必要がある」と記載しましたが、FLASHを書き換えるのは、FLASH APIになりますので、こののライブラリ(F021_API_F2837xS_FPU32.lib)がRAMにコピーされていればFLASH書き換えが可能となります。
以上、よろしくお願いいたします。
-
投稿者投稿