Если нет, то что обычно делают люди
когда у них заканчивается место для чипа?
Первое, что они сделают, - это оптимизируют свое приложение. Я не говорю о запуске оптимизатора компилятора (хотя это может быть частью решения), а о применении методов, таких как Дэн. Посмотрите на пространственную эффективность ваших структур данных и алгоритмов, часто есть компромисс между пространством и скоростью выполнения, но вам может не понадобиться самый быстрый алгоритм, но вам нужно экономить пространство.
Вам нужно знать свою цель и возможно ли это в первую очередь. На сколько ваше приложение превышает доступное пространство и насколько оно велико в настоящее время? Карта компоновщика или журнал сборки должны сообщить вам об этом. Если вы еще не обращались к оптимизации, я редко видел приложение, которое не могло бы по меньшей мере на 5% сбить относительно безболезненно, а при согласованных усилиях - даже больше, чем до использования оптимизатора.
Карта компоновщика также сообщит вам объем памяти, используемый каждой функцией / модулем, чтобы вы могли ориентировать свою оптимизацию там, где она будет иметь максимальный эффект. Вы также можете быть удивлены из файла карты тем, какой код библиотеки стал связанным, и вы можете спросить себя, почему и можно ли его удалить.
Использование оптимизации компилятора ограничивает возможность легкого использования отладчика, но вам не нужно оптимизировать каждый модуль. Поэтому, если вам нужно отладить, а также использовать оптимизацию компилятора, оптимизируйте все модули, кроме тех, которые вы отлаживаете в любой конкретный момент времени.
Имейте в виду, однако, что код, который работает, но имеет недостатки или использует неопределенное поведение языка, может изменить свое поведение (т.е. потерпеть неудачу) после оптимизации компилятора; оставляя вас с кодом, который не работает, но не может быть отлажен. Лучшая стратегия, позволяющая избежать этой ситуации, - это создать код с максимальным уровнем предупреждений, который позволяет ваш компилятор (и устанавливать предупреждения об ошибках), и исключить все предупреждения. Если возможно, используйте инструмент статического анализа, такой как Lint.
Если вы еще этого не сделали, самым быстрым и радикальным способом экономии в вашем случае будет компиляция в Thumb, а не в набор инструкций ARM.
Наконец, когда все остальное терпит неудачу, ваша часть является членом семейства устройств LPC2131 / 32/34/36/38, «самой большой» части, имеющей 512K Flash / 32K RAM, поэтому вы можете перейти на другую часть в та же семья и в значительной степени сохраняют совместимость программного обеспечения. Проверьте таблицу , если вам также нужна совместимость выводов.