Извините, я новичок в Гринхилл. Я использую MULTI 6.1.6, и мой язык выбора — C ++.
У меня проблема при попытке использовать симулятор для инициализации объекта класса размером более 1М с помощью new.
Class_Big* big_obj;
Class_Big = new Class_Big();
Class_Small* Small_obj;
Small_obj = new Class_Small();
если sizeOf (Class_Big)> 1 МБ, он просто никогда не вызывает конструктор класса, возвращает NULL и переходит к следующей инструкции (Class_Small * Small_obj;) и правильно создает следующий объект. Если я выделю некоторые переменные на Class_Big, чтобы сделать его размер < 1MB код работает нормально и объект создан.
Я добавил оба
MemoryPoolSize="0x200000"HeapSize="0x200000"
в мой XML-файл.
Еще одна ошибка, которую я получаю на этапе сборки. Если я использовал библиотеку, у меня большой класс:
intex: error: Not enough RAM for request.
intex: fatal: Integrate failed.
Error: build failed
Вы можете помочь с этим?
Спасибо
Чтобы указать размеры памяти для кучи и пула памяти, в графическом интерфейсе MULTI перейдите к файлу .int (его можно найти в раскрывающемся списке .gpj при его расширении) и дважды щелкните его, чтобы отредактировать. Затем щелкните правой кнопкой мыши внутри фиолетового поля и перейдите в «Редактировать». Перейдите на вкладку «Атрибуты», и вы сможете изменить размер пула памяти и кучи, чтобы они были больше.
В качестве альтернативы вы можете просто отредактировать файл .int в текстовом редакторе, но если вы хотите использовать графический интерфейс для настройки, выполните следующие действия.
Также из их руководства:
«Проверьте используемый файл .bsp. Память, объявленная с
Ключевые слова MinimumAddress / MaximumAddress должны соответствовать памяти вашей доски.
Если это не так, измените эти ключевые слова по мере необходимости. Если память
заявлено в файле .bsp соответствует доске, вы должны изменить ваш
приложение, чтобы использовать меньше памяти. «
Кроме того, проверьте default.ld, и вы можете установить значения для ограничений оперативной памяти там. Посмотрите на __INTEGRITY_RamLimit и другие значения там. Надеюсь это поможет!
С INTEGRITY вы полностью контролируете, сколько памяти используется для каждого раздела. Это статическая конфигурация. Все, куча кода, как вы его называете, выходит из этого. Так что, если у вас есть куча кода, автоматики и т. Д. В разделе, выделение памяти может произойти сбой, если вы попросите слишком много. Попробуйте увеличить размер.
Для первой части проблемы В основном я должен был изменить «VirtualHeapSize» в файле .ld компонента.
Во второй части все же попробуем разобраться.