Цитата(Atridies @ Dec 19 2013, 00:10)

..хотелось бы ..обновления ПО..чтобы получился надежный загрузчик..
1. Какой вариант загрузчика все-таки лучше ?..
сейчас для себя решил следующее:
1) заливка принимаеся и сохраняется в штатном режиме работы, как данные. заливку пишем во флэш как новую, следующую версию.
сама версия модульная. между модулями позднее связывание (на старте камня). ссылки могут быть
обязательными или не обязательными, с указанием минимальной требуемой версии модуля на который ссылается.
2) после апдэйта уходим на ресет. после ресета и проверки работоспособности ядра, происходит поиск свежей комбинации софта:
фулл + дифференциальные + инкрементальные версии модулей.
3) при записи во флэш определённого обёма версий - мы можем смело прореживать версии (инкрементальные между дифами), и удалять
старые не используемые версии.
что получается.
при старте ищем свежую версию (фулл+диф+инкр), проверяем ссылки, связываем ссылки, производим запуск.
если что то не так - имеем всегда одну или более предыдущих версий, на которую можем смело откатиться (инфа об успешном запуске сохраняется).
плюсы
а) каналы заливки - только от вашей фантазии и возможности железа-софта(работает весь ранее поставленный софт)
б) нет необходимости перезаливки всегда всего камня. скорость заливки максимально быстро получается.
в) в случае сбоя - всегда есть рабочая версия в памяти
минусы
а) отладка релизной версии модулей(не ядра) - на уровне азма(боевой вариант). дебажный так-же существует, (отдельно только данный модуль с
эмуляцией окружения) - и в таком варианте уже полная поддержка студией дебаг фич.
б) для модулей нельзя использовать статик адреса на память (хотя тут можно и зарезервировать бла-бла-бла, но сделал универсально).
в) при некоторых операциях взятия адреса в релиз версии, требуется привести адрес к базовому адресу загруженного
модуля(флэша), а не адреса компиляции.
Сообщение отредактировал kolobok0 - Dec 18 2013, 21:16