fk0, легенда (28.02.2014 15:24, просмотров: 761)
Есть компилятор, условно GCC (C30). Есть основная программа и бутлоадер. Всё хорошо, но... в силу того, что бутлоадер как бы продолжает функционировать после запуска программы, то ему нужна память (ОЗУ) для работы. Но в намного меньшем объёме, чем в момент работы непосредственно бутлоадера. Т.е. вариант просто отдать, например, 10% ОЗУ в бутлоадер не годится (в момент старта ему нужно куда больше, а после запуска программы полсотни байт достаточно. Имеется ввиду data и bss, динамической памятью и стеком бутлоадер уже не распоряжается после старта программы. Вижу два пути. Первый: для всех модулей функционирующих после старта программы вместо data и bss класть переменные, условно, в boot-data и boot-bss секции, которые объявить в линкер скриптах и бутлоадера и основной программы (компиляция раздельная) как отдельный регион (MEMORY). Но не понимаю, как можно объяснить компилятору, что так нужно поступить. Может кто подскажет. Второй путь: тоже отдельный регион но туда всё попадает по-умолчанию у бутлоадера. Но стараться не заводить больших переменных, большие объёмы памяти описывать отдельно и вручную класть в спец. секцию (пересекающуюся с data у основной программы).
[ZX]