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

morita @ adac.co.jp morita @ adac.co.jp
2018年 11月 28日 (水) 15:15:55 JST


> 株式会社ヴィッツの毛利と申します。
> 
> 現在、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
========================================