(toppers-users 4787) Re: 【質問】rosdataセクションの配置について

毛利 慶伍 mouri @ witz-inc.co.jp
2018年 11月 28日 (水) 16:57:24 JST


株式会社ヴィッツ 毛利です。

arch内に用意されているldファイルはSC1/SC2にて使用されます。
今回のSC3/SC4では、メモリ保護にてセクションのソートが必要のため
ldscript.tfにてcfg2_out.ldとldscript.ldが順番に生成され使用されるはずです。

ldscript.tfを確認していましたが一つ気になる点があります。

arch/v850_ghs/ldscript.tf
118行目より参照
---------------------------------
$           // small data section の先頭に.rosdataセクションを配置するための
$           // ダミーセクション配置
             $IF (MO.SEFLAG[moid] & 0x400) != 0$
$                $TAB$.rosdata : {$NL$
                 $TAB$.rosdata : {$NL$
                 $TAB$} > $REG.REGNAME[STANDARD_RAM]$$NL$
                 $NL$$NL$
             $END$
---------------------------------

STANDARD_RAMにはINTRAMが入っているため、
この時点でrosdataはINTRAMに問答無用で配置するようになっています。
また、生成されたldscript.ldを確認しましたが、
sdataセクションにすべてのrosdataが配置されていました。

ldscript.ld 生成例
---------------------------------
     .sdata_shared_0_ffffffff_XX ALIGN(32) : {
         ___start_sram_shared_0_ffffffff_XX = .;
         ___start_sdata_shared_0_ffffffff_XX = .;
         ___start_sdata_shared__0_ffffffff_XX = .;
         A.o(.rosdata) A.o("*.rosdata") A.o("*.rosdata.*") *(.rosdata) 
*("*.rosdata") *("*.rosdata.*")  *(.rosdata_shared)
         ___end_sdata_shared__0_ffffffff_XX = .;
         ___end_sdata_shared_0_ffffffff_XX = .;
     } > INTRAM
---------------------------------

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

On 2018/11/28 15:15, morita @ adac.co.jp wrote:
>> 株式会社ヴィッツの毛利と申します。
>>
>> 現在、GHSの統合開発環境であるMULTIにて、
>> OSにTOPPERS/ATK2-SC4を使用しております。
>> その上で、MULTIの機能の一つであるSDA機能を使用し、
>> OS含むプロジェクト全体をスモールデータエリアとして適用しております。
>>
>> MULTIはビルド時に何らかの法則に従って定数値を
>> rodataセクションかrosdataセクションに配属させているようですが、
>> その際にATK2では以下のようにセクションを移動させておりました。
>>  ・rodata(ROM) → text(ROM)
>>  ・rosdata(ROM) → sdata(RAM)
>>
>> rodataセクションとtextセクションは共にROM配置のため問題ありませんが、
>> 本来ROM配置のrosdataセクションをRAM配置のsdataセクションに移動させてい
> るのは何故でしょうか?
>> ROMに配置するべき定数値をRAMに配置するというのはよろしくないと思われる
> のですが、
>> 本対応に関する意図等をご存知の方がおりましたらお教えください。
>>
> 直接の関係者ではありませんが、参考に返信しまう。
>
>
> RH850F1H(ルネサスエレクトロニクス)簡易パッケージ の GHS版にある
>
> arch/v850_ghs/rh850_f1h_6m.ld (リンクマップファイル)を見てみると
> .rosdata はちゃんとROMに配置されていますので
> そちらでそのように変更されたのではないでしょうか?
>
>
>
> /*
>   *  RH850/F1L-2Mリンカスクリプト
>   */
>
> MEMORY
> {
>      INTROM(raxi) : org = 0x00000000, len = 4M
>      INTROMPE2    : org = 0x00800000, len = 2M
>      INTRAM(wax)  : org = 0xfef00000, len = 128k
>      LRAM_PE1(wax) : org = 0xFEBD0000, len = 192k
>      LRAM_PE2(wax) : org = 0xFE9D0000, len = 192k
> }
>
>
>      . = ALIGN(4);
>      .rosdata : { *(.rosdata) } > INTROM
>
>      . = ALIGN(4);
>      .rodata : { *(.rodata) } > INTROM
>
>
>
>
>
> ========================================
> 森田 浩 <morita @ adac.co.jp>
> Advanced Data Controls, Corp.
> Tel: +81 3-3576-5351
> ========================================
>

-- 
  -----------------------------------------
  株式会社ヴィッツ
  組込みシステム開発部
  セキュアシステムPF開発室
   毛利 慶伍 (Mouri Keigo)
   Mail:mouri @ witz-inc.co.jp
   TEL:052-220-1525
  -----------------------------------------

-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://www.toppers.jp/pipermail/users/attachments/20181128/2164dde2/attachment.html>