CY8CKIT-145-40XXのRAM容量不足

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

cross mob
TaDa_1980266
Level 4
Level 4
50 replies posted 25 replies posted 10 replies posted

CY8CKIT-145-40XXでデバッグ用バッファ(256byte)を追加するとRAMオーバーフローでエラーが発生しました。

  prj.M0120:Build error: region RAM overlowed with stack

設定でRAM容量の増加は可能でしょうか?

(環境)
Hardware    : CY8CKIT-145-40XX PSoC 4000S Prototyping Kit
IC          : CY8C4045AZI-S413
Sofware     : PSoC Creator 4.2, CapSense
Base Project: CY8CKIT-145 Code Example.zip

0 件の賞賛
1 解決策
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

失礼しました。

今、改めてご質問を拝見したところ

> SRAM used: 4096 of 4096 bytes (100.0%). Stack: 1024 bytes. Heap: 128 bytes.

Stack: 1024 byte, Heap: 128 byte の段階で SRAM オーバーフローを起こされているので

既にプログラムのサイズがデバイスの限界を超えている可能性が高いかと思います。

敢えて、試すのであれば、Stack を少し小さくして状態が改善されるかをご確認いただき

難しいようでしたなら、やはりより容量の大きいデバイスをご検討いただくか、

プログラムの要求するリソースを少なくする等の方法をご検討いただく必要があるかと思います。

moto

元の投稿で解決策を見る

0 件の賞賛
5 返答(返信)
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

CY8CKIT-145-40XX に搭載されている CY8C4045AZI-S413 の SRAM は 4K Byte ありますので、

その範囲では拡張できるかと思います。

Workspace Explorer の <project名> > Design Wide Resource > System をダブルクリックして

表示されるcydwr の Stack Size (bytes) の右側の Value (現在は 0x0400) を選択して

上にある Heap Size と合計して、4K byte を超えない範囲で増やしてみてください。

000-system-config.JPG

moto

0 件の賞賛

Design Wide Resource > System の Stack Size を

0x800(2048)、0xC00(3072)に変更してみましたが、

状況変わらず、RAMオーバーエラー(prj.M0120)のままでした。

改めて現状環境をビルドすると下記が表示されていましたので、

私の環境ではSRAM容量4byteを既に使用済であり、1byteも増やせないという事でしょうか?。

Flash used: 22086 of 32768 bytes (67.4%).

SRAM used: 4096 of 4096 bytes (100.0%). Stack: 1024 bytes. Heap: 128 bytes.

0 件の賞賛
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

2048 + 3072 = 5120 > 4096 (SRAM容量) ですので、エラーになってしまいます。

実際にそれだけの容量が必要なアプリケーションを開発されておいでであれば

当該デバイスでは容量不足と考えます。

もし、実際の使用量が不明で当たりを付けられているということであれば、

例えば

HEAP 0x400 (1024 byte)

STACK 0xA00 (2560 byte)

等を試されてみては如何でしょうか?

※ 今実験してみましたところ、Heap:1024, Stack:2560 とした場合の

 SRAM使用量は 3872 で、 Heap + Stack よりも 288 byte 余分に必要でした。

000-stack-size.JPG

moto

0 件の賞賛
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

失礼しました。

今、改めてご質問を拝見したところ

> SRAM used: 4096 of 4096 bytes (100.0%). Stack: 1024 bytes. Heap: 128 bytes.

Stack: 1024 byte, Heap: 128 byte の段階で SRAM オーバーフローを起こされているので

既にプログラムのサイズがデバイスの限界を超えている可能性が高いかと思います。

敢えて、試すのであれば、Stack を少し小さくして状態が改善されるかをご確認いただき

難しいようでしたなら、やはりより容量の大きいデバイスをご検討いただくか、

プログラムの要求するリソースを少なくする等の方法をご検討いただく必要があるかと思います。

moto

0 件の賞賛

ありがとうございました。

Stackサイズを半分(512byte)にすれば、SRAM容量が空きましたので、

まずはこれで進めます。

Flash used: 22086 of 32768 bytes (67.4%).

SRAM used: 3584 of 4096 bytes (87.5%). Stack: 512 bytes. Heap: 128 bytes.