Pingvin писал(а):
Alexies писал(а):
А писать первую страницу основной прошивки не по нулевому адресу, а в другое место, очевидно, нельзя, поскольку на этой странице не только таблица прерываний помещается, но ещё и куча кода с абсолютной адресацией.
Ну и что?
Прошивка то собирается спецом под конкретный адрес!
Я же выше показал, как это делается - 10 секунд на настройку проекта!
Хоть десять прошивок вряд и прыгай с одной на другую в произвольном порядке.
Нет тут проблем.
Да я понимаю, что так можно сделать.
У меня есть 2 варианта:
1) загрузчик, который может прошить любую
бинарную, не подготовленную заранее прошивку, но уязвим для пропадания питания на <0.1 сек.
2) загрузчик, для которого специальным образом нужно
компилировать прошивку, зато теоретически неуязвимый по питанию.
Кстати, там будет не 0.1, а гораздо меньше, ибо нужно записать только первые 8 байт (собственно, значение stack pointer-а и адрес reset handler), чтобы загрузчик работал. Всё остальное можно потерять.
А 0.1с - это время записи всей 2Kb страницы. Сужу по тому, что на запись 100 страниц уходит около 10с. через программатор.
Мне кажется очевидным, что первый загрузчик полезнее и универсальнее второго. Кроме того, если рассматривать плату "мозга", как самостоятельный коммерческий продукт, первый загрузчик смотрится хорошим дополнением. Например для тех, кто не хочет разрабатывать, но хочет просто повторить какое-то устройство на "мозге", не связанное даже с лазертагом.