ホーム フォーラム Texas Instruments マイコン MSP430 スタックサイズの設定について

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

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

    guest

    スタックサイズの設定について

    お世話になっております。

    MSP430FR5859、コンパイラーTI v15.12.3.LTSを使っています。

    同じプロジェクトをCCS6.2とCCS12で開くと、StackUsageで確認する数字が一致しない現象があります。

    CCS12:mainProcessのInclusiveSizeは120

    CCS6.2: mainProcessのInclusiveSizeは1532

    原因は何でしょうか。

    また、スタックサイズは今256の設定ですが、InclusiveSizeが256超える場合(黄色い表示)はスタックのオーバーフロー発生する可能性があるというサインでしょうか。この場合、スタックサイズをInclusiveSize以上の値に設定し直すべきでしょうか。

    ご教授宜しくお願い致します。

    #20417 返信
    umamiti
    umamiti
    従業員

    ご投稿ありがとうございます。

    MSP430FR5859、コンパイラーTI v15.12.3.LTSを使っています。

    同じプロジェクトをCCS6.2とCCS12で開くと、StackUsageで確認する数字が一致しない現象があります。

    CCS12:mainProcessのInclusiveSizeは120

    CCS6.2: mainProcessのInclusiveSizeは1532

    原因は何でしょうか。

    上記につきましては、CCS v12の内容が適切かと存じますが、念のためメーカーに確認させていただきますので、少々お時間頂けますと幸いです。

    また、スタックサイズは今256の設定ですが、InclusiveSizeが256超える場合(黄色い表示)はスタックのオーバーフロー発生する可能性があるというサインでしょうか。この場合、スタックサイズをInclusiveSize以上の値に設定し直すべきでしょうか。

    ご認識の通り、InclusiveSizeが256超える場合は、システムに合わせてスタックサイズの再設定をご検討ください。

    ExclusiveSizeは、その関数が必要とするスタック量であり、その関数が呼び出す可能性のある関数は無視されます。
    Inclusive Sizeは、その関数が必要とするスタック量に、その関数が呼び出すすべての関数が必要とするスタック量を加えたもので、再帰的に適用されます。つまり、f1がf2を呼び、f3がf4を呼び…というように、それぞれの関数が必要とするスタック量が加算され、Inclusive Sizeとなります。

    詳細につきましては、「Code Composer Studio User’s Guide – 6.8.5. Stack Usage View」を合わせてご参照ください。

    以上、よろしくお願いいたします。

    #20418 返信

    guest

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

    ご認識の通り、InclusiveSizeが256超える場合は、システムに合わせてスタックサイズの再設定をご検討ください。

    もしCCS12の内容が適切であれば、mainProcessのInclusiveSizeは120、今のスタック設定256に超えていないのに、なぜ黄色い表示でしょうか?

     

    #20421 解決済み提案を取消 | 返信
    umamiti
    umamiti
    従業員

    本件、ご返信が遅くなり大変申し訳ございません。

    MSP430FR5859、コンパイラーTI v15.12.3.LTSを使っています。

    同じプロジェクトをCCS6.2とCCS12で開くと、StackUsageで確認する数字が一致しない現象があります。

    CCS12:mainProcessのInclusiveSizeは120

    CCS6.2: mainProcessのInclusiveSizeは1532

    原因は何でしょうか。

    上記についてメーカーに確認した結果、古いCCSのバージョンでは、Stack Usageの表示にいくつかのバグがあったとのことですので、CCSv12を参照頂ければと存じます。

    もしCCS12の内容が適切であれば、mainProcessのInclusiveSizeは120、今のスタック設定256に超えていないのに、なぜ黄色い表示でしょうか?

    上記についてメーカーに確認した結果、今回の様な黄色の表示結果となる主な理由の一つは、リンカーに渡されるスタック・サイズの引数を取得するのが非常に困難だからとのことです。この数値は、リンカーに複数の方法で渡されることや、リンカーコマンドファイルの中にも含まれることから、複雑に関連しています。前述の背景から、現状では将来的にこの問題に関する修正の具体的な計画は無いとのことです。

    従いまして、色の表示は無視して頂き、InclusiveSizeの値が設定したスタックサイズに近い場合は、設定を再度見直して頂ければと存じます。

    以上、よろしくお願いいたします。

    #20422 返信

    guest

    ご回答ありがとうございました。

    上記了解いたしました。

    今後もどうぞよろしくお願いいたします。

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