обеспечивая больше кучи в Кейле - PullRequest
1 голос
/ 28 февраля 2011

Я работаю на MCB2300 (с процессором LPC2378) и использую keil uVision4.В моей программе я создаю динамическую память с помощью функции malloc ().Поскольку все динамическое содержимое будет храниться в куче, я должен убедиться, что выделен необходимый размер кучи.Значение по умолчанию для кучи в моем файле запуска (LPC2300.s): 0x00000800 .В моем приложении я читаю изображение (формат BMP) и сохраняю значения пикселей в матрице, и матрица создается динамически в зависимости от размера входного изображения.Максимальное значение кучи, которое я могу установить в моем файле запуска, составляет 0x000072FF .При этом значении кучи я смог успешно прочитать изображение размером 44 x 33.За пределами этого размера памяти не выделяется.Мне нужно прочитать изображение с размерами не менее 100 x 100. Моя доступная оперативная память составляет 32K

Это мои выходные значения после компиляции кода

Размер программы: Код = 30664 RO-данные = 1220 RW-данные = 132 ZI-данные = 37628

Как обеспечить дополнительную кучу?

Можно ли хранить память кучи наКарта SD / MMC или внешний банк памяти, предоставленный для LPC2378.Пожалуйста, помогите мне решить эту проблему

1 Ответ

0 голосов
/ 27 декабря 2011

Если у вашей платы есть внешний чип памяти, вы можете использовать его для кучи. Но если нет внешней оперативной памяти, нет возможности увеличить размер кучи выше размера внутренней оперативной памяти.

Вы можете написать какой-нибудь вариант драйвера виртуальной памяти для использования карты памяти SD / MMC в качестве устройства памяти. Но так как ваше устройство не имеет MMU (блок управления памятью), ваш драйвер будет чрезвычайно сложным и крайне медленным. Так что это не вариант.

Кроме того, имея 28K кучи, вы можете хранить там изображение размером 99x99 RGB24 BMP. 99 * 99 * 3 = 29403.

...