[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
В контроллере сидит фрагмент, который умеет только загружать код с UART (I2C, CAN и т.п.) в RAM и передавать на него управление. А вот уж этот оверлей, выполняясь из RAM, может стереть всю или часть програмной памяти контроллера, загрузить через UART новую версию и прошить ее в контроллер.
Преимущества - резидентный загрузчик очень прост и занимает мало памяти внутри контроллера, внешние оверлеи могут быть разные (один для обновления рабочей программы, другой для обновления самого резидентного загрузчика, третий для перешивки, например, внешней EEPROM с I2C интерфейсом и т.п, четвертый для каких-либо тестовых целей и т.п.). Так как эти оверлеи хранятся в компьютере, то их легко изменять, исправлять в них ошибки, приспосабливать под конкретное железо (например, на LCD показывать прогресс загрузки).
И настройка на адреса таких оверлеев проста, т.к. они сразу помещаются в выходной файл линкера по тем же адресам, с которых и будут выполняться.
E-mail: info@telesys.ru