在 Keil 中提供更多堆
我正在研究MCB2300(带有LPC2378处理器)并使用keil uVision4。在我的程序中,我使用 malloc() 函数创建动态内存。由于所有动态内容都将存储在堆中,因此我需要确保分配所需的堆大小。我的启动文件 (LPC2300.s) 中堆的默认值是 0x00000800。在我的应用程序中,我正在读取图像(bmp 格式)并将像素值存储到矩阵中,并且该矩阵是根据输入图像的大小动态创建的。我可以在启动文件中设置的最大堆值是0x000072FF。对于这个堆值,我能够成功读取 44 x 33 的图像。超出此大小的内存不会被分配。我需要读取尺寸至少为 100 x 100 的图像。我的可用 RAM 为 32K
这些是编译代码后的输出值
程序大小:Code=30664 RO-data=1220 RW-data=132 ZI-data=37628
如何提供额外的堆?
是否可以将堆内存存储在为LPC2378提供的SD/MMC卡或外部存储体上。请帮我解决这个问题
I am working on MCB2300 (with LPC2378 processor)and using keil uVision4. In my program I am creating dynamic memory using malloc() function. As all dynamic contents will be stored in heap, I need to ensure that required heap size allocated. The default value for heap in my startup file (LPC2300.s) is 0x00000800. In my application I am reading an image (bmp format) and storing the pixel values into a matrix and the matrix is created dynamically with respect to size of input image. The maximum heap value I can set in my start up file is 0x000072FF. For this value of heap, I was able to read an image of 44 x 33 successfully. Beyond this size memory is not allocated. I need to read an image with dimensions of atleast 100 x 100. My available RAM is 32K
These are my output values after I compile my code
Program Size: Code=30664 RO-data=1220 RW-data=132 ZI-data=37628
How to provide additional heap?
Is it possible to store heap memory on SD/MMC card or external memory bank which has been provided for LPC2378. Please help me to solve this problem
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您的主板有外部 RAM 芯片,您可以将其用于堆。
但如果没有外部 RAM,则无法将堆大小增加到内部 RAM 大小以上。
您可以编写一些虚拟内存驱动程序的变体来使用 SD/MMC 卡作为存储设备。但由于您的设备没有 MMU(内存管理单元),因此您的驱动程序将极其复杂且极其缓慢。所以这不是一个选择。
另外,拥有 28K 的堆,您可以在那里保存 99x99 RGB24 BMP 图像。 99*99*3 = 29403。
If your board has external RAM chip, you can use it for heap.
But if there are no external RAM, there are no way to increase heap size above internal RAM size.
You can write some variant of virtual memory driver to use SD/MMC card as memory device. But since your device has no MMU (memory management unit), your driver will be extreme complex and extreme slow. So it is not an option.
Also, having 28K of heap, you can hold 99x99 RGB24 BMP image there. 99*99*3 = 29403.