ホーム フォーラム Texas Instruments マイコン C2000 再配置について

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

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

    mickey.mouse
    参加者

    再配置について

    デバイス型番:TMS320F28075

    コンパイルすると以下のエラーが出ますが、.bss セクションが大きいため16bitのアドレス範囲をまたいでいます。
    下記(f_lpf)の構造体を前側に割り当てたいのですが、どのように定義するとよいのでしょうか、
    よろしくお願いします。

    コマンドファイルの抜粋

    PAGE 1 : /* Data Memory */
    /* Memory (RAM/FLASH) blocks can be moved to PAGE0 for program allocation */

    RAMGS1 : origin = 0x00D000, length = 0x001000 /* stack ari */
    RAMGS2 : origin = 0x00E000, length = 0x001000 /* stack ari */
    RAMGS3 : origin = 0x00F000, length = 0x001000
    RAMGS4 : origin = 0x010000, length = 0x003800
    .ebss : RUN = RAMGS3 | RAMGS4 , PAGE = 1,
    RUN_START(_RamEBssStart), RUN_SIZE(_RamEBssSize)

    コンソールのワーニング表示

    “../Task1(power)/Lib_PWM_CLA.cla”, line 686: warning: relocation from function
    “Cla1Task2” to symbol “_f_lpf” overflowed; the 17-bit relocated address
    0x1290c is too large to encode in the 16-bit unsigned field (type =
    ‘R_ABS16_OC’ (107), file = “./Task1(power)/Lib_PWM_CLA.obj”, offset =
    0x0000071e, section = “Cla1Prog:_Cla1Task2”)
    cla_data.dcdcv_in = f_lpf.batt_volt;

    #7034 返信
    Yojiro
    Yojiro
    従業員

    mickey.mouseさん

    特定ファイルのebssを対象セクションの先頭に配置するには、以下のように記述してみて頂けますでしょうか。

    SECTIONS {

    .ebss : { Filename.obj(.ebss)  *(.ebss) } RUN = RAMGS3 | RAMGS4 , PAGE = 1,
    RUN_START(_RamEBssStart), RUN_SIZE(_RamEBssSize)

    Filename.objは、変数f_lpfを定義しているオブジェクトファイルを指定してください

    ワーニングの内容では、CLAオブジェクトに対するワーニングが表示されているようです。CLAではアクセス可能なメモリは、LSx(0x8000 – 0xAFFF)に限定されており、GSxメモリにはアクセスすることができません。

    そのため、変数f_lpfをCPUとCLA双方でアクセスする場合は、RAMLS0~RAMLS5のいずれかに配置する必要があります。(下記例では、LS3に配置しています)

        cla_ebss : { Filename.obj(.ebss) } > RAMLS3

    などのように、特定ファイルのみのセクション指定が必要となります。

     

    以上、ご確認のほど、よろしくお願いします。

2件の投稿を表示中 - 1 - 2件目 (全2件中)