ホーム フォーラム Texas Instruments マイコン MSP430 ローカル変数のメモリエラーについて

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

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

    0xFFFF
    参加者

    ローカル変数のメモリエラーについて

    デバイス型番:MSP4306626

    MSP430Fシリーズにおいて
    .bssセクションで割当可能なサイズを超えた変数をローカルで宣言するとビルドエラーにならずに実行時に無現ループに入ってしまいます。
    SRAMのサイズを超えたローカル変数宣言でもビルドエラーになるようにする設定方法があれば教えてください。

    添付ファイルのように
    char buffer[DATAMAX]
    をグローバルで宣言する分にはビルドエラーになるのですが
    main関数内で宣言するとビルドを通ってしまいます。

    エラーメッセージ
    program will not fit into available memory. run placement with alignment fails for section “.bss” size 0x2004 . Available memory ranges: lnk_msp430fg6626.cmd /test00 line 139 C/C++ Problem

    Compiler version: TI v18.12.2.LTS
    Code Composer Studio Version: 9.1.0.00010

    よろしくお願いします。

    Attachments:
    1. main.c
    #7207 返信
    クライフ
    クライフ
    従業員

    0xFFFF様

    > SRAMのサイズを超えたローカル変数宣言でもビルドエラーになるようにする設定方法があれば教えてください。

    申し訳ありませんが、CCSにはそのような機能はございません。

    ビルド時のエラーはグローバル変数であればリンクのときにメモリマッピングを行い、SRAM容量オーバーとしてエラーを表示しますが、ローカル変数ではリンク時にマッピングを行いませんので、エラー表示できません。

    このようなケースはMSP430のみならず、C言語を使うプログラミングではよくある課題ですので、ローカル変数を使用する場合は、プログラマ様で意識的にメモリ容量に気を付けて変数定義いただく必要があります。

    以上、宜しくお願いいたします。
    クライフ

    • この返信は5 年、 2 ヶ月前に クライフ クライフ さんが編集しました。
2件の投稿を表示中 - 1 - 2件目 (全2件中)