ホーム › フォーラム › Texas Instruments › マイコン › C2000 › 再配置について
このトピックには1件の返信が含まれ、2人の参加者がいます。5 年、 4 ヶ月前に Yojiro さんが最後の更新を行いました。
-
投稿者投稿
-
再配置について
デバイス型番: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;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
などのように、特定ファイルのみのセクション指定が必要となります。
以上、ご確認のほど、よろしくお願いします。
-
投稿者投稿