2011-02-28 55 views
1

我正在使用MCB2300(使用LPC2378處理器)並使用keil uVision4。在我的程序中,我使用malloc()函數創建動態內存。由於所有動態內容都將存儲在堆中,因此我需要確保分配所需的堆大小。我的啓動文件(LPC2300.s)中堆的默認值是0x00000800。在我的應用程序中,我正在讀取圖像(bmp格式)並將像素值存儲到矩陣中,並根據輸入圖像的大小動態創建矩陣。我在啓動文件中可以設置的最大堆值是0x000072FF。對於堆的這個值,我能夠成功讀取44 x 33的圖像。超出此大小的內存不會被分配。我需要至少有100個×100的尺寸來讀取圖像我的可用RAM爲32K在Keil中提供更多堆

這是我的輸出值後,我編譯我的代碼

程序大小:代碼= 30664 RO-數據= 1220 RW-data = 132 ZI-data = 37628

如何提供額外的堆?

是否可以在SD/MMC卡或爲LPC2378提供的外部存儲庫上存儲堆內存。請幫我解決這個問題

回答

0

如果你的主板有外部RAM芯片,你可以用它來堆。 但是,如果沒有外部RAM,則無法增加內部RAM大小以上的堆大小。

您可以編寫一些虛擬內存驅動程序的變體,以使用SD/MMC卡作爲內存設備。但是由於您的設備沒有MMU(內存管理單元),因此您的驅動程序將非常複雜且極其緩慢。所以它不是一個選項。

此外,擁有28K的堆,您可以在那裏容納99x99 RGB24 BMP圖像。 99 * 99 * 3 = 29403.