「オプション設定メモリ」のような固定アドレスにデータを配置する方法は?

こんにちは、hitoです。

GCCに不慣れで、具体的な記述方法が分からず、困っております。

どなたかお教え頂けると助かります。

 

Synergy MCUのOSISレジスタのような「オプション設定メモリ」に値を設定

するには、どのように記述すればよいでしょうか?

初歩的な事項で申し訳ありませんが、よろしくお願いします。

  • hito さん
    ほや です。こんにちは。

    リンカスクリプトでセクションに固定アドレスを指定したり(セクション名の後にアドレスを書く)、
    アセンブラで .ORGの後に .EQU を宣言したり、
    それと同じ事をインラインアセンブラで
    asm(".equ 変数名, アドレス") などと書いてみたり(変数は固定値で初期化)、
    もっと他にも方法は色々あると思います。

    お好きなものを選んでお試しください。

  • ほやさん。
    hitoです。

    さっそくコメント頂きありがとうございます。
    試してみます。
  • わわいです
    固定アドレス値をポインタにキャストすれば、それでアクセスできます

    #define ((int*)0xff000000) FIXVAR
    としておけば、
    *FIXVAR = 0;
    で、0xff000000のアドレスにintサイズで0が書き込まれます
  • わわいさん
    hitoです。

    ポインタを使ったアクセス方法のご連絡、ありがとうございます。
    今回は、プログラムが動き出す前に、「オプション設定メモリ」に
    反映したかったため、馴染まないようです。
  • hitouさん、こんにちは。NoMaYです。お久しぶりです。(以前はEWSYNに関してリプライした時ですね。)

    フラッシュメモリ上に配置されるコンフィギュレーションデータのことですよね? RXマイコンにも同様なメモリ(OFSxx)があり、別スレッドのGNURXでのソースも参考になると思います。(ただ、Renesas Synergyのサンプルプログラムに記述例が全く無い、という事態は少し考え難いので、RXマイコンからの類推でうまく行かなかったら、サンプルプログラムを探し直してみるのも良いかと思います。)

    S5D9マイクロコントローラ ユーザーズマニュアル (参考資料)
    Renesas Synergy™プラットフォーム Synergyマイクロコントローラ S5シリーズ
    www.renesas.com/jp/ja/doc/products/renesas-synergy/doc/r01um0004ju0100-synergy-s5d9.pdf
    147頁

    RXマイコンでのリンカスクリプト例
    github.com/renesas-rx/amazon-freertos/blob/v0.1.2/demos/renesas/rx65n-envision-kit/gnurx-e2studio/src/linker_script.ld

    RXマイコンでのCソース例
    github.com/renesas-rx/amazon-freertos/blob/v0.1.2/lib/third_party/mcu_vendor/renesas/FIT/RDP_v1.15_modified/gnurx/generic_rx65n/r_bsp/board/generic_rx65n/vecttbl.c

    なお、RXマイコンでは0番地側にRAMがあり、0xFFFFFFFF番地側にROMがありますので、Renesas SynergyとはROM/RAMの配置が逆になっているのですが、上に書いたOFSxxなどもOSISのような0番地側(16M番地を0番地側と言うかは突っ込み無しとして)ではなく、0xFFFFFFFF番地側に寄った配置になってます。(4G-16M辺りを... 以下同様です...)) (追記: すみません。Renesas SynergyではRAMは512M辺りですね。失礼しました。)

    [関連リンク]

    Renesas Synergy™ 日本語/英語 主要ドキュメント・ソフトウェア 入手一覧
    www.renesas.com/jp/ja/products/synergy/documents-software-jp.html
     

  • NoMaYさん。

    ご連絡ありがとうございました。
    頂いた情報を調べてみたのですが、良く分かりませんでした。(力不足)

    そこでルネサス様にも聞いてみました。
    下記が回答でした。
    (マニュアルをしっかり読み込めば分かったのかもしれませんが・・)
    ========
    オプション設定メモリの値は、コンフィギュレーションのBSPタブのプロパティにおいて以下のように設定可能です。

    OFS0 OFS0 register settings Select fields below以下の項目
    OFS1 OFS1 register settings Select fields below以下の項目
    SECMPU MPU - で始まる項目
    OSIS ID Code Mode、および、
    ID Code (32 Hex Characters)

    AWS、および、AWSCについては、Flash HAL Driver で設定します。

    オプション設定メモリの値は上記のようにコンフィギュレーションで設定可能ですので、下記の
    注. プログラムの書式はコンパイラによって異なります。詳細は、コンパイラのマニュアルを参照してください。
    は、実際にはお客様では特に考慮する必要はございません。
    ========

    コメントを頂いたみなさま、ありがとうございました。