e2Studio (Ver2022-10 )for  RZ/T2M のセクション 配置方法について

お世話になります。

  ルネサスさんの 最新マイコン RZ/T2M を使用・評価しています。

  開発ツール には e2Studio (Ver2022-10 )for ARM GCC RZです。

  評価ボードには AP-RX72M-0A を使用します。

  CS3 に拡張 SDRAMがあります。

  script ファイル   fsp_rom_execution.ld には 下記のように

  記載があります。

  MEMORY
{
ATCM : ORIGIN = 0x00000000, LENGTH = 0x00080000
BTCM : ORIGIN = 0x00100000, LENGTH = 0x00010000
SYSTEM_RAM : ORIGIN = 0x10000000, LENGTH = 0x00180000
SYSTEM_RAM_MIRROR : ORIGIN = 0x30000000, LENGTH = 0x00180000
xSPI0_CS0_SPACE_MIRROR : ORIGIN = 0x40000000, LENGTH = 0x00400000
CS3_SPACE_MIRROR : ORIGIN = 0x58000000, LENGTH = 0x01000000
xSPI0_CS0_SPACE : ORIGIN = 0x60000000, LENGTH = 0x00400000
CS3_SPACE : ORIGIN = 0x78000000, LENGTH = 0x01000000
}

CS3に配置している SDRAM には ソース上で 下記の [section exram] のように ある変数は このSDRAMに配置したいです。

 

#pragma section exram
//
struct ETHER_SEND_DATA
{
int savePoint;
int readPoint;
int size[ETHER_SEND_SAVE_BUFFS] ;
char data[ETHER_SEND_SAVE_BUFFS][ETHER_SEND_SAVE_BUFF_SIZE];

//
#pragma section

script ファイル には どのように追加したら、いいでしょうか?

是非 教えてください

宜しくお願いいたします。

  • RZFanさん、こんにちは。NoMaYです。#お久しぶりです。

    質問されているフォーラム、および、質問されている内容から察するところ、以下の評価ボード名は間違いですよね?

    > 評価ボードには AP-RX72M-0A を使用します。

    GCCでは以下の#pragmaは使えませんので__attribute__((section("セクション名")))で変数属性を指定するようにして下さい。(なお、一般的には、ということですけれども。)

    以下の書き方はCC-RX向けソースの場合です。

    #pragma section exram

    #pragma section

     
    GCC向けのソースでは以下のように書きます。(なお、一般的には、ということですけれども。)

    変数型 変数名 __attribute__((section("セクション名")));

     
    他方、GCCのリンカスクリプトの書き方は、CC-RX⇒GCCの置き換え案件なら、以下のスレッドは参考になりませんでしょうか?(なお、以下のスレッド自体は、GCC for Renesas RX向けのものですけれども。)

    GCCプロジェクトで変数や関数を指定のセクションに配置する方法
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/7937/gcc
     

  • NoMaYさん

     いつもお世話になります。

     ご指導、ありがとございます。

     評価ボードは AP-RZT2-0Aを使用しています。

     以前の”GCCプロジェクトで変数や関数を指定のセクションに配置する方法”のフォーラムを参考して、

     チャレンジしてみます。

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

  • Memory Region (MEMORY{ ... }) とセクションの関係についてはこのFAQも参考にすると良いです。
    FAQ - GCCプロジェクトでセクションの配置を定義する方法
    https://ja-support.renesas.com/knowledgeBase/19549765

    #pragmaはコンパイラの独自仕様を実装するための仕組みなので、
    当然ながらコンパイラが違えば#pragmaの記述方法も効果も違います。

    GCCの使い方についてはStackOverflow.comなど、他のユーザコミュニティの記事も参考にしてみてください。
    https://www.google.com/search?q=site%3Astackoverflow.com+gcc+%22linker+script%22+%22memory+region%22