ホーム フォーラム Texas Instruments マイコン C2000 F2837xD CPU2でのデバッグ

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

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

    ttkkttkk
    参加者

    F2837xD CPU2でのデバッグ

    デバイス型番:F2837xD

    CPU2をデバッガ上でF5,F6なりでステップ実行でデバッグしているのですが
    CPU2でグローバル変数が更新されない現象が発生しています
    例としてですが

    g_AAA++;

    の一文をExpressionsウインドウでg_AAAの値を確認しても
    更新がされない

    考えられる原因について何かわかりませんでしょうか

    #9042 返信

    ttkkttkk
    参加者

    すいません自己解決できました。
    CPU2でのグローバル変数が0x014000~配置されており
    CPU1側でMemCfgRegsのGSxMSELのMSEL_GS8、MSEL_GS9ビットをH
    にすると更新がされるようになりました。

    一点質問なのですが、
    グローバル変数、RAMに設定される変数がRAMGS8_9
    に配置している設定はどこになるのでしょうか?

    #9049 返信
    Yojiro
    Yojiro
    従業員

    ttkkttkkさん

    メモリアクセスについて解決いただけたとのこと、承知いたしました。

    TMS320F28379Dでは、リセット解除後はすべてのGSRAMは、CPU2ではRead onlyとなっております。
    必要に応じてGSxMSELレジスタにてアクセス権をCPU2へ変更頂く必要がございます。

     

    グローバル変数の配置につきましては、プロジェクトのリンカコマンドファイル(拡張子.cmd)にて定義されます。

    C言語でグローバル変数を定義していただくと、その変数はセクション”.ebss”がコンパイラにて割り当てられます。
    リンカコマンドファイルにて、このセクションを配置する先を「SECTIONS:」で定義しております。

    .pinit : > FLASHB, PAGE = 0, ALIGN(4)
    .ebss : >> RAMLS5 | RAMGS0 | RAMGS1, PAGE = 1
    .esysmem : > RAMLS5, PAGE = 1

    上記の例では、.ebssセクションを「RAMLS5」と「RAMGS0」「RAMGS1」に定義しています。

    C2000のアセンブラ・リンカはEABIとCOFFの2つのメモリモデルに対応しております。
    この2つのメモリモデルでは、出力されるセクション名が異なるため、リンカコマンドファイルでは、”#if defined(__TI_EABI__)”によりそれぞれのモデルに対応させています。
    しかし、現在のコンパイラはCOFFモデルにのみ対応となっておりますので、
    #if defined(__TI_EABI__)…#else
    の#else側をご確認いただければと存じます。

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

     

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