vpv.vpv (02.03.2017 14:02, просмотров: 302) ответил maik-vs на И как обновляльщик обновит то место программы, откуда запускается обновляльщик? Как не обновит, кто вызовет обновляльщика?!
Обновляльщик прошивается аппаратным внешним программатором. В специальную верхнюю область памяти, которая огораживается соответствующими лок-битами от любых посягательств со стороны любых внутренних программ. Все, он нестираем и неперепрошиваем, он - навсегда. Далее, при каждом сбросе, обновляльщик проверяет какое-нибудь условие (у меня удержание определённых кнопок при сбросе/включении) и при выполнении - переходит на загрузку прошивки. Иначе проверяет наличие и целостность пользовательской программы, и при удовлетворении условия - передаёт ей управление, на адрес 0х0000. Разумеется, сбросив у себя всё и вся, т.к. программа должна думать, что она в процессоре одна и это она стартовала сразу после ресета. Если пользовательская программа отсутствует или испорчена, обновляльщик ругается ошибкой на индикаторе и больше ничего не делает.