- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
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
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
失礼しました。
今、改めてご質問を拝見したところ
> SRAM used: 4096 of 4096 bytes (100.0%). Stack: 1024 bytes. Heap: 128 bytes.
Stack: 1024 byte, Heap: 128 byte の段階で SRAM オーバーフローを起こされているので
既にプログラムのサイズがデバイスの限界を超えている可能性が高いかと思います。
敢えて、試すのであれば、Stack を少し小さくして状態が改善されるかをご確認いただき
難しいようでしたなら、やはりより容量の大きいデバイスをご検討いただくか、
プログラムの要求するリソースを少なくする等の方法をご検討いただく必要があるかと思います。
moto
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
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 を超えない範囲で増やしてみてください。
moto
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
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.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
2048 + 3072 = 5120 > 4096 (SRAM容量) ですので、エラーになってしまいます。
実際にそれだけの容量が必要なアプリケーションを開発されておいでであれば
当該デバイスでは容量不足と考えます。
もし、実際の使用量が不明で当たりを付けられているということであれば、
例えば
HEAP 0x400 (1024 byte)
STACK 0xA00 (2560 byte)
等を試されてみては如何でしょうか?
※ 今実験してみましたところ、Heap:1024, Stack:2560 とした場合の
SRAM使用量は 3872 で、 Heap + Stack よりも 288 byte 余分に必要でした。
moto
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
失礼しました。
今、改めてご質問を拝見したところ
> SRAM used: 4096 of 4096 bytes (100.0%). Stack: 1024 bytes. Heap: 128 bytes.
Stack: 1024 byte, Heap: 128 byte の段階で SRAM オーバーフローを起こされているので
既にプログラムのサイズがデバイスの限界を超えている可能性が高いかと思います。
敢えて、試すのであれば、Stack を少し小さくして状態が改善されるかをご確認いただき
難しいようでしたなら、やはりより容量の大きいデバイスをご検討いただくか、
プログラムの要求するリソースを少なくする等の方法をご検討いただく必要があるかと思います。
moto
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
ありがとうございました。
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.