Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは

私はAURIX_TC377でコーディングしていますが、解決方法がわからない次のリンクエラーが発生しました。

 

ltc E112: 次の 4 つのセクションが見つかりません:
ltc I455:要件:空間mpe:vtc:linear内の1M(0x15eb80)バイトのRAM領域
ltc I456: セクション タイプ: 範囲制限 - 範囲 0x70000000-0x70032800
ltc I456: セクション タイプ: グループ制限 - 連続
ltc I457: bss_SEC (84546) (0x15cc20 バイト)
ltc I457: data_SEC (84547) (0x1f5c バイト)
ltc I457: zbss_SEC (84548) (0x2 バイト)
ltc I457: zdata_SEC (84549) (0x2 バイト)

 

新しいプラグインを統合した後、割り当てられたサイズが十分でなくなったようです。 しかし、それを再び適切に保つために何を変更すればよいかわかりません。

例えば。 blocksize(.lsl でのbss_SEC) =2、LTC I457:bss_SEC(84546)(0x15cc20バイト)

リンカスクリプトに慣れていないため、これら4つのセクションに関する問題を理解するのは困難です。 事前にご協力いただきありがとうございます

.lslを添付します そしてあなたの参考のために。

 

追伸。 .mapを確認してみました すべてゼロ0x00000000で割り振られたセクションを検索しましたが、何も見つかりませんでした。

リンカファイル(.lsl)と.mapで構成されるzipファイルを添付しました ファイル

 

0 件の賞賛
1 解決策
Translation_Bot
Community Manager
Community Manager
Community Manager

あなたの例には確かにエラーがあります。 overflow を blocksize と組み合わせて使用することはできません。 オーバーフローが発生しないため、これは機能しません。 サイズ値を使用して、最初のセクションの固定サイズを定義する必要があります。

例えば。

セクション "bss_SEC" (サイズ = 60K、属性 = RW、オーバーフロー = "BSS_DATA_OVERFLOW")

セクションのサイズが 60kB で、このサイズを超えると、オーバーフロー セクションが続行されます。

よろしくお願いいたします

ウルリッヒ・クロイド
タスキングツールのサポート

元の投稿で解決策を見る

0 件の賞賛
3 返答(返信)
Translation_Bot
Community Manager
Community Manager
Community Manager

LSL ファイルには、次のグループ定義が表示されます。

 

グループData_Default_GROUP(順序付き、連続、塗りつぶし、run_addr = mem:mpe:RegionBlock_1_DSPR_Core0)
{
グループBSS(順序付き、連続、塗りつぶし、整列= 16)
{
セクション "bss_SEC" (ブロックサイズ = 2、属性 = RW)
{
select "[.]bss*";
}
}

ここでは、.bssで始まるすべてのセクション 以前に定義された別のグループに割り当てられていない (リンカーは LSL ファイルの内容を上から下に処理します) は、bss_SEC という名前の出力セクションに割り当てられます。 ブロックサイズ値を使用しているため、サイズ制限はありません。 これは、セクションがすべての入力セクションに十分な大きさになるまで、セクションのサイズを 2 バイト ステップ増やすようにリンカーに指示するだけです。 出力セクションbss_SECの全体的なサイズが0x0015cc20、1 つのメモリ範囲に収まるには大きすぎます。 そのグループをRegionBlock_1_DSPR_Core0メモリ(run_addr = mem:mpe:RegionBlock_1_DSPR_Core0)に配置しようとすると、サイズは206848バイトしかありません。

メモリRegionBlock_1_DSPR_Core0
{
mau = 8;
type = ram;
size = 206848; /* 202 KiB */
map (dest=bus:local_bus, dest_offset = 0x70009000, size = 206848);
}

そのため、出力セクションを複数のメモリに分散する必要があります。 これは、overflow キーワードを使用する LSL 言語でサポートされています。 セクションを見てください:

分散出力セクションの OVERFLOW キーワード

LSL FAQには、次の場所が含まれています。

https://resources.tasking.com/tasking-whitepapers/linker-script-language-lsl-tips-tricks-for-tasking...

これに関する例を挙げてください。

よろしくお願いいたします

ウルリッヒ・クロイド
タスキングツールのサポート

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

どうもありがとうございます! 私は今、何が問題なのか理解しています。 リンカスクリプトを変更して、overflowキーワードを使用して出力セクションを分散しました。 残念ながら、エラーはまだ同じです。

下の写真でこれらの変更を行いました。 変更した.lslも添付しました

 

asafwat_0-1699624637630.png

 

なぜそれが反映されず、同じエラーが生成され続けるのか分かりますか? 多分私は間違った方法でキーワードを使用していますか?

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

あなたの例には確かにエラーがあります。 overflow を blocksize と組み合わせて使用することはできません。 オーバーフローが発生しないため、これは機能しません。 サイズ値を使用して、最初のセクションの固定サイズを定義する必要があります。

例えば。

セクション "bss_SEC" (サイズ = 60K、属性 = RW、オーバーフロー = "BSS_DATA_OVERFLOW")

セクションのサイズが 60kB で、このサイズを超えると、オーバーフロー セクションが続行されます。

よろしくお願いいたします

ウルリッヒ・クロイド
タスキングツールのサポート

0 件の賞賛