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

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager


現在、4つのCPUを搭載したTC297チップを使用していますが、プログラム処理にはCPU0のみを使用しています。

今、私は問題に遭遇しました。 プログラムをコンパイルすると、エラーが発生します。
******************************************************************
エラー : xxx.elf セクション '.heap' はリージョン 'dsram1' に収まりません
エラー : 領域 'dsram1' が -1024 バイトでオーバーフローしました
収集2.exe:エラー ld が 1 つの終了ステータスを返しました

メイクファイル:148 ターゲット 'xxx.elf' のレシピ 失敗 しました
:*を作る**[xxx.elf] エラー 1
(xxxそれは私のプロジェクトの名前を意味します)
******************************************************************

1. したがって、これはプログラムのスタックオーバーフローが原因だと思います。 私の推測は正しいですか?
2. 私の推測が正しければ、SRAM面積を増やすことでこの問題を解決できますか?
    つまり、0x7000 000 を 0x601C 3000 に変更します

maps.png
3. SRAMのメモリ割り当てはどこで変更できますか? 構成ファイルを変更する必要がありますか、どこで見つけることができますか、それともIDEを使用して変更する必要がありますか?

私をサポートしてくれるエンジニアのおかげで、よろしくお願いします!

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

まず、 '.heap'セクションのサイズを確認し、コードのどの部分がヒープのメモリを使用しているかを特定する必要があります。 次に、リンカー スクリプト (.lsl) を変更して、ヒープのサイズを増やしたり、別のメモリ位置に割り当てたりできます。

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

ご回答ありがとうございます!

前提 条件:
コード全体でmalloc関数を使用したことはほとんどなく、以前はコードは正常に実行できました。
現在、他の同僚はいくつかのモジュールを変更しましたが、mallocを使用しない場合、新しいローカル変数とグローバル変数があります。

1.私の推測では、これはSRAMメモリに影響を与える可能性があり、完全にヒープが原因ではありません。 HighTecコンパイルによって促されたエラーは必ずしも正しいとは限らないと思います。 多分それはスタックスペースのせいですか?

2.だから私はあなたがヒープスペースを増やすことについて正しいと思います。 .lslがたくさんあるので、どの.lslファイルか教えていただけますか 私のプロジェクト内のファイル。内部のコンテンツを変更するにはどうすればよいですか? 例を挙げてください。

0 件の賞賛