[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: я обычно делаю не так...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Михаил Евстафьев 03 октября 2001 г. 20:16
В ответ на: Перемещаемый сегмент на Keil-51 отправлено _Владимир_ 03 октября 2001 г. 13:17

В контроллере сидит фрагмент, который умеет только загружать код с UART (I2C, CAN и т.п.) в RAM и передавать на него управление. А вот уж этот оверлей, выполняясь из RAM, может стереть всю или часть програмной памяти контроллера, загрузить через UART новую версию и прошить ее в контроллер.
Преимущества - резидентный загрузчик очень прост и занимает мало памяти внутри контроллера, внешние оверлеи могут быть разные (один для обновления рабочей программы, другой для обновления самого резидентного загрузчика, третий для перешивки, например, внешней EEPROM с I2C интерфейсом и т.п, четвертый для каких-либо тестовых целей и т.п.). Так как эти оверлеи хранятся в компьютере, то их легко изменять, исправлять в них ошибки, приспосабливать под конкретное железо (например, на LCD показывать прогресс загрузки).
И настройка на адреса таких оверлеев проста, т.к. они сразу помещаются в выходной файл линкера по тем же адресам, с которых и будут выполняться.


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru