cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 4 MCU

New Contributor II

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 Likes
Reply
1 Solution
Esteemed Contributor

失礼しました。

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

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

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

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

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

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

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

moto

View solution in original post

0 Likes
Reply
5 Replies
Esteemed Contributor

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 Likes
Reply
New Contributor II

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 Likes
Reply
Esteemed Contributor

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 Likes
Reply
Esteemed Contributor

失礼しました。

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

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

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

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

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

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

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

moto

View solution in original post

0 Likes
Reply
New Contributor II

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

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.