По способу ответа на этот вопрос можно получить опыт или оценку существующего кода с аналогичной функциональностью. Однако на размер кода влияет ряд факторов:
- Целевая архитектура и набор инструкций.
- Использованы параметры компилятора и компилятора.
- Использование кода библиотеки.
- Возможность развития персонала.
- Требуемая функциональность.
« разработка Boot » ничего не говорит нам о требованиях или функциональности вашего процесса загрузки. Это будет иметь наибольшее влияние на размер кода. В качестве примера того, как цель может иметь значение, 8-битные цели обычно имеют большую плотность кода, но генерируют больше кода для арифметики для больших типов данных, в то время как, например, цель ARM, где вы можете выбирать между наборами команд Thumb и ARM, плотность кода значительно изменится.
Если у вас нет предыдущего опыта или репрезентативной кодовой базы для работы, то я предлагаю вам выполнить несколько экспериментов, чтобы получить некоторые метрики, с которыми вы можете работать:
Создайте пустое приложение - просто пустую функцию main (), если C или C ++; это даст вам основные фиксированные накладные расходы при запуске.
Если вы используете библиотечный код, это, вероятно, займет много места; добавьте фиктивные вызовы ко всем интерфейсам библиотеки, которые вы будете использовать в конечном приложении, и они сообщат вам, сколько кода будет занято кодом библиотеки (при условии, что код библиотеки не встроен).
В дальнейшем это будет зависеть от функциональности; Вы можете реализовать подмножество необходимых функций, а затем оценить, какая доля окончательной сборки может составить.
Что касается ваших предложений, помните, что переменные не занимают места в ПЗУ, хотя любые постоянные инициализаторы будут делать это. Как правило, загрузчик может использовать всю доступную оперативную память, поскольку при запуске приложения будет заново создана новая среда выполнения для себя, отбрасывая среду и переменные загрузчика.
Если вы предоставите подробную информацию о функциях и целях, вы сможете использовать опыт сообщества в оценке необходимых ресурсов. Например, я мог бы вам сказать ( из опыта ), что загрузчик с поддержкой программирования Flash, который загружается через UART с использованием протокола XMODEM на ARM7 с использованием набора инструкций ARM, поместится в 4 Кбайт, или что добавление поддержки загрузки через SD-карту может добавить еще 6 КБ, а USB Virtual Comm Port - еще 4 КБ. Однако ваши требования, возможно, уникальны, и вам придется как-то самостоятельно определять загрузку ресурса.